mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/ir: Validate descriptor resource types in vsir programs.
This commit is contained in:
committed by
Henri Verbeet
parent
0da80c1f25
commit
01f47e00f2
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
@@ -8869,6 +8869,15 @@ static void vsir_validate_descriptors(struct validation_context *ctx)
|
|||||||
if (descriptor->type >= VKD3D_SHADER_DESCRIPTOR_TYPE_COUNT)
|
if (descriptor->type >= VKD3D_SHADER_DESCRIPTOR_TYPE_COUNT)
|
||||||
validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_DESCRIPTOR_TYPE,
|
validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_DESCRIPTOR_TYPE,
|
||||||
"Descriptor %u has invalid type %#x.", i, descriptor->type);
|
"Descriptor %u has invalid type %#x.", i, descriptor->type);
|
||||||
|
|
||||||
|
if (descriptor->resource_type >= VKD3D_SHADER_RESOURCE_TYPE_COUNT)
|
||||||
|
validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_RESOURCE_TYPE,
|
||||||
|
"Descriptor %u has invalid resource type %#x.", i, descriptor->resource_type);
|
||||||
|
else if ((descriptor->resource_type == VKD3D_SHADER_RESOURCE_NONE)
|
||||||
|
!= (descriptor->type == VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER))
|
||||||
|
validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_RESOURCE_TYPE,
|
||||||
|
"Descriptor %u has invalid resource type %#x for descriptor type %#x.",
|
||||||
|
i, descriptor->resource_type, descriptor->type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -62,6 +62,7 @@
|
|||||||
#define VKD3D_SHADER_COMPONENT_TYPE_COUNT (VKD3D_SHADER_COMPONENT_INT16 + 1)
|
#define VKD3D_SHADER_COMPONENT_TYPE_COUNT (VKD3D_SHADER_COMPONENT_INT16 + 1)
|
||||||
#define VKD3D_SHADER_MINIMUM_PRECISION_COUNT (VKD3D_SHADER_MINIMUM_PRECISION_UINT_16 + 1)
|
#define VKD3D_SHADER_MINIMUM_PRECISION_COUNT (VKD3D_SHADER_MINIMUM_PRECISION_UINT_16 + 1)
|
||||||
#define VKD3D_SHADER_DESCRIPTOR_TYPE_COUNT (VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER + 1)
|
#define VKD3D_SHADER_DESCRIPTOR_TYPE_COUNT (VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER + 1)
|
||||||
|
#define VKD3D_SHADER_RESOURCE_TYPE_COUNT (VKD3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY + 1)
|
||||||
|
|
||||||
#define VKD3D_MAX_STREAM_COUNT 4
|
#define VKD3D_MAX_STREAM_COUNT 4
|
||||||
|
|
||||||
@@ -259,6 +260,7 @@ enum vkd3d_shader_error
|
|||||||
VKD3D_SHADER_ERROR_VSIR_INVALID_SIGNATURE = 9022,
|
VKD3D_SHADER_ERROR_VSIR_INVALID_SIGNATURE = 9022,
|
||||||
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_WARNING_VSIR_DYNAMIC_DESCRIPTOR_ARRAY = 9300,
|
VKD3D_SHADER_WARNING_VSIR_DYNAMIC_DESCRIPTOR_ARRAY = 9300,
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user