From a0671119ad8dddd579eea4a6e9ca048c821ba103 Mon Sep 17 00:00:00 2001 From: Mario Kleiner Date: Sun, 29 Mar 2026 21:05:44 +0200 Subject: [PATCH] v3dv: Enable VK_KHR_present_id and VK_KHR_present_wait These extensions are implemented in shared Vulkan/WSI code and not driver specific. A Vulkan driver just needs to support VK_KHR_timeline_semaphore, which v3dv already supports via emulated timeline semaphores since April 2022. Successfully tested on RaspberryPi 4/400. Signed-off-by: Mario Kleiner Reviewed-by: Iago Toral Quiroga Part-of: --- docs/features.txt | 4 ++-- docs/relnotes/new_features.txt | 4 ++-- src/broadcom/vulkan/v3dv_device.c | 8 ++++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/features.txt b/docs/features.txt index 32692faff5d..4f8d79e60dc 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -567,9 +567,9 @@ Khronos extensions that are not part of any Vulkan version: VK_KHR_pipeline_binary DONE (anv, hk, nvk, panvk, radv) VK_KHR_pipeline_executable_properties DONE (anv, hasvk, hk, nvk, panvk, pvr, radv, tu, v3dv) VK_KHR_pipeline_library DONE (anv, hk, lvp, nvk, panvk, radv, tu, vn) - VK_KHR_present_id DONE (anv, hk, nvk, panvk, radv, tu, vn) + VK_KHR_present_id DONE (anv, hk, nvk, panvk, radv, tu, v3dv, vn) VK_KHR_present_id2 DONE (anv, hk, nvk, panvk, pvr, radv, tu, v3dv, vn) - VK_KHR_present_wait DONE (anv, hk, nvk, panvk, radv, tu, vn) + VK_KHR_present_wait DONE (anv, hk, nvk, panvk, radv, tu, v3dv, vn) VK_KHR_present_wait2 DONE (anv, hk, nvk, panvk, pvr, radv, tu, v3dv, vn) VK_KHR_ray_query DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, tu/a740+, vn) VK_KHR_ray_tracing_maintenance1 DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, tu/a740+, vn) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index e1f651e503c..b324f3736f7 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -8,8 +8,8 @@ VK_EXT_blend_operation_advanced on lavapipe VK_KHR_get_surface_capabilities2 on panvk VK_KHR_get_display_properties2 on panvk VK_EXT_acquire_drm_display on panvk -VK_KHR_present_id on panvk -VK_KHR_present_wait on panvk +VK_KHR_present_id on panvk, v3dv +VK_KHR_present_wait on panvk, v3dv VK_KHR_pipeline_executable_properties on pvr VK_EXT_zero_initialize_device_memory on panvk GL_EXT_shader_image_load_store on panfrost diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index 444bb132cb0..750aebe8c4a 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -204,7 +204,9 @@ get_device_extensions(const struct v3dv_physical_device *device, .KHR_swapchain_maintenance1 = true, .KHR_swapchain_mutable_format = true, .KHR_incremental_present = true, + .KHR_present_id = true, .KHR_present_id2 = true, + .KHR_present_wait = true, .KHR_present_wait2 = true, #endif .KHR_variable_pointers = true, @@ -527,9 +529,15 @@ get_features(const struct v3dv_physical_device *physical_device, /* VK_KHR_swapchain_maintenance1 */ .swapchainMaintenance1 = true, + /* VK_KHR_present_id */ + .presentId = true, + /* VK_KHR_present_id2 */ .presentId2 = true, + /* VK_KHR_present_wait */ + .presentWait = true, + /* VK_KHR_present_wait2 */ .presentWait2 = true, #endif