mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
vkd3d-shader: Get descriptor info for descriptor arrays.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
committed by
Alexandre Julliard
parent
85eff9373d
commit
a97d090010
@@ -1137,7 +1137,10 @@ struct vkd3d_shader_descriptor_info
|
|||||||
* \ref vkd3d_shader_descriptor_info_flag.
|
* \ref vkd3d_shader_descriptor_info_flag.
|
||||||
*/
|
*/
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
/** Size of this descriptor array, or 1 if a single descriptor. */
|
/**
|
||||||
|
* Size of this descriptor array, or 1 if a single descriptor.
|
||||||
|
* For an unbounded array this value is ~0u.
|
||||||
|
*/
|
||||||
unsigned int count;
|
unsigned int count;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -5541,13 +5541,15 @@ static const struct vkd3d_shader_descriptor_info *vkd3d_dxbc_compiler_get_descri
|
|||||||
const struct vkd3d_shader_register_range *range)
|
const struct vkd3d_shader_register_range *range)
|
||||||
{
|
{
|
||||||
const struct vkd3d_shader_scan_descriptor_info *descriptor_info = compiler->scan_descriptor_info;
|
const struct vkd3d_shader_scan_descriptor_info *descriptor_info = compiler->scan_descriptor_info;
|
||||||
|
unsigned int register_last = (range->last == ~0u) ? range->first : range->last;
|
||||||
const struct vkd3d_shader_descriptor_info *d;
|
const struct vkd3d_shader_descriptor_info *d;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
for (i = 0; i < descriptor_info->descriptor_count; ++i)
|
for (i = 0; i < descriptor_info->descriptor_count; ++i)
|
||||||
{
|
{
|
||||||
d = &descriptor_info->descriptors[i];
|
d = &descriptor_info->descriptors[i];
|
||||||
if (d->type == type && d->register_space == range->space && d->register_index == range->first)
|
if (d->type == type && d->register_space == range->space && d->register_index <= range->first
|
||||||
|
&& (d->count == ~0u || d->count > register_last - d->register_index))
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -601,7 +601,7 @@ static bool vkd3d_shader_scan_add_descriptor(struct vkd3d_shader_scan_context *c
|
|||||||
d->resource_type = resource_type;
|
d->resource_type = resource_type;
|
||||||
d->resource_data_type = resource_data_type;
|
d->resource_data_type = resource_data_type;
|
||||||
d->flags = flags;
|
d->flags = flags;
|
||||||
d->count = 1;
|
d->count = (range->last == ~0u) ? ~0u : range->last - range->first + 1;
|
||||||
++info->descriptor_count;
|
++info->descriptor_count;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
Reference in New Issue
Block a user