Required where count == 1 in needs_private_io_variable(). Fixes invalid shader code being generated in Monster Hunter: World.
Based on a vkd3d-proton patch by Philip Rebohle.
Signed-off-by: Conor McCarthy cmccarthy@codeweavers.com --- libs/vkd3d-shader/spirv.c | 3 +++ tests/d3d12.c | 7 ------- 2 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index f7e2a857..939cac21 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -4376,6 +4376,9 @@ static bool needs_private_io_variable(const struct vkd3d_shader_signature *signa bool have_sysval = false; unsigned int i, count;
+ if (builtin && builtin->spirv_array_size) + return true; + if (*component_count == VKD3D_VEC4_SIZE) return false;
diff --git a/tests/d3d12.c b/tests/d3d12.c index 505d3200..24bb12c1 100644 --- a/tests/d3d12.c +++ b/tests/d3d12.c @@ -29332,12 +29332,6 @@ static void test_domain_shader_one_patch_constant_input(void) &IID_ID3D12PipelineState, (void **)&context.pipeline_state); ok(hr == S_OK, "Failed to create state, hr %#x.\n", hr);
- if (is_radv_device(context.device)) - { - skip("vkCreateGraphicsPipelines() crashes in RADV.\n"); - goto skip_tests; - } - so_buffer = create_default_buffer(context.device, 1024, D3D12_RESOURCE_FLAG_NONE, D3D12_RESOURCE_STATE_STREAM_OUT); sobv.BufferLocation = ID3D12Resource_GetGPUVirtualAddress(so_buffer); @@ -29367,7 +29361,6 @@ static void test_domain_shader_one_patch_constant_input(void) release_resource_readback(&rb);
ID3D12Resource_Release(so_buffer); -skip_tests: destroy_test_context(&context); }