panvk: advertise descriptor indexing on valhall

Our existing descriptor implementation already supports
update-after-bind on both bifrost and valhall, but on bifrost the some
of the descriptor limits are lower than the minimum required by the
extension.

Signed-off-by: Olivia Lee <olivia.lee@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35408>
This commit is contained in:
Olivia Lee 2025-06-08 17:44:57 -07:00 committed by Marge Bot
parent f90b9b3642
commit 5fe5e3176f
3 changed files with 49 additions and 28 deletions

View file

@ -476,7 +476,7 @@ Vulkan 1.2 -- all DONE: anv, hk, nvk, panvk/v10+, tu, vn
VK_KHR_timeline_semaphore DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
VK_KHR_uniform_buffer_standard_layout DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
VK_KHR_vulkan_memory_model DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
VK_EXT_descriptor_indexing DONE (anv, dzn, lvp, nvk, radv, tu, vn)
VK_EXT_descriptor_indexing DONE (anv, dzn, lvp, nvk, panvk/v10+, radv, tu, vn)
VK_EXT_host_query_reset DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
VK_EXT_sampler_filter_minmax DONE (anv, lvp, nvk, panvk/v10+, radv, tu, vn)
VK_EXT_scalar_block_layout DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, vn, v3dv/vc7+)

View file

@ -48,3 +48,4 @@ VK_KHR_maintenance9 on RADV
VK_KHR_unified_image_layouts on RADV (RDNA3+)
VK_KHR_vulkan_memory_model on panvk
VK_KHR_present_wait2
VK_EXT_descriptor_indexing on panvk/v10+

View file

