diff --git a/libs/vkd3d-shader/glsl.c b/libs/vkd3d-shader/glsl.c index 634ec24a..ec52e2d1 100644 --- a/libs/vkd3d-shader/glsl.c +++ b/libs/vkd3d-shader/glsl.c @@ -137,6 +137,14 @@ static void shader_glsl_print_register_name(struct vkd3d_string_buffer *buffer, vkd3d_string_buffer_printf(buffer, "%s_out[%u]", gen->prefix, reg->idx[0].offset); break; + case VKD3DSPR_DEPTHOUT: + if (gen->program->shader_version.type != VKD3D_SHADER_TYPE_PIXEL) + vkd3d_glsl_compiler_error(gen, VKD3D_SHADER_ERROR_GLSL_INTERNAL, + "Internal compiler error: Unhandled depth output in shader type #%x.", + gen->program->shader_version.type); + vkd3d_string_buffer_printf(buffer, "gl_FragDepth"); + break; + case VKD3DSPR_IMMCONST: switch (reg->dimension) { diff --git a/tests/hlsl/depth-out.shader_test b/tests/hlsl/depth-out.shader_test index 7841f735..9f99ff78 100644 --- a/tests/hlsl/depth-out.shader_test +++ b/tests/hlsl/depth-out.shader_test @@ -16,22 +16,22 @@ float main() : SV_Depth uniform 0 float 0.0 clear dsv 1.0 depth less -todo(glsl) draw quad +draw quad probe dsv (0,0) r (0.0) uniform 0 float 0.75 clear dsv 1.0 -todo(glsl) draw quad +draw quad probe dsv (0,0) r (0.75) clear dsv 0.5 depth greater -todo(glsl) draw quad +draw quad probe dsv (0,0) r (0.75) depth less clear dsv 0.5 -todo(glsl) draw quad +draw quad probe dsv (0,0) r (0.5)