vkd3d: Create and write descriptor sets for root signature unbounded ranges.

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:
Conor McCarthy
2021-10-06 18:43:30 +02:00
committed by Alexandre Julliard
parent d3090699c5
commit 104626cc1d
6 changed files with 424 additions and 58 deletions

View File

@@ -3351,6 +3351,10 @@ static ULONG STDMETHODCALLTYPE d3d12_descriptor_heap_Release(ID3D12DescriptorHea
{
d3d12_desc_destroy(&descriptors[i], device);
}
if (device->vk_info.EXT_descriptor_indexing && !vkd3d_gpu_descriptor_allocator_unregister_range(
&device->gpu_descriptor_allocator, descriptors))
ERR("Failed to unregister descriptor range.\n");
break;
}
@@ -3547,6 +3551,11 @@ HRESULT d3d12_descriptor_heap_create(struct d3d12_device *device,
memset(object->descriptors, 0, descriptor_size * desc->NumDescriptors);
if ((desc->Type == D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV || desc->Type == D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER)
&& device->vk_info.EXT_descriptor_indexing && !vkd3d_gpu_descriptor_allocator_register_range(
&device->gpu_descriptor_allocator, (struct d3d12_desc *)object->descriptors, desc->NumDescriptors))
ERR("Failed to register descriptor range.\n");
TRACE("Created descriptor heap %p.\n", object);
*descriptor_heap = object;