5 #define LOC QString("EGL: ")
9 #include <EGL/eglext.h>
12 #ifndef EGL_EXT_platform_device
13 #define EGL_PLATFORM_DEVICE_EXT 0x313F
16 #ifndef EGL_EXT_platform_wayland
17 #define EGL_PLATFORM_WAYLAND_EXT 0x31D8
20 #ifndef EGL_EXT_platform_x11
21 #define EGL_PLATFORM_X11_EXT 0x31D5
58 LOG(VB_GENERAL, LOG_ERR,
LOC +
"Failed to resolve EGL functions");
71 QByteArray extensions = QByteArray(eglQueryString(
m_eglDisplay, EGL_EXTENSIONS));
72 return extensions.contains(Extension.data()->toLatin1());
88 auto CheckDisplay = [](EGLDisplay EglDisplay)
90 if (EglDisplay == EGL_NO_DISPLAY)
94 if (!eglInitialize(EglDisplay, &major, &
minor))
96 QString vendor = eglQueryString(EglDisplay, EGL_VENDOR);
97 QString apis = eglQueryString(EglDisplay, EGL_CLIENT_APIS);
98 QString
version = eglQueryString(EglDisplay, EGL_VERSION);
99 eglTerminate(EglDisplay);
100 if (!apis.contains(
"opengl", Qt::CaseInsensitive) || (major < 1 ||
minor < 2))
102 return QString(
"%1, %2").arg(vendor,
version);
105 QString extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
106 if (extensions.contains(
"EGL_EXT_platform_base"))
111 if (getdisp && extensions.contains(
"platform_x11"))
114 if (!vendor.isEmpty())
117 if (getdisp && extensions.contains(
"platform_wayland"))
120 if (!vendor.isEmpty())
123 if (getdisp && extensions.contains(
"platform_device"))
126 if (!vendor.isEmpty())
131 return CheckDisplay(eglGetDisplay(EGL_DEFAULT_DISPLAY));
140 return static_cast<qint32
>(eglGetError());
153 void *
Buffer,
const int32_t *Attributes)