[PATCH vkd3d 7/7] vkd3d-shader: Always use private vars for arrayed builtins.

Conor McCarthy cmccarthy at codeweavers.com
Wed Sep 22 23:55:47 CDT 2021


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 at 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);
 }
 
-- 
2.32.0




More information about the wine-devel mailing list