nvk: Enable descriptor indexing

These values follow the already existing per-stage and descriptor set
limits.  If we change these to be similar to the reported values of the
proprietary driver, care must be taken as Turing has bigger limits for
uniform buffers than older generations.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>
This commit is contained in:
George Ouzounoudis 2023-01-09 19:51:47 +02:00 committed by Marge Bot
parent edb58c6660
commit ccfbd94891
2 changed files with 42 additions and 0 deletions

View file

@ -184,7 +184,29 @@ nvk_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
.subminor = 0,
.patch = 0,
},
.maxUpdateAfterBindDescriptorsInAllPools = UINT32_MAX,
.shaderUniformBufferArrayNonUniformIndexingNative = false,
.shaderSampledImageArrayNonUniformIndexingNative = pdev->info.cls_eng3d >= TURING_A,
.shaderStorageBufferArrayNonUniformIndexingNative = true,
.shaderStorageImageArrayNonUniformIndexingNative = pdev->info.cls_eng3d >= TURING_A,
.shaderInputAttachmentArrayNonUniformIndexingNative = false,
.robustBufferAccessUpdateAfterBind = true,
.quadDivergentImplicitLod = pdev->info.cls_eng3d >= TURING_A,
.maxPerStageDescriptorUpdateAfterBindSamplers = UINT32_MAX,
.maxPerStageDescriptorUpdateAfterBindUniformBuffers = UINT32_MAX,
.maxPerStageDescriptorUpdateAfterBindStorageBuffers = UINT32_MAX,
.maxPerStageDescriptorUpdateAfterBindSampledImages = UINT32_MAX,
.maxPerStageDescriptorUpdateAfterBindStorageImages = UINT32_MAX,
.maxPerStageDescriptorUpdateAfterBindInputAttachments = UINT32_MAX,
.maxPerStageUpdateAfterBindResources = UINT32_MAX,
.maxDescriptorSetUpdateAfterBindSamplers = UINT32_MAX,
.maxDescriptorSetUpdateAfterBindUniformBuffers = UINT32_MAX,
.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = NVK_MAX_DYNAMIC_BUFFERS / 2,
.maxDescriptorSetUpdateAfterBindStorageBuffers = UINT32_MAX,
.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = NVK_MAX_DYNAMIC_BUFFERS / 2,
.maxDescriptorSetUpdateAfterBindSampledImages = UINT32_MAX,
.maxDescriptorSetUpdateAfterBindStorageImages = UINT32_MAX,
.maxDescriptorSetUpdateAfterBindInputAttachments = UINT32_MAX,
.filterMinmaxSingleComponentFormats = true,
.filterMinmaxImageComponentMapping = true,
};
@ -320,6 +342,7 @@ nvk_get_device_extensions(const struct nv_device_info *dev,
.EXT_border_color_swizzle = true,
.EXT_buffer_device_address = true,
.EXT_custom_border_color = true,
.EXT_descriptor_indexing = true,
.EXT_extended_dynamic_state = true,
.EXT_extended_dynamic_state2 = true,
.EXT_extended_dynamic_state3 = true,
@ -412,8 +435,23 @@ nvk_get_device_features(const struct nv_device_info *dev,
.shaderInputAttachmentArrayDynamicIndexing = true,
.shaderUniformTexelBufferArrayDynamicIndexing = true,
.shaderStorageTexelBufferArrayDynamicIndexing = true,
.shaderUniformBufferArrayNonUniformIndexing = true,
.shaderSampledImageArrayNonUniformIndexing = true,
.shaderStorageBufferArrayNonUniformIndexing = true,
.shaderStorageImageArrayNonUniformIndexing = true,
.shaderInputAttachmentArrayNonUniformIndexing = true,
.shaderUniformTexelBufferArrayNonUniformIndexing = true,
.shaderStorageTexelBufferArrayNonUniformIndexing = true,
.descriptorBindingUniformBufferUpdateAfterBind = true,
.descriptorBindingSampledImageUpdateAfterBind = true,
.descriptorBindingStorageImageUpdateAfterBind = true,
.descriptorBindingStorageBufferUpdateAfterBind = true,
.descriptorBindingUniformTexelBufferUpdateAfterBind = true,
.descriptorBindingStorageTexelBufferUpdateAfterBind = true,
.descriptorBindingUpdateUnusedWhilePending = true,
.descriptorBindingPartiallyBound = true,
.descriptorBindingVariableDescriptorCount = true,
.runtimeDescriptorArray = true,
.imagelessFramebuffer = true,
.uniformBufferStandardLayout = true,
.separateDepthStencilLayouts = true,

View file

@ -67,6 +67,9 @@ nvk_physical_device_spirv_options(const struct nvk_physical_device *pdevice,
return (struct spirv_to_nir_options) {
.caps = {
.demote_to_helper_invocation = true,
.descriptor_indexing = true,
.descriptor_array_dynamic_indexing = true,
.descriptor_array_non_uniform_indexing = true,
.draw_parameters = true,
.geometry_streams = true,
.image_read_without_format = true,
@ -74,6 +77,7 @@ nvk_physical_device_spirv_options(const struct nvk_physical_device *pdevice,
.min_lod = true,
.multiview = true,
.physical_storage_buffer_address = true,
.runtime_descriptor_array = true,
.shader_viewport_index_layer = true,
.tessellation = true,
.transform_feedback = true,