9#include <wayland-client-core.h>
11#include <QtCore/QDebug>
12#include <private/qeglconvenience_p.h>
14#ifndef EGL_EXT_platform_base
18#ifndef EGL_PLATFORM_WAYLAND_KHR
19#define EGL_PLATFORM_WAYLAND_KHR 0x31D8
32 qCDebug(lcQpaWayland) <<
"Using Wayland-EGL";
38 eglTerminate(m_eglDisplay);
43#if QT_CONFIG(egl_extension_platform_wayland)
44 m_eglDisplay = eglGetPlatformDisplay(EGL_PLATFORM_WAYLAND_EXT,
display->wl_display(),
nullptr);
52 if (!eglGetPlatformDisplay)
57 qCWarning(lcQpaWayland) <<
"The EGL implementation does not support the Wayland platform";
63 setenv(
"EGL_PLATFORM",
"wayland",
true);
66 m_eglDisplay = eglGetDisplay((EGLNativeDisplayType)
display->wl_display());
72 if (m_eglDisplay == EGL_NO_DISPLAY) {
73 qCWarning(lcQpaWayland) <<
"EGL not available";
78 if (!eglInitialize(m_eglDisplay, &major, &minor)) {
79 qCWarning(lcQpaWayland) <<
"Failed to initialize EGL display" <<
Qt::hex << eglGetError();
80 m_eglDisplay = EGL_NO_DISPLAY;
84 m_supportsThreading =
true;
88 const char *vendor = eglQueryString(m_eglDisplay, EGL_VENDOR);
91 m_supportsThreading =
false;
99 return m_eglDisplay != EGL_NO_DISPLAY;
104 return m_supportsThreading;
121 fmt.setAlphaBufferSize(8);
bool isEmpty() const noexcept
Returns true if the byte array has size 0; otherwise returns false.
The QPlatformOpenGLContext class provides an abstraction for native GL contexts.
bool supportsWindowDecoration() const
~QWaylandEglClientBufferIntegration() override
bool supportsWindowDecoration() const override
bool supportsThreadedOpenGL() const override
void initialize(QWaylandDisplay *display) override
bool isValid() const override
void * nativeResource(NativeResource resource) override
QWaylandWindow * createEglWindow(QWindow *window) override
EGLDisplay eglDisplay() const
QWaylandEglClientBufferIntegration()
void * nativeResourceForContext(NativeResource resource, QPlatformOpenGLContext *context) override
QPlatformOpenGLContext * createPlatformOpenGLContext(const QSurfaceFormat &glFormat, QPlatformOpenGLContext *share) const override
struct wl_display * display
Combined button and popup list for selecting options.
static const char * qwaylandegl_threadedgl_blacklist_vendor[]
QTextStream & hex(QTextStream &stream)
Calls QTextStream::setIntegerBase(16) on stream and returns stream.
bool q_hasEglExtension(EGLDisplay display, const char *extensionName)
typedef EGLDisplay(EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC)(EGLenum platform
void const EGLint * attrib_list
#define qCWarning(category,...)
#define qCDebug(category,...)
Q_CORE_EXPORT QByteArray qgetenv(const char *varName)
Q_CORE_EXPORT bool qEnvironmentVariableIsSet(const char *varName) noexcept
QVideoFrameFormat::PixelFormat fmt
#define EGL_PLATFORM_WAYLAND_KHR
EGLDisplay(* PFNEGLGETPLATFORMDISPLAYEXTPROC)(EGLenum platform, void *native_display, const EGLint *attrib_list)