From 1a81bff6aa431b3fc6a2900bde96ea3e74543433 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Mon, 16 Dec 2024 14:20:19 +0100 Subject: [PATCH] panvk: expose vk1.1 on v10 hardware Subgroup ops were the last bit missing Reviewed-by: Boris Brezillon Part-of: --- docs/drivers/panfrost.rst | 2 +- docs/features.txt | 2 +- docs/relnotes/new_features.txt | 2 ++ src/panfrost/vulkan/panvk_physical_device.c | 8 ++++++-- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/drivers/panfrost.rst b/docs/drivers/panfrost.rst index 5df751d9fd4..a7de594ee9f 100644 --- a/docs/drivers/panfrost.rst +++ b/docs/drivers/panfrost.rst @@ -27,7 +27,7 @@ The following hardware is currently supported: +--------------------+---------------+-----------+--------+--------+ | G57 | Valhall (v9) | 3.1 | 3.1 | | +--------------------+---------------+-----------+--------+--------+ -| G310, G610 | Valhall (v10) | 3.1 | 3.1 | 1.0 | +| G310, G610 | Valhall (v10) | 3.1 | 3.1 | 1.1 | +--------------------+---------------+-----------+--------+--------+ Other Midgard and Bifrost chips (e.g. G71) are not yet supported. diff --git a/docs/features.txt b/docs/features.txt index 1c4f26f8115..e1bce7f6798 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -428,7 +428,7 @@ we DO NOT WANT implementations of these extensions for Mesa. Vulkan 1.0 -- all DONE: anv, dzn, lvp, nvk, panvk, radv, tu, v3dv, vn -Vulkan 1.1 -- all DONE: anv, lvp, nvk, radv, tu, vn +Vulkan 1.1 -- all DONE: anv, lvp, nvk, panvk/v10+, radv, tu, vn VK_KHR_16bit_storage DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu/a650+, v3dv, vn) VK_KHR_bind_memory2 DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index 4313edc9536..e3b96fc45ae 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -34,3 +34,5 @@ shaderInt64 on panvk imageCubeArray on panvk VK_KHR_depth_clamp_zero_one on RADV VK_KHR_maintenance8 on radv +VK_KHR_shader_subgroup_rotate on panvk/v10+ +Vulkan 1.1 on panvk/v10+ diff --git a/src/panfrost/vulkan/panvk_physical_device.c b/src/panfrost/vulkan/panvk_physical_device.c index 6469537128f..f257aff30c8 100644 --- a/src/panfrost/vulkan/panvk_physical_device.c +++ b/src/panfrost/vulkan/panvk_physical_device.c @@ -421,11 +421,15 @@ get_features(const struct panvk_physical_device *device, } static uint32_t -get_vk_version() +get_vk_version(unsigned arch) { const uint32_t version_override = vk_get_version_override(); if (version_override) return version_override; + + if (arch >= 10) + return VK_MAKE_API_VERSION(0, 1, 1, VK_HEADER_VERSION); + return VK_MAKE_API_VERSION(0, 1, 0, VK_HEADER_VERSION); } @@ -447,7 +451,7 @@ get_device_properties(const struct panvk_instance *instance, assert(arch > 8 || device->kmod.props.max_threads_per_wg <= 1024); *properties = (struct vk_properties){ - .apiVersion = get_vk_version(), + .apiVersion = get_vk_version(arch), .driverVersion = vk_get_driver_version(), .vendorID = ARM_VENDOR_ID,