mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
vkd3d-shader/glsl: Implement VKD3DSGF_FORCE_EARLY_DEPTH_STENCIL.
This commit is contained in:
parent
9d82915629
commit
6a119b6946
Notes:
Henri Verbeet
2024-10-24 21:02:25 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1211
@ -2197,6 +2197,20 @@ static void shader_glsl_generate_output_declarations(struct vkd3d_glsl_generator
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void shader_glsl_handle_global_flags(struct vkd3d_string_buffer *buffer,
|
||||||
|
struct vkd3d_glsl_generator *gen, enum vsir_global_flags flags)
|
||||||
|
{
|
||||||
|
if (flags & VKD3DSGF_FORCE_EARLY_DEPTH_STENCIL)
|
||||||
|
{
|
||||||
|
vkd3d_string_buffer_printf(buffer, "layout(early_fragment_tests) in;\n");
|
||||||
|
flags &= ~VKD3DSGF_FORCE_EARLY_DEPTH_STENCIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags)
|
||||||
|
vkd3d_glsl_compiler_error(gen, VKD3D_SHADER_ERROR_GLSL_INTERNAL,
|
||||||
|
"Internal compiler error: Unhandled global flags %#"PRIx64".", (uint64_t)flags);
|
||||||
|
}
|
||||||
|
|
||||||
static void shader_glsl_generate_declarations(struct vkd3d_glsl_generator *gen)
|
static void shader_glsl_generate_declarations(struct vkd3d_glsl_generator *gen)
|
||||||
{
|
{
|
||||||
const struct vsir_program *program = gen->program;
|
const struct vsir_program *program = gen->program;
|
||||||
@ -2210,9 +2224,7 @@ static void shader_glsl_generate_declarations(struct vkd3d_glsl_generator *gen)
|
|||||||
group_size->x, group_size->y, group_size->z);
|
group_size->x, group_size->y, group_size->z);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (program->global_flags)
|
shader_glsl_handle_global_flags(buffer, gen, program->global_flags);
|
||||||
vkd3d_glsl_compiler_error(gen, VKD3D_SHADER_ERROR_GLSL_INTERNAL,
|
|
||||||
"Internal compiler error: Unhandled global flags %#"PRIx64".", (uint64_t)program->global_flags);
|
|
||||||
|
|
||||||
shader_glsl_generate_descriptor_declarations(gen);
|
shader_glsl_generate_descriptor_declarations(gen);
|
||||||
shader_glsl_generate_input_declarations(gen);
|
shader_glsl_generate_input_declarations(gen);
|
||||||
|
@ -36,30 +36,30 @@ depth greater equal
|
|||||||
|
|
||||||
clear rtv 0 0.0 0.0 0.0 0.0
|
clear rtv 0 0.0 0.0 0.0 0.0
|
||||||
clear dsv 0.0
|
clear dsv 0.0
|
||||||
todo(glsl) draw quad
|
draw quad
|
||||||
probe (0, 0) rgba(0, 0, 0, 0)
|
probe (0, 0) rgba(0, 0, 0, 0)
|
||||||
probe uav 1 (0) r(0.0)
|
probe uav 1 (0) r(0.0)
|
||||||
|
|
||||||
clear rtv 0 0.0 0.0 0.0 0.0
|
clear rtv 0 0.0 0.0 0.0 0.0
|
||||||
clear dsv 0.3
|
clear dsv 0.3
|
||||||
todo(glsl) draw quad
|
draw quad
|
||||||
probe (0, 0) rgba(1, 1, 1, 1)
|
probe (0, 0) rgba(1, 1, 1, 1)
|
||||||
probe uav 1 (0) r(1.0)
|
probe uav 1 (0) r(1.0)
|
||||||
|
|
||||||
clear rtv 0 0.0 0.0 0.0 0.0
|
clear rtv 0 0.0 0.0 0.0 0.0
|
||||||
clear dsv 0.5
|
clear dsv 0.5
|
||||||
todo(glsl) draw quad
|
draw quad
|
||||||
probe (0, 0) rgba(1, 1, 1, 1)
|
probe (0, 0) rgba(1, 1, 1, 1)
|
||||||
probe uav 1 (0) r(1.0)
|
probe uav 1 (0) r(1.0)
|
||||||
|
|
||||||
clear rtv 0 0.0 0.0 0.0 0.0
|
clear rtv 0 0.0 0.0 0.0 0.0
|
||||||
clear dsv 0.6
|
clear dsv 0.6
|
||||||
todo(glsl) draw quad
|
draw quad
|
||||||
probe (0, 0) rgba(1, 1, 1, 1)
|
probe (0, 0) rgba(1, 1, 1, 1)
|
||||||
probe uav 1 (0) r(1.0)
|
probe uav 1 (0) r(1.0)
|
||||||
|
|
||||||
clear rtv 0 0.0 0.0 0.0 0.0
|
clear rtv 0 0.0 0.0 0.0 0.0
|
||||||
clear dsv 1.0
|
clear dsv 1.0
|
||||||
todo(glsl) draw quad
|
draw quad
|
||||||
probe (0, 0) rgba(0, 0, 0, 0)
|
probe (0, 0) rgba(0, 0, 0, 0)
|
||||||
probe uav 1 (0) r(0.0)
|
probe uav 1 (0) r(0.0)
|
||||||
|
@ -26,6 +26,6 @@ depth greater equal
|
|||||||
|
|
||||||
clear rtv 0 0.0 0.0 0.0 0.0
|
clear rtv 0 0.0 0.0 0.0 0.0
|
||||||
clear dsv 0.5
|
clear dsv 0.5
|
||||||
todo(glsl) draw quad
|
draw quad
|
||||||
probe (0, 0) rgba(0, 0, 0, 0)
|
probe (0, 0) rgba(0, 0, 0, 0)
|
||||||
probe uav 1 (0) r(0.0)
|
probe uav 1 (0) r(0.0)
|
||||||
|
Loading…
Reference in New Issue
Block a user