vkd3d: Create descriptor pools of geometrically increasing size.

Creating a pool of 16k descriptors is wasteful if an allocator only uses
a fraction of them, so start at 1k and double for each subsequent
allocation until 16k is reached.
This commit is contained in:
Conor McCarthy
2024-09-17 13:55:19 +10:00
committed by Henri Verbeet
parent e729ceeb1a
commit a43f6a6600
Notes: Henri Verbeet 2024-12-05 21:35:35 +01:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1088
4 changed files with 100 additions and 27 deletions

View File

@@ -2677,7 +2677,7 @@ static void vkd3d_time_domains_init(struct d3d12_device *device)
static void device_init_descriptor_pool_sizes(struct d3d12_device *device)
{
const struct vkd3d_device_descriptor_limits *limits = &device->vk_info.descriptor_limits;
unsigned int *pool_sizes = device->vk_pool_sizes;
unsigned int *pool_sizes = device->vk_pool_limits;
pool_sizes[VKD3D_SHADER_DESCRIPTOR_TYPE_CBV] = min(limits->uniform_buffer_max_descriptors,
VKD3D_MAX_VIRTUAL_HEAP_DESCRIPTORS_PER_TYPE);