6#define LOC QString("EGL: ")
10#include <EGL/eglext.h>
13#ifndef EGL_EXT_platform_device
14#define EGL_PLATFORM_DEVICE_EXT 0x313F
17#ifndef EGL_EXT_platform_wayland
18#define EGL_PLATFORM_WAYLAND_EXT 0x31D8
21#ifndef EGL_EXT_platform_x11
22#define EGL_PLATFORM_X11_EXT 0x31D5
62 LOG(VB_GENERAL, LOG_ERR,
LOC +
"Failed to resolve EGL functions");
74 QByteArray extensions = QByteArray(eglQueryString(
m_eglDisplay, EGL_EXTENSIONS));
75 return extensions.contains(Extension.data()->toLatin1());
89 auto CheckDisplay = [](EGLDisplay EglDisplay)
91 if (EglDisplay == EGL_NO_DISPLAY)
95 if (!eglInitialize(EglDisplay, &major, &
minor))
97 QString vendor = eglQueryString(EglDisplay, EGL_VENDOR);
98 QString apis = eglQueryString(EglDisplay, EGL_CLIENT_APIS);
99 QString
version = eglQueryString(EglDisplay, EGL_VERSION);
100 eglTerminate(EglDisplay);
101 if (!apis.contains(
"opengl", Qt::CaseInsensitive) || (major < 1 ||
minor < 2))
103 return QString(
"%1, %2").arg(vendor,
version);
106 QString extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
107 if (extensions.contains(
"EGL_EXT_platform_base"))
112 if (getdisp && extensions.contains(
"platform_x11"))
115 if (!vendor.isEmpty())
118 if (getdisp && extensions.contains(
"platform_wayland"))
121 if (!vendor.isEmpty())
124 if (getdisp && extensions.contains(
"platform_device"))
127 if (!vendor.isEmpty())
132 return CheckDisplay(eglGetDisplay(EGL_DEFAULT_DISPLAY));
141 return static_cast<qint32
>(eglGetError());
154 void *
Buffer,
const int32_t *Attributes)
void * GetEGLDisplay(void)
void eglImageTargetTexture2DOES(GLenum Target, void *Image)
static QString GetEGLVendor(void)
MythEGL(MythRenderOpenGL *Context)
bool HasEGLExtension(const QString &Extension)
void eglDestroyImageKHR(void *Disp, void *Image)
MYTH_EGLDESTROYIMAGE m_eglDestroyImageKHR
static qint32 GetEGLError(void)
MYTH_EGLIMAGETARGET m_eglImageTargetTexture2DOES
void * eglCreateImageKHR(void *Disp, void *Context, unsigned int Target, void *Buffer, const int32_t *Attributes)
MYTH_EGLCREATEIMAGE m_eglCreateImageKHR
#define EGL_PLATFORM_X11_EXT
#define EGL_PLATFORM_WAYLAND_EXT
#define EGL_PLATFORM_DEVICE_EXT
void(*)(GLenum, void *) MYTH_EGLIMAGETARGET
void(*)(void *, void *) MYTH_EGLDESTROYIMAGE
void *(*)(void *, void *, unsigned int, void *, const int32_t *) MYTH_EGLCREATEIMAGE
void *(*)(GLenum, void *, const intptr_t *) MYTH_EGLGETPLATFORMDISPLAY
#define LOG(_MASK_, _LEVEL_, _QSTRING_)