diff --git a/intern/ghost/intern/GHOST_ContextVK.cc b/intern/ghost/intern/GHOST_ContextVK.cc index 4444194b283..ac8838b5f35 100644 --- a/intern/ghost/intern/GHOST_ContextVK.cc +++ b/intern/ghost/intern/GHOST_ContextVK.cc @@ -1098,17 +1098,16 @@ GHOST_TSuccess GHOST_ContextVK::initializeDrawingContext() const char *native_surface_extension_name = getPlatformSpecificSurfaceExtension(); requireExtension(extensions_available, extensions_enabled, VK_KHR_SURFACE_EXTENSION_NAME); requireExtension(extensions_available, extensions_enabled, native_surface_extension_name); + required_device_extensions.push_back(VK_KHR_SWAPCHAIN_EXTENSION_NAME); - /* TODO: VK_EXT_swapchain_maintenance1 needs to be reviewed. It has several issues including - * - X11 doesn't use the correct swapchain offset, flipping can squash the first frames. - * - VVL complains of incorrect usage of fences. - * - * For now disabling it until we have figured out what is wrong. - */ - /* Required instance extension dependency of VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME */ - if (contains_extension(extensions_available, VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME) && - contains_extension(extensions_available, VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME)) - { + /* X11 doesn't use the correct swapchain offset, flipping can squash the first frames. */ + const bool use_swapchain_maintenance1 = +#ifdef WITH_GHOST_X11 + m_platform != GHOST_kVulkanPlatformX11 && +#endif + contains_extension(extensions_available, VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME) && + contains_extension(extensions_available, VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME); + if (use_swapchain_maintenance1) { requireExtension( extensions_available, extensions_enabled, VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME); requireExtension(extensions_available, @@ -1116,8 +1115,6 @@ GHOST_TSuccess GHOST_ContextVK::initializeDrawingContext() VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME); optional_device_extensions.push_back(VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME); } - - required_device_extensions.push_back(VK_KHR_SWAPCHAIN_EXTENSION_NAME); } /* External memory extensions. */