MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-Tools / AppCreateXlibWindow

Function AppCreateXlibWindow

vulkaninfo/vulkaninfo.h:928–950  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

926//----------------------------XLib---------------------------
927#ifdef VK_USE_PLATFORM_XLIB_KHR
928static void AppCreateXlibWindow(AppInstance &inst) {
929 long visualMask = VisualScreenMask;
930 int numberOfVisuals{};
931
932 inst.xlib_display = XOpenDisplay(nullptr);
933 if (inst.xlib_display == nullptr) {
934 THROW_ERR("XLib failed to connect to the X server.");
935 }
936
937 XVisualInfo vInfoTemplate = {};
938 vInfoTemplate.screen = DefaultScreen(inst.xlib_display);
939 XVisualInfo *visualInfoBegin = XGetVisualInfo(inst.xlib_display, visualMask, &vInfoTemplate, &numberOfVisuals);
940 XVisualInfo *visualInfoEnd = visualInfoBegin + numberOfVisuals;
941 const Visual *rootVisual = DefaultVisual(inst.xlib_display, vInfoTemplate.screen);
942 const XVisualInfo *foundVisualInfo =
943 std::find_if(visualInfoBegin, visualInfoEnd, [rootVisual](const XVisualInfo &vi) { return vi.visual == rootVisual; });
944 const XVisualInfo *visualInfo = foundVisualInfo == visualInfoEnd ? visualInfoBegin : foundVisualInfo;
945 inst.xlib_window = XCreateWindow(inst.xlib_display, RootWindow(inst.xlib_display, vInfoTemplate.screen), 0, 0, inst.width,
946 inst.height, 0, visualInfo->depth, InputOutput, visualInfo->visual, 0, nullptr);
947
948 XSync(inst.xlib_display, false);
949 XFree(visualInfoBegin);
950}
951
952static VkSurfaceKHR AppCreateXlibSurface(AppInstance &inst) {
953 VkXlibSurfaceCreateInfoKHR createInfo;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected