mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-12-15 08:03:30 -08:00
vkd3d-shader/ir: Validate register id and index for RESOURCE registers.
This commit is contained in:
committed by
Henri Verbeet
parent
3e44bd4e5b
commit
10d8760134
Notes:
Henri Verbeet
2025-04-02 19:43:45 +02:00
Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1437
@@ -1127,7 +1127,7 @@ static void vkd3d_shader_scan_combined_sampler_declaration(
|
||||
&semantic->resource.range, semantic->resource_type, VKD3D_SHADER_RESOURCE_DATA_FLOAT);
|
||||
}
|
||||
|
||||
static const struct vkd3d_shader_descriptor_info1 *find_descriptor(
|
||||
const struct vkd3d_shader_descriptor_info1 *vkd3d_shader_find_descriptor(
|
||||
const struct vkd3d_shader_scan_descriptor_info1 *info,
|
||||
enum vkd3d_shader_descriptor_type type, unsigned int register_id)
|
||||
{
|
||||
@@ -1181,11 +1181,11 @@ static void vkd3d_shader_scan_combined_sampler_usage(struct vkd3d_shader_scan_co
|
||||
if (dynamic_resource || dynamic_sampler)
|
||||
return;
|
||||
|
||||
if ((d = find_descriptor(context->scan_descriptor_info,
|
||||
if ((d = vkd3d_shader_find_descriptor(context->scan_descriptor_info,
|
||||
VKD3D_SHADER_DESCRIPTOR_TYPE_SRV, resource->idx[0].offset)))
|
||||
resource_space = d->register_space;
|
||||
|
||||
if (sampler && (d = find_descriptor(context->scan_descriptor_info,
|
||||
if (sampler && (d = vkd3d_shader_find_descriptor(context->scan_descriptor_info,
|
||||
VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER, sampler->idx[0].offset)))
|
||||
sampler_space = d->register_space;
|
||||
}
|
||||
@@ -1606,6 +1606,9 @@ static int vsir_program_scan(struct vsir_program *program, const struct vkd3d_sh
|
||||
vkd3d_shader_scan_context_init(&context, &program->shader_version, compile_info,
|
||||
add_descriptor_info ? &program->descriptors : NULL, combined_sampler_info, message_context);
|
||||
|
||||
if (add_descriptor_info)
|
||||
program->has_descriptor_info = true;
|
||||
|
||||
if (TRACE_ON())
|
||||
vsir_program_trace(program);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user