@ -125,6 +125,7 @@ panvk_per_arch(get_physical_device_extensions)(
#ifdef VK_USE_PLATFORM_DISPLAY_KHR
.EXT_display_control = true,
#endif
.EXT_descriptor_indexing = PAN_ARCH >= 9,
.EXT_extended_dynamic_state = true,
.EXT_extended_dynamic_state2 = true,
.EXT_external_memory_dma_buf = true,
@ -281,7 +282,10 @@ panvk_per_arch(get_physical_device_features)(
.shaderFloat16 = PAN_ARCH >= 10,
.shaderInt8 = true,
.descriptorIndexing = false,
/* In theory, update-after-bind is supported on bifrost, but the
* descriptor limits would be too low for the descriptorIndexing feature.
*/
.descriptorIndexing = PAN_ARCH >= 9,
.shaderInputAttachmentArrayDynamicIndexing = true,
.shaderUniformTexelBufferArrayDynamicIndexing = true,
.shaderStorageTexelBufferArrayDynamicIndexing = true,
@ -292,14 +296,14 @@ panvk_per_arch(get_physical_device_features)(
.shaderInputAttachmentArrayNonUniformIndexing = true,
.shaderUniformTexelBufferArrayNonUniformIndexing = true,
.shaderStorageTexelBufferArrayNonUniformIndexing = true,
.descriptorBindingUniformBufferUpdateAfterBind = false,
.descriptorBindingSampledImageUpdateAfterBind = false,
.descriptorBindingStorageImageUpdateAfterBind = false,
.descriptorBindingStorageBufferUpdateAfterBind = false,
.descriptorBindingUniformTexelBufferUpdateAfterBind = false,
.descriptorBindingStorageTexelBufferUpdateAfterBind = false,
.descriptorBindingUpdateUnusedWhilePending = false,
.descriptorBindingPartiallyBound = false,
.descriptorBindingUniformBufferUpdateAfterBind = PAN_ARCH >= 9,
.descriptorBindingSampledImageUpdateAfterBind = PAN_ARCH >= 9,
.descriptorBindingStorageImageUpdateAfterBind = PAN_ARCH >= 9,
.descriptorBindingStorageBufferUpdateAfterBind = PAN_ARCH >= 9,
.descriptorBindingUniformTexelBufferUpdateAfterBind = PAN_ARCH >= 9,
.descriptorBindingStorageTexelBufferUpdateAfterBind = PAN_ARCH >= 9,
.descriptorBindingUpdateUnusedWhilePending = PAN_ARCH >= 9,
.descriptorBindingPartiallyBound = PAN_ARCH >= 9,
.descriptorBindingVariableDescriptorCount = true,
.runtimeDescriptorArray = true,
@ -769,30 +773,46 @@ panvk_per_arch(get_physical_device_properties)(
.shaderRoundingModeRTZFloat16 = true,
.shaderRoundingModeRTZFloat32 = true,
.shaderRoundingModeRTZFloat64 = false,
/* XXX: VK_EXT_descriptor_indexing */
.maxUpdateAfterBindDescriptorsInAllPools = 0,
/* VK_EXT_descriptor_indexing */
.maxUpdateAfterBindDescriptorsInAllPools =
PAN_ARCH >= 9 ? UINT32_MAX : 0,
.shaderUniformBufferArrayNonUniformIndexingNative = false,
.shaderSampledImageArrayNonUniformIndexingNative = false,
.shaderStorageBufferArrayNonUniformIndexingNative = false,
.shaderStorageImageArrayNonUniformIndexingNative = false,
.shaderInputAttachmentArrayNonUniformIndexingNative = false,
.robustBufferAccessUpdateAfterBind = false,
.robustBufferAccessUpdateAfterBind = PAN_ARCH >= 9,
.quadDivergentImplicitLod = false,
.maxPerStageDescriptorUpdateAfterBindSamplers = 0,
.maxPerStageDescriptorUpdateAfterBindUniformBuffers = 0,
.maxPerStageDescriptorUpdateAfterBindStorageBuffers = 0,
.maxPerStageDescriptorUpdateAfterBindSampledImages = 0,
.maxPerStageDescriptorUpdateAfterBindStorageImages = 0,
.maxPerStageDescriptorUpdateAfterBindInputAttachments = 0,
.maxPerStageUpdateAfterBindResources = 0,
.maxDescriptorSetUpdateAfterBindSamplers = 0,
.maxDescriptorSetUpdateAfterBindUniformBuffers = 0,
.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = 0,
.maxDescriptorSetUpdateAfterBindStorageBuffers = 0,
.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = 0,
.maxDescriptorSetUpdateAfterBindSampledImages = 0,
.maxDescriptorSetUpdateAfterBindStorageImages = 0,
.maxDescriptorSetUpdateAfterBindInputAttachments = 0,
.maxPerStageDescriptorUpdateAfterBindSamplers =
PAN_ARCH >= 9 ? MAX_PER_STAGE_SAMPLERS : 0,
.maxPerStageDescriptorUpdateAfterBindUniformBuffers =
PAN_ARCH >= 9 ? MAX_PER_STAGE_UNIFORM_BUFFERS : 0,
.maxPerStageDescriptorUpdateAfterBindStorageBuffers =
PAN_ARCH >= 9 ? MAX_PER_STAGE_STORAGE_BUFFERS : 0,
.maxPerStageDescriptorUpdateAfterBindSampledImages =
PAN_ARCH >= 9 ? MAX_PER_STAGE_SAMPLED_IMAGES : 0,
.maxPerStageDescriptorUpdateAfterBindStorageImages =
PAN_ARCH >= 9 ? MAX_PER_STAGE_STORAGE_IMAGES : 0,
.maxPerStageDescriptorUpdateAfterBindInputAttachments =
PAN_ARCH >= 9 ? MAX_PER_STAGE_INPUT_ATTACHMENTS : 0,
.maxPerStageUpdateAfterBindResources =
PAN_ARCH >= 9 ? MAX_PER_STAGE_RESOURCES : 0,
.maxDescriptorSetUpdateAfterBindSamplers =
PAN_ARCH >= 9 ? MAX_PER_SET_SAMPLERS : 0,
.maxDescriptorSetUpdateAfterBindUniformBuffers =
PAN_ARCH >= 9 ? MAX_PER_SET_UNIFORM_BUFFERS : 0,
.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic =
PAN_ARCH >= 9 ? MAX_DYNAMIC_UNIFORM_BUFFERS : 0,
.maxDescriptorSetUpdateAfterBindStorageBuffers =
PAN_ARCH >= 9 ? MAX_PER_SET_STORAGE_BUFFERS : 0,
.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic =
PAN_ARCH >= 9 ? MAX_DYNAMIC_STORAGE_BUFFERS : 0,
.maxDescriptorSetUpdateAfterBindSampledImages =
PAN_ARCH >= 9 ? MAX_PER_SET_SAMPLED_IMAGES : 0,
.maxDescriptorSetUpdateAfterBindStorageImages =
PAN_ARCH >= 9 ? MAX_PER_SET_STORAGE_IMAGES : 0,
.maxDescriptorSetUpdateAfterBindInputAttachments =
PAN_ARCH >= 9 ? MAX_PER_SET_INPUT_ATTACHMENTS : 0,
.filterMinmaxSingleComponentFormats = PAN_ARCH >= 10,
.filterMinmaxImageComponentMapping = PAN_ARCH >= 10,
.maxTimelineSemaphoreValueDifference = INT64_MAX,