[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