libs/vkd3d: Add support for OffsetInDescriptorsFromTableStart.

This commit is contained in:
Józef Kucia
2017-08-31 11:21:34 +02:00
parent 39a2c0e5f1
commit 62bd4e6e63
4 changed files with 16 additions and 9 deletions

View File

@@ -2543,6 +2543,13 @@ static void d3d12_command_list_set_descriptor_table(struct d3d12_command_list *l
for (i = 0; i < descriptor_table->range_count; ++i)
{
range = &descriptor_table->ranges[i];
if (range->offset != D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND)
{
descriptor = (struct d3d12_desc *)(intptr_t)base_descriptor.ptr;
descriptor += range->offset;
}
for (j = 0; j < range->descriptor_count; ++j, ++descriptor)
{
if (!vk_write_descriptor_set_from_d3d12_desc(current_descriptor_write,

View File

@@ -309,8 +309,6 @@ static bool vk_binding_from_d3d12_descriptor_range(struct VkDescriptorSetLayoutB
FIXME("Unhandled register space %u.\n", descriptor_range->RegisterSpace);
return false;
}
if (descriptor_range->OffsetInDescriptorsFromTableStart != D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND)
FIXME("Unhandled offset %#x.\n", descriptor_range->OffsetInDescriptorsFromTableStart);
binding_desc->stageFlags = stage_flags_from_visibility(shader_visibility);
binding_desc->pImmutableSamplers = NULL;
@@ -687,8 +685,9 @@ static HRESULT d3d12_root_signature_init_root_descriptor_tables(struct d3d12_roo
++cur_binding;
}
table->ranges[j].binding = vk_binding;
table->ranges[j].offset = descriptor_range->OffsetInDescriptorsFromTableStart;
table->ranges[j].descriptor_count = descriptor_range->NumDescriptors;
table->ranges[j].binding = vk_binding;
}
}

View File

@@ -275,8 +275,9 @@ struct d3d12_query_heap *unsafe_impl_from_ID3D12QueryHeap(ID3D12QueryHeap *iface
struct d3d12_root_descriptor_table_range
{
uint32_t binding;
unsigned int offset;
unsigned int descriptor_count;
uint32_t binding;
};
struct d3d12_root_descriptor_table