mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/ir: Validate descriptor counts in vsir programs.
This commit is contained in:
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
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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,
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user