mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
vkd3d-shader: Find bindings 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
d11510f02e
commit
2924a481a7
@ -2468,6 +2468,7 @@ static struct vkd3d_shader_descriptor_binding vkd3d_dxbc_compiler_get_descriptor
|
|||||||
bool is_uav_counter)
|
bool is_uav_counter)
|
||||||
{
|
{
|
||||||
const struct vkd3d_shader_interface_info *shader_interface = &compiler->shader_interface;
|
const struct vkd3d_shader_interface_info *shader_interface = &compiler->shader_interface;
|
||||||
|
unsigned int register_last = (range->last == ~0u) ? range->first : range->last;
|
||||||
enum vkd3d_shader_descriptor_type descriptor_type;
|
enum vkd3d_shader_descriptor_type descriptor_type;
|
||||||
enum vkd3d_shader_binding_flag resource_type_flag;
|
enum vkd3d_shader_binding_flag resource_type_flag;
|
||||||
struct vkd3d_shader_descriptor_binding binding;
|
struct vkd3d_shader_descriptor_binding binding;
|
||||||
@ -2543,18 +2544,10 @@ static struct vkd3d_shader_descriptor_binding vkd3d_dxbc_compiler_get_descriptor
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (current->type != descriptor_type || current->register_space != range->space
|
if (current->type != descriptor_type || current->register_space != range->space
|
||||||
|| current->register_index != range->first)
|
|| current->register_index > range->first
|
||||||
|
|| current->binding.count <= register_last - current->register_index)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (current->binding.count != 1)
|
|
||||||
{
|
|
||||||
FIXME("Descriptor arrays are not supported.\n");
|
|
||||||
vkd3d_dxbc_compiler_error(compiler, VKD3D_SHADER_ERROR_SPV_INVALID_DESCRIPTOR_BINDING,
|
|
||||||
"Descriptor binding for type %#x, space %u, register %u, "
|
|
||||||
"shader type %#x has unsupported ‘count’ %u.",
|
|
||||||
descriptor_type, range->space, range->first, compiler->shader_type, current->binding.count);
|
|
||||||
}
|
|
||||||
|
|
||||||
return current->binding;
|
return current->binding;
|
||||||
}
|
}
|
||||||
if (shader_interface->binding_count)
|
if (shader_interface->binding_count)
|
||||||
|
@ -34624,6 +34624,7 @@ static void test_resource_arrays(void)
|
|||||||
get_cpu_descriptor_handle(&context, heap, ARRAY_SIZE(input_buffers) + i));
|
get_cpu_descriptor_handle(&context, heap, ARRAY_SIZE(input_buffers) + i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
todo
|
||||||
context.pipeline_state = create_compute_pipeline_state(device, context.root_signature,
|
context.pipeline_state = create_compute_pipeline_state(device, context.root_signature,
|
||||||
shader_bytecode(cs_code, sizeof(cs_code)));
|
shader_bytecode(cs_code, sizeof(cs_code)));
|
||||||
if (!context.pipeline_state)
|
if (!context.pipeline_state)
|
||||||
|
Reference in New Issue
Block a user