From d3dd8fb45739b9afc4f44d1299328515a688ee05 Mon Sep 17 00:00:00 2001 From: Martijn Courteaux Date: Tue, 22 Jul 2025 18:27:21 +0200 Subject: [PATCH] Slightly better surface creation logic for Vulkan. (#3447) --- src/renderer_vk.cpp | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/renderer_vk.cpp b/src/renderer_vk.cpp index 97ba39415..894f8973e 100644 --- a/src/renderer_vk.cpp +++ b/src/renderer_vk.cpp @@ -7043,7 +7043,7 @@ VK_DESTROY VkResult SwapChainVK::createSurface() { BGFX_PROFILER_SCOPE("SwapChainVK::createSurface", kColorFrame); - VkResult result = VK_ERROR_INITIALIZATION_FAILED; + VkResult result = VK_ERROR_EXTENSION_NOT_PRESENT; const VkInstance instance = s_renderVK->m_instance; const VkAllocationCallbacks* allocatorCb = s_renderVK->m_allocatorCb; @@ -7077,20 +7077,22 @@ VK_DESTROY } #elif BX_PLATFORM_LINUX { - if (g_platformData.type == bgfx::NativeWindowHandleType::Wayland - && s_extension[Extension::KHR_wayland_surface].m_supported - && NULL != vkCreateWaylandSurfaceKHR - ) + if (g_platformData.type == bgfx::NativeWindowHandleType::Wayland) { - BX_TRACE("Attempting Wayland surface creation."); - VkWaylandSurfaceCreateInfoKHR sci; - sci.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR; - sci.pNext = NULL; - sci.flags = 0; - sci.display = (wl_display*)g_platformData.ndt; - sci.surface = (wl_surface*)m_nwh; - result = vkCreateWaylandSurfaceKHR(instance, &sci, allocatorCb, &m_surface); - BX_WARN(VK_SUCCESS == result, "vkCreateWaylandSurfaceKHR failed %d: %s.", result, getName(result) ); + if (s_extension[Extension::KHR_wayland_surface].m_supported + && NULL != vkCreateWaylandSurfaceKHR + ) + { + BX_TRACE("Attempting Wayland surface creation."); + VkWaylandSurfaceCreateInfoKHR sci; + sci.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR; + sci.pNext = NULL; + sci.flags = 0; + sci.display = (wl_display*)g_platformData.ndt; + sci.surface = (wl_surface*)m_nwh; + result = vkCreateWaylandSurfaceKHR(instance, &sci, allocatorCb, &m_surface); + BX_WARN(VK_SUCCESS == result, "vkCreateWaylandSurfaceKHR failed %d: %s.", result, getName(result) ); + } } else {