vkd3d-shader/ir: Validate data types for SATURATE destination modifiers.

This commit is contained in:
Giovanni Mascellani
2025-06-09 21:28:19 +02:00
committed by Henri Verbeet
parent 318d7466a8
commit 1862c28b90
Notes: Henri Verbeet 2025-06-24 16:32:28 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1590

View File

@@ -9636,6 +9636,23 @@ static void vsir_validate_dst_param(struct validation_context *ctx,
validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_MODIFIERS, "Destination has invalid modifiers %#x.",
dst->modifiers);
if (dst->modifiers & VKD3DSPDM_SATURATE)
{
switch (dst->reg.data_type)
{
case VKD3D_DATA_FLOAT:
case VKD3D_DATA_DOUBLE:
case VKD3D_DATA_HALF:
break;
default:
validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_DATA_TYPE,
"Invalid data type %#x for destination with saturate modifier.", dst->reg.data_type);
break;
}
}
switch (dst->shift)
{
case 0: