vkd3d-shader/ir: Do not enfore DCL_TEMPS count for hull shaders.

Hull shaders have a different temps count for each phase, and the
parser only reports the count for the patch constant phase.
In order to properly check for temps count on hull shaders, we first
need to decode its phases.
This commit is contained in:
Giovanni Mascellani 2023-11-06 13:49:35 +01:00 committed by Alexandre Julliard
parent ca3f594ae3
commit 0a7e200f89
Notes: Alexandre Julliard 2023-11-07 22:40:09 +01:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/444

View File

@ -1631,7 +1631,8 @@ static void vsir_validate_instruction(struct validation_context *ctx)
if (ctx->dcl_temps_found && ctx->parser->shader_version.type != VKD3D_SHADER_TYPE_HULL)
validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_DUPLICATE_DCL_TEMPS, "Duplicate DCL_TEMPS instruction.");
ctx->dcl_temps_found = true;
if (instruction->declaration.count != ctx->parser->shader_desc.temp_count)
if (instruction->declaration.count != ctx->parser->shader_desc.temp_count &&
ctx->parser->shader_version.type != VKD3D_SHADER_TYPE_HULL)
validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_DCL_TEMPS, "Invalid DCL_TEMPS count %u, expected %u.",
instruction->declaration.count, ctx->parser->shader_desc.temp_count);
break;