2#include "libmythbase/mythconfig.h"
7#define LOC QString("EGL: ")
11#include <EGL/eglext.h>
14#ifndef EGL_EXT_platform_device
15#define EGL_PLATFORM_DEVICE_EXT 0x313F
18#ifndef EGL_EXT_platform_wayland
19#define EGL_PLATFORM_WAYLAND_EXT 0x31D8
22#ifndef EGL_EXT_platform_x11
23#define EGL_PLATFORM_X11_EXT 0x31D5
60 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());
86 auto CheckDisplay = [](EGLDisplay EglDisplay)
88 if (EglDisplay == EGL_NO_DISPLAY)
92 if (!eglInitialize(EglDisplay, &major, &
minor))
94 QString vendor = eglQueryString(EglDisplay, EGL_VENDOR);
95 QString apis = eglQueryString(EglDisplay, EGL_CLIENT_APIS);
96 QString
version = eglQueryString(EglDisplay, EGL_VERSION);
97 eglTerminate(EglDisplay);
98 if (!apis.contains(
"opengl", Qt::CaseInsensitive) || (major < 1 ||
minor < 2))
100 return QString(
"%1, %2").arg(vendor,
version);
103 QString extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
104 if (extensions.contains(
"EGL_EXT_platform_base"))
109 if (getdisp && extensions.contains(
"platform_x11"))
112 if (!vendor.isEmpty())
115 if (getdisp && extensions.contains(
"platform_wayland"))
118 if (!vendor.isEmpty())
121 if (getdisp && extensions.contains(
"platform_device"))
124 if (!vendor.isEmpty())
129 return CheckDisplay(eglGetDisplay(EGL_DEFAULT_DISPLAY));
138 return static_cast<qint32
>(eglGetError());
151 void *
Buffer,
const int32_t *Attributes)
void * GetEGLDisplay(void)
void eglImageTargetTexture2DOES(GLenum Target, void *Image)
static QString GetEGLVendor(void)
bool HasEGLExtension(QString Extension)
MythEGL(MythRenderOpenGL *Context)
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
MythRenderOpenGL * m_context
#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_)