Conditionally enable the XCB WSI extension

This cl marks VK_KHR_xcb_surface as unsupported if we haven't successfully loaded XCB. Also, an assert was added to make sure vkCreateXcbSurfaceKHR is called with a valid connection. Bug: b/139491466 Change-Id: Id4ed46102cd5c2535e38bf65dedbeea1cd252e6e Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/53229Tested-by: 's avatarAlexis Hétu <sugoi@google.com> Commit-Queue: Alexis Hétu <sugoi@google.com> Kokoro-Result: kokoro <noreply+kokoro@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 8a42f7d9
......@@ -320,7 +320,7 @@ static const ExtensionProperties instanceExtensionProperties[] = {
{ { VK_KHR_SURFACE_EXTENSION_NAME, VK_KHR_SURFACE_SPEC_VERSION } },
#endif
#ifdef VK_USE_PLATFORM_XCB_KHR
{ { VK_KHR_XCB_SURFACE_EXTENSION_NAME, VK_KHR_XCB_SURFACE_SPEC_VERSION } },
{ { VK_KHR_XCB_SURFACE_EXTENSION_NAME, VK_KHR_XCB_SURFACE_SPEC_VERSION }, vk::XcbSurfaceKHR::hasLibXCB() },
#endif
#ifdef VK_USE_PLATFORM_XLIB_KHR
{ { VK_KHR_XLIB_SURFACE_EXTENSION_NAME, VK_KHR_XLIB_SURFACE_SPEC_VERSION }, static_cast<bool>(libX11) },
......@@ -3657,6 +3657,9 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(VkInstance instance, const
TRACE("(VkInstance instance = %p, VkXcbSurfaceCreateInfoKHR* pCreateInfo = %p, VkAllocationCallbacks* pAllocator = %p, VkSurface* pSurface = %p)",
instance, pCreateInfo, pAllocator, pSurface);
// VUID-VkXcbSurfaceCreateInfoKHR-connection-01310 : connection must point to a valid X11 xcb_connection_t
ASSERT(pCreateInfo->connection);
return vk::XcbSurfaceKHR::Create(pAllocator, pCreateInfo, pSurface);
}
......
......@@ -109,6 +109,11 @@ VkExtent2D getWindowSize(xcb_connection_t *connection, xcb_window_t window)
namespace vk {
bool XcbSurfaceKHR::hasLibXCB()
{
return libXcb;
}
XcbSurfaceKHR::XcbSurfaceKHR(const VkXcbSurfaceCreateInfoKHR *pCreateInfo, void *mem)
: connection(pCreateInfo->connection)
, window(pCreateInfo->window)
......
......@@ -40,6 +40,8 @@ public:
virtual void detachImage(PresentImage *image) override;
VkResult present(PresentImage *image) override;
static bool hasLibXCB();
private:
xcb_connection_t *connection;
xcb_window_t window;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment