diff --git a/src/nouveau/vulkan/nvk_physical_device.c b/src/nouveau/vulkan/nvk_physical_device.c index bd9a8252d75..860e351a955 100644 --- a/src/nouveau/vulkan/nvk_physical_device.c +++ b/src/nouveau/vulkan/nvk_physical_device.c @@ -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, diff --git a/src/nouveau/vulkan/nvk_shader.c b/src/nouveau/vulkan/nvk_shader.c index a9776e09f47..c1902752ea4 100644 --- a/src/nouveau/vulkan/nvk_shader.c +++ b/src/nouveau/vulkan/nvk_shader.c @@ -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,