22 if (!sk_gpu_test::LoadVkLibraryAndGetProcAddrFuncs(&instProc)) {
23 SkDebugf(
"Could not load vulkan library\n");
27 auto createVkSurface = [&
info, instProc](VkInstance
instance) -> VkSurfaceKHR {
29 if (!createXcbSurfaceKHR) {
39 surfaceCreateInfo.
pNext =
nullptr;
40 surfaceCreateInfo.
flags = 0;
52 auto canPresent = [&
info, instProc](VkInstance
instance, VkPhysicalDevice physDev,
53 uint32_t queueFamilyIndex) {
55 getPhysicalDeviceXcbPresentationSupportKHR =
nullptr;
56 if (!getPhysicalDeviceXcbPresentationSupportKHR) {
57 getPhysicalDeviceXcbPresentationSupportKHR =
59 instProc(
instance,
"vkGetPhysicalDeviceXcbPresentationSupportKHR");
62 Display* display =
info.fDisplay;
63 VisualID visualID = XVisualIDFromVisual(DefaultVisual(
info.fDisplay,
64 DefaultScreen(
info.fDisplay)));
65 VkBool32 check = getPhysicalDeviceXcbPresentationSupportKHR(physDev,
67 XGetXCBConnection(display),
71 std::unique_ptr<WindowContext> ctx(
72 new internal::VulkanWindowContext(displayParams,
76 if (!ctx->isValid()) {