vkd3d-shader/ir: Check for vocp usage during IR normalization.

The hull shader barrier used for this was broken by I/O normalization, since
vocp is no longer exposed to the spirv backend.

Restore this barrier by checking for vocp during normalization instead.
This commit is contained in:
Zebediah Figura
2023-07-16 23:34:04 -05:00
committed by Alexandre Julliard
parent 8b42f523f2
commit b73d2c978d
Notes: Alexandre Julliard 2023-11-06 23:17:08 +01:00
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/421
3 changed files with 10 additions and 3 deletions

View File

@@ -6146,9 +6146,6 @@ static void spirv_compiler_emit_dcl_input(struct spirv_compiler *compiler,
spirv_compiler_emit_input(compiler, dst);
else
spirv_compiler_emit_input_register(compiler, dst);
if (dst->reg.type == VKD3DSPR_OUTCONTROLPOINT)
compiler->use_vocp = true;
}
static void spirv_compiler_emit_dcl_input_sysval(struct spirv_compiler *compiler,
@@ -9722,6 +9719,7 @@ static int spirv_compiler_generate_spirv(struct spirv_compiler *compiler,
memset(&shader_desc->input_signature, 0, sizeof(shader_desc->input_signature));
memset(&shader_desc->output_signature, 0, sizeof(shader_desc->output_signature));
memset(&shader_desc->patch_constant_signature, 0, sizeof(shader_desc->patch_constant_signature));
compiler->use_vocp = parser->shader_desc.use_vocp;
if (compiler->shader_type != VKD3D_SHADER_TYPE_HULL)
spirv_compiler_emit_shader_signature_outputs(compiler);