[PATCH vkd3d 06/11] vkd3d-shader: Use full write mask for variables for array built-ins.

Philip Rebohle philip.rebohle at tu-dortmund.de
Wed Oct 16 14:55:40 CDT 2019


Private variables are always vec4, so using a sparse write mask here
will lead to invalid code being generated when accessing the variable.

This is needed for the following commits.

Signed-off-by: Philip Rebohle <philip.rebohle at tu-dortmund.de>
---
 libs/vkd3d-shader/spirv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c
index 76df8fc..74b6e52 100644
--- a/libs/vkd3d-shader/spirv.c
+++ b/libs/vkd3d-shader/spirv.c
@@ -4320,7 +4320,7 @@ static void vkd3d_dxbc_compiler_emit_output(struct vkd3d_dxbc_compiler *compiler
     storage_class = SpvStorageClassOutput;
 
     if ((use_private_variable = builtin && builtin->spirv_array_size))
-        write_mask = dst->write_mask;
+        write_mask = VKD3DSP_WRITEMASK_ALL;
     else if (get_shader_output_swizzle(compiler, signature_element->register_index) != VKD3D_NO_SWIZZLE
             || needs_private_io_variable(shader_signature, signature_element->register_index,
             builtin, &output_component_count, &write_mask)
-- 
2.23.0




More information about the wine-devel mailing list