diff --git a/docs/features.txt b/docs/features.txt index a3943a6e579..710597a97db 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -557,6 +557,7 @@ Khronos extensions that are not part of any Vulkan version: VK_KHR_pipeline_executable_properties DONE (anv, hk, nvk, panvk, hasvk, radv, tu, v3dv) VK_KHR_pipeline_library DONE (anv, hk, lvp, nvk, panvk, radv, tu, vn) VK_KHR_present_wait DONE (anv, nvk, radv, tu, x11/display) + VK_KHR_present_wait2 DONE (anv, nvk, panvk, pvr, radv, tu, v3dv) VK_KHR_ray_query DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, tu/a740+, vn) VK_KHR_ray_tracing_maintenance1 DONE (anv/gfx12.5+, radv/gfx10.3+, tu/a740+, vn) VK_KHR_ray_tracing_pipeline DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, vn) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index d15b4b4d757..26e2c26ad76 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -47,3 +47,4 @@ VK_EXT_depth_clip_control on panvk VK_KHR_maintenance9 on RADV VK_KHR_unified_image_layouts on RADV (RDNA3+) VK_KHR_vulkan_memory_model on panvk +VK_KHR_present_wait2 diff --git a/src/amd/vulkan/radv_physical_device.c b/src/amd/vulkan/radv_physical_device.c index f192f2b1cf4..af24baf8b96 100644 --- a/src/amd/vulkan/radv_physical_device.c +++ b/src/amd/vulkan/radv_physical_device.c @@ -566,8 +566,10 @@ radv_physical_device_get_supported_extensions(const struct radv_physical_device * we can also expose the extension that way. */ .KHR_present_id = instance->drirc.enable_khr_present_wait || wsi_common_vk_instance_supports_present_wait(&instance->vk), + .KHR_present_id2 = true, .KHR_present_wait = instance->drirc.enable_khr_present_wait || wsi_common_vk_instance_supports_present_wait(&instance->vk), + .KHR_present_wait2 = true, .KHR_push_descriptor = true, .KHR_ray_query = radv_enable_rt(pdev), .KHR_ray_tracing_maintenance1 = radv_enable_rt(pdev), diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index 7f77c5edfe5..b0ca44f8731 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -193,6 +193,8 @@ get_device_extensions(const struct v3dv_physical_device *device, .KHR_swapchain = true, .KHR_swapchain_mutable_format = true, .KHR_incremental_present = true, + .KHR_present_id2 = true, + .KHR_present_wait2 = true, #endif .KHR_variable_pointers = true, .KHR_vertex_attribute_divisor = true, diff --git a/src/freedreno/vulkan/tu_device.cc b/src/freedreno/vulkan/tu_device.cc index a86532093ab..eab694cc856 100644 --- a/src/freedreno/vulkan/tu_device.cc +++ b/src/freedreno/vulkan/tu_device.cc @@ -224,8 +224,10 @@ get_device_extensions(const struct tu_physical_device *device, * we can also expose the extension that way. */ .KHR_present_id = (driQueryOptionb(&device->instance->dri_options, "vk_khr_present_wait") || wsi_common_vk_instance_supports_present_wait(&device->instance->vk)), + .KHR_present_id2 = true, .KHR_present_wait = (driQueryOptionb(&device->instance->dri_options, "vk_khr_present_wait") || wsi_common_vk_instance_supports_present_wait(&device->instance->vk)), + .KHR_present_wait2 = true, #endif .KHR_push_descriptor = true, .KHR_ray_query = has_raytracing, diff --git a/src/imagination/vulkan/pvr_device.c b/src/imagination/vulkan/pvr_device.c index f32be6d189e..a447ef8f867 100644 --- a/src/imagination/vulkan/pvr_device.c +++ b/src/imagination/vulkan/pvr_device.c @@ -186,6 +186,8 @@ static void pvr_physical_device_get_supported_extensions( .KHR_get_memory_requirements2 = true, .KHR_image_format_list = true, .KHR_index_type_uint8 = true, + .KHR_present_id2 = PVR_USE_WSI_PLATFORM, + .KHR_present_wait2 = PVR_USE_WSI_PLATFORM, .KHR_shader_expect_assume = true, .KHR_swapchain = PVR_USE_WSI_PLATFORM, .KHR_timeline_semaphore = true, diff --git a/src/intel/vulkan/anv_physical_device.c b/src/intel/vulkan/anv_physical_device.c index 85e12d9670f..6cd2711e3b0 100644 --- a/src/intel/vulkan/anv_physical_device.c +++ b/src/intel/vulkan/anv_physical_device.c @@ -220,6 +220,8 @@ get_device_extensions(const struct anv_physical_device *device, driQueryOptionb(&device->instance->dri_options, "vk_khr_present_wait") || wsi_common_vk_instance_supports_present_wait(&device->instance->vk), .KHR_push_descriptor = true, + .KHR_present_id2 = true, + .KHR_present_wait2 = true, .KHR_ray_query = rt_enabled, .KHR_ray_tracing_maintenance1 = rt_enabled, .KHR_ray_tracing_pipeline = rt_enabled, diff --git a/src/nouveau/vulkan/nvk_physical_device.c b/src/nouveau/vulkan/nvk_physical_device.c index 0d2fdb146c3..2de97e38340 100644 --- a/src/nouveau/vulkan/nvk_physical_device.c +++ b/src/nouveau/vulkan/nvk_physical_device.c @@ -146,6 +146,8 @@ nvk_get_device_extensions(const struct nvk_instance *instance, wsi_common_vk_instance_supports_present_wait(&instance->vk), .KHR_present_wait = driQueryOptionb(&instance->dri_options, "vk_khr_present_wait") || wsi_common_vk_instance_supports_present_wait(&instance->vk), + .KHR_present_id2 = true, + .KHR_present_wait2 = true, #endif .KHR_push_descriptor = true, .KHR_relaxed_block_layout = true, diff --git a/src/panfrost/vulkan/panvk_physical_device.c b/src/panfrost/vulkan/panvk_physical_device.c index a0b2d78b438..6b68b495fb0 100644 --- a/src/panfrost/vulkan/panvk_physical_device.c +++ b/src/panfrost/vulkan/panvk_physical_device.c @@ -273,6 +273,8 @@ get_device_extensions(const struct panvk_physical_device *device, .KHR_spirv_1_4 = arch >= 10, .KHR_storage_buffer_storage_class = true, #ifdef PANVK_USE_WSI_PLATFORM + .KHR_present_id2 = true, + .KHR_present_wait2 = true, .KHR_swapchain = true, #endif .KHR_synchronization2 = true,