vkd3d-shader: Ignore the patch constant signature when it doesn't make sense.

This commit is contained in:
Giovanni Mascellani
2024-10-09 11:36:06 +02:00
committed by Henri Verbeet
parent cd74461d6d
commit 16efb7c0c6
Notes: Henri Verbeet 2024-10-09 13:19:13 +02:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1159
3 changed files with 32 additions and 0 deletions

View File

@@ -2914,6 +2914,21 @@ int tpf_parse(const struct vkd3d_shader_compile_info *compile_info, uint64_t con
if (program->shader_version.type == VKD3D_SHADER_TYPE_HULL)
uninvert_used_masks(&program->patch_constant_signature);
switch (program->shader_version.type)
{
case VKD3D_SHADER_TYPE_HULL:
case VKD3D_SHADER_TYPE_DOMAIN:
break;
default:
if (program->patch_constant_signature.element_count != 0)
{
WARN("The patch constant signature only makes sense for Hull and Domain Shaders, ignoring it.\n");
shader_signature_cleanup(&program->patch_constant_signature);
}
break;
}
if (!shader_sm4_parser_validate_signature(&sm4, &program->input_signature,
sm4.input_register_masks, "Input")
|| !shader_sm4_parser_validate_signature(&sm4, &program->output_signature,