The spec says "The maximum number of samplers in a shader visible
descriptor heap is 2048.". Let's make sure we follow this rule
in dozen.
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15884>
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) {