mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
vkd3d: Simplify d3d12_command_list_update_descriptor_table().
Signed-off-by: Józef Kucia <jkucia@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
41274e6285
commit
32aa45a86d
@ -2057,7 +2057,7 @@ static bool vk_write_descriptor_set_from_d3d12_desc(VkWriteDescriptorSet *vk_des
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void d3d12_command_list_update_descriptor_table(struct d3d12_command_list *list,
|
static void d3d12_command_list_update_descriptor_table(struct d3d12_command_list *list,
|
||||||
VkPipelineBindPoint bind_point, unsigned int index, D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor)
|
VkPipelineBindPoint bind_point, unsigned int index, struct d3d12_desc *base_descriptor)
|
||||||
{
|
{
|
||||||
struct vkd3d_pipeline_bindings *bindings = &list->pipeline_bindings[bind_point];
|
struct vkd3d_pipeline_bindings *bindings = &list->pipeline_bindings[bind_point];
|
||||||
struct VkWriteDescriptorSet descriptor_writes[24], *current_descriptor_write;
|
struct VkWriteDescriptorSet descriptor_writes[24], *current_descriptor_write;
|
||||||
@ -2072,19 +2072,7 @@ static void d3d12_command_list_update_descriptor_table(struct d3d12_command_list
|
|||||||
|
|
||||||
descriptor_table = root_signature_get_descriptor_table(root_signature, index);
|
descriptor_table = root_signature_get_descriptor_table(root_signature, index);
|
||||||
|
|
||||||
descriptor_count = 0;
|
descriptor = base_descriptor;
|
||||||
for (i = 0; i < descriptor_table->range_count; ++i)
|
|
||||||
descriptor_count += descriptor_table->ranges[i].descriptor_count;
|
|
||||||
|
|
||||||
if (!descriptor_count)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!(descriptor = d3d12_desc_from_gpu_handle(base_descriptor)))
|
|
||||||
{
|
|
||||||
WARN("Descriptor table %u is not set.\n", index);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
descriptor_count = 0;
|
descriptor_count = 0;
|
||||||
current_descriptor_write = descriptor_writes;
|
current_descriptor_write = descriptor_writes;
|
||||||
current_image_info = image_infos;
|
current_image_info = image_infos;
|
||||||
@ -2094,7 +2082,7 @@ static void d3d12_command_list_update_descriptor_table(struct d3d12_command_list
|
|||||||
|
|
||||||
if (range->offset != D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND)
|
if (range->offset != D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND)
|
||||||
{
|
{
|
||||||
descriptor = d3d12_desc_from_gpu_handle(base_descriptor) + range->offset;
|
descriptor = base_descriptor + range->offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = 0; j < range->descriptor_count; ++j, ++descriptor)
|
for (j = 0; j < range->descriptor_count; ++j, ++descriptor)
|
||||||
@ -2296,6 +2284,7 @@ static void d3d12_command_list_update_descriptors(struct d3d12_command_list *lis
|
|||||||
struct vkd3d_pipeline_bindings *bindings = &list->pipeline_bindings[bind_point];
|
struct vkd3d_pipeline_bindings *bindings = &list->pipeline_bindings[bind_point];
|
||||||
const struct vkd3d_vk_device_procs *vk_procs = &list->device->vk_procs;
|
const struct vkd3d_vk_device_procs *vk_procs = &list->device->vk_procs;
|
||||||
const struct d3d12_root_signature *rs = bindings->root_signature;
|
const struct d3d12_root_signature *rs = bindings->root_signature;
|
||||||
|
struct d3d12_desc *base_descriptor;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
if (!rs || !rs->pool_size_count || !rs->vk_set_layout)
|
if (!rs || !rs->pool_size_count || !rs->vk_set_layout)
|
||||||
@ -2307,7 +2296,12 @@ static void d3d12_command_list_update_descriptors(struct d3d12_command_list *lis
|
|||||||
for (i = 0; i < ARRAY_SIZE(bindings->descriptor_tables); ++i)
|
for (i = 0; i < ARRAY_SIZE(bindings->descriptor_tables); ++i)
|
||||||
{
|
{
|
||||||
if (bindings->descriptor_table_dirty_mask & ((uint64_t)1 << i))
|
if (bindings->descriptor_table_dirty_mask & ((uint64_t)1 << i))
|
||||||
d3d12_command_list_update_descriptor_table(list, bind_point, i, bindings->descriptor_tables[i]);
|
{
|
||||||
|
if ((base_descriptor = d3d12_desc_from_gpu_handle(bindings->descriptor_tables[i])))
|
||||||
|
d3d12_command_list_update_descriptor_table(list, bind_point, i, base_descriptor);
|
||||||
|
else
|
||||||
|
WARN("Descriptor table %u is not set.\n", i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
bindings->descriptor_table_dirty_mask = 0;
|
bindings->descriptor_table_dirty_mask = 0;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user