vkd3d-shader/ir: Validate descriptor counts in vsir programs.

This commit is contained in:
Giovanni Mascellani
2025-03-28 10:58:16 +01:00
committed by Henri Verbeet
parent be94a37e23
commit 922cb47a4b
Notes: Henri Verbeet 2025-04-16 16:52:04 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1447
2 changed files with 7 additions and 0 deletions

View File

@@ -8887,6 +8887,12 @@ static void vsir_validate_descriptors(struct validation_context *ctx)
validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_DATA_TYPE, validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_DATA_TYPE,
"Descriptor %u has invalid resource data type %#x for descriptor type %#x.", "Descriptor %u has invalid resource data type %#x for descriptor type %#x.",
i, descriptor->resource_data_type, descriptor->type); i, descriptor->resource_data_type, descriptor->type);
if (!descriptor->count || (descriptor->count > UINT_MAX - descriptor->register_index
&& descriptor->count != UINT_MAX))
validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_DESCRIPTOR_COUNT,
"Descriptor %u has invalid descriptor count %u starting at index %u.",
i, descriptor->count, descriptor->register_index);
} }
} }

View File

@@ -261,6 +261,7 @@ enum vkd3d_shader_error
VKD3D_SHADER_ERROR_VSIR_INVALID_RANGE = 9023, VKD3D_SHADER_ERROR_VSIR_INVALID_RANGE = 9023,
VKD3D_SHADER_ERROR_VSIR_INVALID_DESCRIPTOR_TYPE = 9024, VKD3D_SHADER_ERROR_VSIR_INVALID_DESCRIPTOR_TYPE = 9024,
VKD3D_SHADER_ERROR_VSIR_INVALID_RESOURCE_TYPE = 9025, VKD3D_SHADER_ERROR_VSIR_INVALID_RESOURCE_TYPE = 9025,
VKD3D_SHADER_ERROR_VSIR_INVALID_DESCRIPTOR_COUNT = 9026,
VKD3D_SHADER_WARNING_VSIR_DYNAMIC_DESCRIPTOR_ARRAY = 9300, VKD3D_SHADER_WARNING_VSIR_DYNAMIC_DESCRIPTOR_ARRAY = 9300,