From cfe51e84dfedc23f849288a23f991984a8ad2a1f Mon Sep 17 00:00:00 2001 From: Elizabeth Figura Date: Mon, 10 Mar 2025 17:28:01 -0500 Subject: [PATCH] vkd3d-shader/glsl: Wrap gl_GlobalInvocationID in an uvec4. Callers to shader_glsl_print_register_name() expect this. In particular, this fixes translation of instructions such as store_uav_typed u0.xyzw, vThreadID.xyxx, l(2.00000000e+00) which is currently translated as the invalid imageStore(cs_image_0, ivec4(gl_GlobalInvocationID).xy, vec4(uintBitsToFloat(0x40000000u), 0, 0, 0)); --- libs/vkd3d-shader/glsl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/vkd3d-shader/glsl.c b/libs/vkd3d-shader/glsl.c index dc109ad8f..0386615c2 100644 --- a/libs/vkd3d-shader/glsl.c +++ b/libs/vkd3d-shader/glsl.c @@ -280,7 +280,7 @@ static void shader_glsl_print_register_name(struct vkd3d_string_buffer *buffer, break; case VKD3DSPR_THREADID: - vkd3d_string_buffer_printf(buffer, "gl_GlobalInvocationID"); + vkd3d_string_buffer_printf(buffer, "uvec4(gl_GlobalInvocationID, 0)"); break; case VKD3DSPR_IDXTEMP: