vkd3d-shader/glsl: Implement support for the VKD3DSPR_DEPTHOUT register.

This commit is contained in:
Henri Verbeet 2024-05-02 00:49:35 +02:00
parent 459f141e81
commit 929010ffd7
Notes: Henri Verbeet 2024-09-26 01:25:28 +02:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1113
2 changed files with 12 additions and 4 deletions

View File

@ -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)
{

View File

@ -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)