mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
vkd3d-shader: Simplify DepthReplacing execution mode handling.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
c81e28c03a
commit
299f126f7a
@ -248,14 +248,6 @@ struct vkd3d_spirv_builder
|
|||||||
|
|
||||||
struct vkd3d_spirv_stream execution_mode_stream; /* execution mode instructions */
|
struct vkd3d_spirv_stream execution_mode_stream; /* execution mode instructions */
|
||||||
|
|
||||||
union
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
bool depth_replacing;
|
|
||||||
} fragment;
|
|
||||||
} u;
|
|
||||||
|
|
||||||
struct vkd3d_spirv_stream original_function_stream;
|
struct vkd3d_spirv_stream original_function_stream;
|
||||||
struct vkd3d_spirv_stream insertion_stream;
|
struct vkd3d_spirv_stream insertion_stream;
|
||||||
size_t insertion_location;
|
size_t insertion_location;
|
||||||
@ -332,13 +324,6 @@ static void vkd3d_spirv_set_execution_model(struct vkd3d_spirv_builder *builder,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vkd3d_spirv_enable_depth_replacing(struct vkd3d_spirv_builder *builder)
|
|
||||||
{
|
|
||||||
assert(builder->execution_model == SpvExecutionModelFragment);
|
|
||||||
|
|
||||||
builder->u.fragment.depth_replacing = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static uint32_t vkd3d_spirv_opcode_word(SpvOp op, unsigned int word_count)
|
static uint32_t vkd3d_spirv_opcode_word(SpvOp op, unsigned int word_count)
|
||||||
{
|
{
|
||||||
assert(!(op & ~SpvOpCodeMask));
|
assert(!(op & ~SpvOpCodeMask));
|
||||||
@ -1568,24 +1553,6 @@ static void vkd3d_spirv_builder_free(struct vkd3d_spirv_builder *builder)
|
|||||||
vkd3d_free(builder->iface);
|
vkd3d_free(builder->iface);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vkd3d_spirv_build_additional_execution_modes(struct vkd3d_spirv_builder *builder,
|
|
||||||
struct vkd3d_spirv_stream *stream)
|
|
||||||
{
|
|
||||||
const uint32_t function_id = builder->main_function_id;
|
|
||||||
|
|
||||||
switch (builder->execution_model)
|
|
||||||
{
|
|
||||||
case SpvExecutionModelFragment:
|
|
||||||
if (builder->u.fragment.depth_replacing)
|
|
||||||
vkd3d_spirv_build_op_execution_mode(stream, function_id,
|
|
||||||
SpvExecutionModeDepthReplacing, NULL, 0);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool vkd3d_spirv_compile_module(struct vkd3d_spirv_builder *builder,
|
static bool vkd3d_spirv_compile_module(struct vkd3d_spirv_builder *builder,
|
||||||
struct vkd3d_shader_code *spirv)
|
struct vkd3d_shader_code *spirv)
|
||||||
{
|
{
|
||||||
@ -1627,7 +1594,6 @@ static bool vkd3d_spirv_compile_module(struct vkd3d_spirv_builder *builder,
|
|||||||
|
|
||||||
/* execution mode declarations */
|
/* execution mode declarations */
|
||||||
vkd3d_spirv_stream_append(&stream, &builder->execution_mode_stream);
|
vkd3d_spirv_stream_append(&stream, &builder->execution_mode_stream);
|
||||||
vkd3d_spirv_build_additional_execution_modes(builder, &stream);
|
|
||||||
|
|
||||||
vkd3d_spirv_stream_append(&stream, &builder->debug_stream);
|
vkd3d_spirv_stream_append(&stream, &builder->debug_stream);
|
||||||
vkd3d_spirv_stream_append(&stream, &builder->annotation_stream);
|
vkd3d_spirv_stream_append(&stream, &builder->annotation_stream);
|
||||||
@ -2922,7 +2888,7 @@ static void vkd3d_dxbc_compiler_decorate_builtin(struct vkd3d_dxbc_compiler *com
|
|||||||
builtin = SpvBuiltInFragCoord;
|
builtin = SpvBuiltInFragCoord;
|
||||||
break;
|
break;
|
||||||
case SpvBuiltInFragDepth:
|
case SpvBuiltInFragDepth:
|
||||||
vkd3d_spirv_enable_depth_replacing(builder);
|
vkd3d_dxbc_compiler_emit_execution_mode(compiler, SpvExecutionModeDepthReplacing, NULL, 0);
|
||||||
break;
|
break;
|
||||||
case SpvBuiltInLayer:
|
case SpvBuiltInLayer:
|
||||||
vkd3d_spirv_enable_capability(builder, SpvCapabilityGeometry);
|
vkd3d_spirv_enable_capability(builder, SpvCapabilityGeometry);
|
||||||
|
Loading…
Reference in New Issue
Block a user