diff --git a/src/microsoft/vulkan/dzn_descriptor_set.cpp b/src/microsoft/vulkan/dzn_descriptor_set.cpp index b98d51373d2..7cfba972930 100644 --- a/src/microsoft/vulkan/dzn_descriptor_set.cpp +++ b/src/microsoft/vulkan/dzn_descriptor_set.cpp @@ -1446,6 +1446,14 @@ dzn_descriptor_heap_pool_alloc_slots(dzn_descriptor_heap_pool *pool, 64 * 1024 : 4 * 1024; uint32_t alloc_step = ALIGN_POT(desc_count * pool->desc_sz, granularity); uint32_t heap_desc_count = MAX2(alloc_step / pool->desc_sz, 16); + + /* Maximum of 2048 samplers per heap when shader_visible is true. */ + if (pool->shader_visible && + pool->type == D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER) { + assert(desc_count <= 2048); + heap_desc_count = MIN2(heap_desc_count, 2048); + } + dzn_descriptor_heap_pool_entry *new_heap = NULL; list_for_each_entry_safe(dzn_descriptor_heap_pool_entry, entry, &pool->free_heaps, link) {