diff --git a/docs/features.txt b/docs/features.txt index 507386328b2..636814652e0 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -558,10 +558,10 @@ Khronos extensions that are not part of any Vulkan version: VK_KHR_pipeline_binary DONE (radv) 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_id DONE (anv, nvk, radv, tu, x11/display) - VK_KHR_present_id2 DONE (anv, nvk, panvk, pvr, radv, tu, v3dv) - 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_present_id DONE (anv, nvk, radv, tu, vn) + VK_KHR_present_id2 DONE (anv, nvk, panvk, pvr, radv, tu, v3dv, vn) + VK_KHR_present_wait DONE (anv, nvk, radv, tu, vn) + VK_KHR_present_wait2 DONE (anv, 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+, radv/gfx10.3+, tu/a740+, vn) VK_KHR_ray_tracing_pipeline DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, vn) diff --git a/src/virtio/vulkan/vn_device.c b/src/virtio/vulkan/vn_device.c index eca29294713..6852cdd5c2a 100644 --- a/src/virtio/vulkan/vn_device.c +++ b/src/virtio/vulkan/vn_device.c @@ -229,7 +229,7 @@ vn_device_fix_create_info(const struct vn_device *dev, &physical_dev->renderer_extensions; /* extra_exts and block_exts must not overlap */ const char *extra_exts[16]; - const char *block_exts[16]; + const char *block_exts[32]; uint32_t extra_count = 0; uint32_t block_count = 0; @@ -258,6 +258,10 @@ vn_device_fix_create_info(const struct vn_device *dev, if (app_exts->KHR_swapchain) { /* see vn_physical_device_get_native_extensions */ + block_exts[block_count++] = VK_KHR_PRESENT_ID_EXTENSION_NAME; + block_exts[block_count++] = VK_KHR_PRESENT_ID_2_EXTENSION_NAME; + block_exts[block_count++] = VK_KHR_PRESENT_WAIT_EXTENSION_NAME; + block_exts[block_count++] = VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME; block_exts[block_count++] = VK_KHR_SWAPCHAIN_EXTENSION_NAME; block_exts[block_count++] = VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME; diff --git a/src/virtio/vulkan/vn_physical_device.c b/src/virtio/vulkan/vn_physical_device.c index e1174d08e9e..a4729d86e19 100644 --- a/src/virtio/vulkan/vn_physical_device.c +++ b/src/virtio/vulkan/vn_physical_device.c @@ -412,6 +412,10 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev) feats->deviceMemoryReport = true; #ifdef VN_USE_WSI_PLATFORM + feats->presentId = true; + feats->presentId2 = true; + feats->presentWait = true; + feats->presentWait2 = true; feats->swapchainMaintenance1 = true; #endif @@ -1170,6 +1174,10 @@ vn_physical_device_get_native_extensions( #ifdef VN_USE_WSI_PLATFORM if (physical_dev->renderer_sync_fd.semaphore_importable) { exts->KHR_incremental_present = true; + exts->KHR_present_id = true; + exts->KHR_present_id2 = true; + exts->KHR_present_wait = true; + exts->KHR_present_wait2 = true; exts->KHR_swapchain = true; exts->KHR_swapchain_mutable_format = true; exts->EXT_hdr_metadata = true;