panvk: advertise VK_EXT_nested_command_buffer on v10+

The CSF backend's cs_call() is a hardware call/return instruction that
nests naturally. The existing CmdExecuteCommands implementation already
performs caller-callee state merging without checking command buffer
level, so no functional changes are needed.

The hardware call stack has 8 levels. The kernel consumes one for the
ringbuffer CALL, and two are reserved for future internal driver use,
leaving maxCommandBufferNestingLevel at 5.

Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40120>
This commit is contained in:
Christian Gmeiner 2026-02-26 15:20:14 +01:00 committed by Marge Bot
parent e43caba5f4
commit b442dc23fd
3 changed files with 11 additions and 1 deletions

View file

@ -656,7 +656,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_EXT_mesh_shader DONE (anv/gfx12.5+, lvp, radv, vn)
VK_EXT_multi_draw DONE (anv, hasvk, hk, lvp, nvk, radv, tu, vn, v3dv)
VK_EXT_multisampled_render_to_single_sampled DONE (lvp, vn, panvk, tu)
VK_EXT_nested_command_buffer DONE (anv, lvp, nvk, radv, tu, vn)
VK_EXT_nested_command_buffer DONE (anv, lvp, nvk, panvk/v10+, radv, tu, vn)
VK_EXT_non_seamless_cube_map DONE (anv, hasvk, hk, lvp, nvk, panvk, radv, tu, vn)
VK_EXT_pageable_device_local_memory DONE (lvp)
VK_EXT_pci_bus_info DONE (anv, hasvk, nvk, radv, vn)

View file

@ -29,3 +29,4 @@ cl_khr_subgroup_extended_types on asahi, iris, llvmpipe, radeonsi and zink
cl_khr_subgroup_non_uniform_arithmetic on asahi, llvmpipe, radeonsi and zink
cl_khr_subgroup_non_uniform_vote on asahi, iris, llvmpipe, radeonsi and zink
cl_khr_subgroup_rotate on asahi, llvmpipe and zink
VK_EXT_nested_command_buffer on panvk

View file

@ -164,6 +164,7 @@ panvk_per_arch(get_physical_device_extensions)(
.EXT_legacy_dithering = true,
.EXT_line_rasterization = true,
.EXT_load_store_op_none = true,
.EXT_nested_command_buffer = PAN_ARCH >= 10,
.EXT_non_seamless_cube_map = true,
.EXT_mutable_descriptor_type = PAN_ARCH >= 9,
.EXT_multisampled_render_to_single_sampled = true,
@ -558,6 +559,11 @@ panvk_per_arch(get_physical_device_features)(
/* VK_EXT_legacy_dithering */
.legacyDithering = true,
/* VK_EXT_nested_command_buffer */
.nestedCommandBuffer = PAN_ARCH >= 10,
.nestedCommandBufferRendering = PAN_ARCH >= 10,
.nestedCommandBufferSimultaneousUse = PAN_ARCH >= 10,
/* VK_EXT_non_seamless_cube_map */
.nonSeamlessCubeMap = true,
@ -1106,6 +1112,9 @@ panvk_per_arch(get_physical_device_properties)(
.graphicsPipelineLibraryFastLinking = true,
.graphicsPipelineLibraryIndependentInterpolationDecoration = true,
/* VK_EXT_nested_command_buffer */
.maxCommandBufferNestingLevel = 5,
/* VK_EXT_provoking_vertex */
.provokingVertexModePerPipeline = false,
.transformFeedbackPreservesTriangleFanProvokingVertex = false,