vkd3d-shader/ir: Check that TEMP registers have consistent dimensions.

This commit is contained in:
Giovanni Mascellani
2024-01-10 11:27:03 +01:00
committed by Alexandre Julliard
parent fbd77486de
commit 7503429555
Notes: Alexandre Julliard 2024-01-15 23:01:43 +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/550
4 changed files with 65 additions and 9 deletions

View File

@@ -1360,18 +1360,21 @@ int vkd3d_shader_sm1_parser_create(const struct vkd3d_shader_compile_info *compi
sm1->p.shader_desc.flat_constant_count[i].external = get_external_constant_count(sm1, i);
if (!sm1->p.failed)
vsir_validate(&sm1->p);
ret = vsir_validate(&sm1->p);
if (sm1->p.failed)
if (sm1->p.failed && ret >= 0)
ret = VKD3D_ERROR_INVALID_SHADER;
if (ret < 0)
{
WARN("Failed to parse shader.\n");
shader_sm1_destroy(&sm1->p);
return VKD3D_ERROR_INVALID_SHADER;
return ret;
}
*parser = &sm1->p;
return VKD3D_OK;
return ret;
}
bool hlsl_sm1_register_from_semantic(struct hlsl_ctx *ctx, const struct hlsl_semantic *semantic,