Conditionally enable the Xlib WSI extension
This cl marks VK_KHR_xlib_surface as unsupported if we haven't
successfully loaded X11. Also, an assert was added to make sure
vkCreateXlibSurfaceKHR is called with a valid display.
Bug: b/139491466
Change-Id: I6da3755a15e09320e5715b2036043acbb31c0c35
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/53168
Tested-by: Alexis Hétu <sugoi@google.com>
Commit-Queue: Alexis Hétu <sugoi@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Vulkan/libVulkan.cpp b/src/Vulkan/libVulkan.cpp
index 8f2cf6e..b231778 100644
--- a/src/Vulkan/libVulkan.cpp
+++ b/src/Vulkan/libVulkan.cpp
@@ -323,7 +323,7 @@
{ { VK_KHR_XCB_SURFACE_EXTENSION_NAME, VK_KHR_XCB_SURFACE_SPEC_VERSION } },
#endif
#ifdef VK_USE_PLATFORM_XLIB_KHR
- { { VK_KHR_XLIB_SURFACE_EXTENSION_NAME, VK_KHR_XLIB_SURFACE_SPEC_VERSION } },
+ { { VK_KHR_XLIB_SURFACE_EXTENSION_NAME, VK_KHR_XLIB_SURFACE_SPEC_VERSION }, static_cast<bool>(libX11) },
#endif
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
{ { VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME, VK_KHR_WAYLAND_SURFACE_SPEC_VERSION } },
@@ -3675,6 +3675,9 @@
TRACE("(VkInstance instance = %p, VkXlibSurfaceCreateInfoKHR* pCreateInfo = %p, VkAllocationCallbacks* pAllocator = %p, VkSurface* pSurface = %p)",
instance, pCreateInfo, pAllocator, pSurface);
+ // VUID-VkXlibSurfaceCreateInfoKHR-dpy-01313: dpy must point to a valid Xlib Display
+ ASSERT(pCreateInfo->dpy);
+
return vk::XlibSurfaceKHR::Create(pAllocator, pCreateInfo, pSurface);
}