{ "module": "waylandcompositor", "condition": "module.gui", "depends": [ "gui-private" ], "testDir": "../../config.tests", "libraries": { "wayland-server": { "label": "wayland-server", "headers": "wayland-version.h", "test": { "main": [ "#if WAYLAND_VERSION_MAJOR < 1", "# error Wayland 1.8.0 or higher required", "#endif", "#if WAYLAND_VERSION_MAJOR == 1", "# if WAYLAND_VERSION_MINOR < 8", "# error Wayland 1.8.0 or higher required", "# endif", "# if WAYLAND_VERSION_MINOR == 8", "# if WAYLAND_VERSION_MICRO < 0", "# error Wayland 1.8.0 or higher required", "# endif", "# endif", "#endif" ] }, "sources": [ { "type": "pkgConfig", "args": "wayland-server" }, "-lwayland-server" ] }, "wayland-egl": { "headers": "wayland-egl.h", "test": { "main": "struct wl_egl_window *window = wl_egl_window_create(0, 100, 100);" }, "sources": [ { "type": "pkgConfig", "args": "wayland-egl" }, "-lwayland-egl", "-lEGL" ] }, "wayland-kms": { "label": "wayland-kms", "test": { "tail": [ "extern \"C\" {", "#include /* may fail because of 'private:' in c++ type_traits.h */", "#define private priv", "#include ", "#undef private", "}" ], "main": [ "struct wl_resource *buffer = nullptr;", "struct wl_kms_buffer *kmsBuffer = wayland_kms_buffer_get(buffer);" ] }, "sources": [ { "type": "pkgConfig", "args": "wayland-kms" }, "-lwayland-kms" ] }, "xcomposite": { "headers": "X11/extensions/Xcomposite.h", "test": { "main": "XCompositeRedirectWindow((Display *)0,(Window) 0, CompositeRedirectManual);" }, "sources": [ { "type": "pkgConfig", "args": "xcomposite" }, "-lxcomposite" ] }, "glx": { "headers": "GL/glx.h", "test": { "main": [ "Display *dpy = XOpenDisplay(0);", "int items = 0;", "GLXFBConfig *fbc = glXChooseFBConfig(dpy, DefaultScreen(dpy), 0 , &items);" ] }, "sources": [ { "type": "pkgConfig", "args": "x11 gl" }, "-lX11 -lGl" ] } }, "tests": { "wayland-scanner": { "type": "compile", "test": "wayland_scanner", "use": "wayland-server" }, "drm-egl-server": { "type": "compile", "test": { "include": [ "EGL/egl.h", "EGL/eglext.h" ], "main": [ "#ifdef EGL_MESA_drm_image", "return 0;", "#else", "#error Requires EGL_MESA_drm_image to be defined", "return 1;", "#endif" ] }, "use": "egl" }, "libhybris-egl-server": { "type": "compile", "test": { "include": [ "EGL/egl.h", "EGL/eglext.h", "hybris/eglplatformcommon/hybris_nativebufferext.h" ], "main": [ "#ifdef EGL_HYBRIS_native_buffer", "return 0;", "#else", "#error Requires EGL_HYBRIS_native_buffer to be defined", "return 1;", "#endif" ] }, "use": "egl" }, "dmabuf-server-buffer": { "label": "Linux dma-buf Buffer Sharing", "type": "compile", "test": { "include": [ "EGL/egl.h", "EGL/eglext.h", "drm_fourcc.h" ], "main": [ "#ifdef EGL_LINUX_DMA_BUF_EXT", "return 0;", "#else", "#error Requires EGL_LINUX_DMA_BUF_EXT", "return 1;", "#endif" ] }, "use": "egl drm" }, "dmabuf-client-buffer": { "label": "Linux Client dma-buf Buffer Sharing", "type": "compile", "test": { "include": [ "EGL/egl.h", "EGL/eglext.h", "drm_mode.h", "drm_fourcc.h" ], "main": [ "// test if DMA BUF is supported", "#ifndef EGL_LINUX_DMA_BUF_EXT", "#error DMA BUF Extension not available", "#endif", "// test if DMA BUF import modifier extension is supported", "#ifndef EGL_EXT_image_dma_buf_import_modifiers", "#error DMA BUF Import modifier extension not available", "#endif", "return 0;" ] }, "use": "egl drm" }, "vulkan-server-buffer": { "label": "Vulkan Buffer Sharing", "type": "compile", "test": { "head": [ "#define VK_USE_PLATFORM_WAYLAND_KHR 1" ], "include": [ "vulkan/vulkan.h" ], "main": [ "VkExportMemoryAllocateInfoKHR exportAllocInfo = {};", "exportAllocInfo.sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR;", "exportAllocInfo.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR;", "return 0;" ] } } }, "features": { "wayland-server": { "label": "Qt Wayland Compositor", "condition": "!config.win32 && libs.wayland-server && tests.wayland-scanner", "output": [ "privateFeature" ] }, "wayland-datadevice": { "condition": "features.draganddrop || features.clipboard", "output": [ "privateFeature" ] }, "wayland-egl": { "label": "EGL", "condition": "features.wayland-server && features.opengl && features.egl && libs.wayland-egl", "output": [ "privateFeature" ] }, "wayland-brcm": { "label": "Raspberry Pi", "condition": "features.wayland-server && features.eglfs_brcm", "output": [ "privateFeature" ] }, "xcomposite-egl": { "label": "XComposite EGL", "condition": "features.wayland-server && features.egl && features.opengl && libs.xcomposite", "output": [ "privateFeature" ] }, "xcomposite-glx": { "label": "XComposite EGL", "condition": "features.wayland-server && features.opengl && !features.opengles2 && libs.xcomposite && libs.glx", "output": [ "privateFeature" ] }, "wayland-drm-egl-server-buffer": { "label": "DRM EGL", "condition": "features.wayland-server && features.opengl && features.egl && tests.drm-egl-server", "output": [ "privateFeature" ] }, "wayland-libhybris-egl-server-buffer": { "label": "libhybris EGL", "condition": "features.wayland-server && features.opengl && features.egl && tests.libhybris-egl-server", "output": [ "privateFeature" ] }, "wayland-dmabuf-server-buffer": { "label": "Linux dma-buf server buffer integration", "condition": "features.wayland-server && features.opengl && features.egl && tests.dmabuf-server-buffer", "output": [ "privateFeature" ] }, "wayland-dmabuf-client-buffer": { "label": "Linux dma-buf client buffer integration", "condition": "features.wayland-server && features.opengl && features.egl && tests.dmabuf-client-buffer", "output": [ "privateFeature" ] }, "wayland-vulkan-server-buffer": { "label": "Vulkan-based server buffer integration", "condition": "features.wayland-server && features.vulkan && features.opengl && features.egl && tests.vulkan-server-buffer", "output": [ "privateFeature" ] }, "wayland-shm-emulation-server-buffer": { "label": "Shm emulation server buffer", "condition": "features.wayland-server && features.opengl", "output": [ "privateFeature" ] }, "wayland-layer-integration-vsp2": { "label": "VSP2 hardware layer integration", "condition": "features.wayland-server && features.eglfs_vsp2 && libs.wayland-kms", "output": [ "privateFeature" ] }, "wayland-compositor-quick": { "label": "QtQuick integration for wayland compositor", "purpose": "Allows QtWayland compositor types to be used with QtQuick", "condition": "features.wayland-server && module.quick", "output": [ "publicFeature" ] } }, "summary": [ "wayland-server", { "section": "Qt Wayland Compositor Layer Plugins", "condition": "features.wayland-server", "entries": [ "wayland-layer-integration-vsp2" ] } ] }