Fix #138140: Vulkan: First few frames squashed on X11

Previous swapchain fixes didn't solve the issue on X11 so for X11 we still need
to disable VK_EXT_swapchain_maintenance1.

Pull Request: https://projects.blender.org/blender/blender/pulls/139270
This commit is contained in:
Jeroen Bakker
2025-05-22 14:15:28 +02:00
parent 5abf42012d
commit b2a3caac5b

View File

@@ -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. */