panvk: Advertise VK_KHR_compute_shader_derivatives
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

Compute derivatives can use the same lane based path as fragment shaders
because a workgroup's invocations map to subgroup lanes in order. This
gives correct derivative quads on Valhall.

Advertise the extension for PAN_ARCH >= 9 with both derivative groups.

Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
Reviewed-by: Jakob Sinclair <jakob.sinclair@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/42142>
This commit is contained in:
Christian Gmeiner 2026-06-10 09:36:03 +02:00 committed by Marge Bot
parent 23c09e89d9
commit 67ded3d079
3 changed files with 10 additions and 1 deletions

View file

@ -540,7 +540,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_KHR_acceleration_structure DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, tu/a740+, vn)
VK_KHR_calibrated_timestamps DONE (anv, hk, kk, nvk, panvk/v10+, radv, tu/a750+, vn)
VK_KHR_compute_shader_derivatives DONE (anv, lvp, nvk, radv, tu, vn)
VK_KHR_compute_shader_derivatives DONE (anv, lvp, nvk, panvk/v9+, radv, tu, vn)
VK_KHR_cooperative_matrix DONE (anv, lvp, nvk/Turing+, radv/gfx11+, vn)
VK_KHR_copy_memory_indirect DONE (anv, lvp, nvk, radv/gfx8+)
VK_KHR_deferred_host_operations DONE (anv, hasvk, lvp, radv, tu, vn)

View file

@ -27,3 +27,4 @@ VK_GOOGLE_display_timing for KHR_display on anv, panvk, pvr, radv, tu, v3dv
VK_KHR_shader_abort on RADV
VK_KHR_shader_fma on panvk
VK_NV_shader_atomic_float16_vector on NVK
VK_KHR_compute_shader_derivatives on panvk

View file

@ -51,6 +51,7 @@ panvk_per_arch(get_physical_device_extensions)(
.KHR_buffer_device_address = true,
.KHR_calibrated_timestamps =
device->kmod.dev->props.gpu_can_query_timestamp,
.KHR_compute_shader_derivatives = PAN_ARCH >= 9,
.KHR_copy_commands2 = true,
.KHR_create_renderpass2 = true,
.KHR_dedicated_allocation = true,
@ -464,6 +465,10 @@ panvk_per_arch(get_physical_device_features)(
/* VK_KHR_depth_clamp_zero_one */
.depthClampZeroOne = true,
/* VK_KHR_compute_shader_derivatives */
.computeDerivativeGroupQuads = PAN_ARCH >= 9,
.computeDerivativeGroupLinear = PAN_ARCH >= 9,
/* VK_KHR_maintenance7 */
.maintenance7 = true,
@ -1170,6 +1175,9 @@ panvk_per_arch(get_physical_device_properties)(
.pipelineBinaryPrecompiledInternalCache = has_disk_cache,
.pipelineBinaryCompressedData = false,
/* VK_KHR_compute_shader_derivatives */
.meshAndTaskShaderDerivatives = false,
/* VK_KHR_robustness2 */
.robustStorageBufferAccessSizeAlignment = 4,
.robustUniformBufferAccessSizeAlignment = 16,