From 05b58c9963f09b01f7a1809a81fd60760c57c2a5 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Fri, 8 Aug 2025 16:06:39 +0200 Subject: [PATCH] vkd3d-shader/glsl: Handle SV_INSTANCE_ID inputs. --- libs/vkd3d-shader/glsl.c | 7 +++++++ tests/hlsl/instance-id.shader_test | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libs/vkd3d-shader/glsl.c b/libs/vkd3d-shader/glsl.c index ae3d86dff..e33c2ebb8 100644 --- a/libs/vkd3d-shader/glsl.c +++ b/libs/vkd3d-shader/glsl.c @@ -1286,6 +1286,13 @@ static void shader_glsl_print_sysval_name(struct vkd3d_string_buffer *buffer, st vkd3d_string_buffer_printf(buffer, "intBitsToFloat(ivec4(gl_VertexID, 0, 0, 0))"); break; + case VKD3D_SHADER_SV_INSTANCE_ID: + if (version->type != VKD3D_SHADER_TYPE_VERTEX) + vkd3d_glsl_compiler_error(gen, VKD3D_SHADER_ERROR_GLSL_INTERNAL, + "Internal compiler error: Unhandled SV_INSTANCE_ID in shader type #%x.", version->type); + vkd3d_string_buffer_printf(buffer, "intBitsToFloat(ivec4(gl_InstanceID, 0, 0, 0))"); + break; + case VKD3D_SHADER_SV_IS_FRONT_FACE: if (version->type != VKD3D_SHADER_TYPE_PIXEL) vkd3d_glsl_compiler_error(gen, VKD3D_SHADER_ERROR_GLSL_INTERNAL, diff --git a/tests/hlsl/instance-id.shader_test b/tests/hlsl/instance-id.shader_test index 1fdad0043..f8178e68b 100644 --- a/tests/hlsl/instance-id.shader_test +++ b/tests/hlsl/instance-id.shader_test @@ -42,7 +42,7 @@ float4 main(vs_out i) : SV_Target } [test] -todo(glsl | msl) draw triangle list 3 4 +todo(msl) draw triangle list 3 4 probe rtv 0 (160, 120) rgba (0.0, 0.25, 0.0, 0.25) probe rtv 0 (480, 120) rgba (0.0, 0.5, 0.0, 0.5) probe rtv 0 (480, 360) rgba (0.0, 0.75, 0.0, 0.75)