4#include <qpa/qplatformnativeinterface.h>
5#include <QtGui/QGuiApplication>
6#include <QtCore/QVector>
7#include <QtCore/QDebug>
21 qFatal(
"QOpenVGContext: failed to get EGLDisplay");
23 qFatal(
"QOpenVGContext: failed to get EGLSurface");
26 if (eglQuerySurface(m_display, m_surface, EGL_CONFIG_ID, &configID)) {
28 const EGLint configAttribs[] = {
29 EGL_CONFIG_ID, configID,
32 eglChooseConfig(m_display, configAttribs, &m_config, 1, &numConfigs);
34 qFatal(
"QOpenVGContext: failed to get surface config");
38 eglBindAPI(EGL_OPENVG_API);
39 m_context = eglCreateContext(m_display, m_config, EGL_NO_CONTEXT, 0);
41 qFatal(
"QOpenVGContext: eglCreateContext failed");
47 eglDestroyContext(m_display, m_context);
57 eglMakeCurrent(m_display, surface, surface, m_context);
62 eglMakeCurrent(m_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
72 eglSwapBuffers(m_display, surface);
83 vgReadPixels(framebufferImage.
bits(), framebufferImage.
bytesPerLine(), VG_sXRGB_8888, 0, 0,
size.width(),
size.height());
84 return framebufferImage.
mirrored(
false,
true);
89 EGLint configsAvailable = 0;
90 eglGetConfigs(m_display, 0, 0, &configsAvailable);
93 eglGetConfigs(m_display, configs.
data(), configs.
size(), &configsAvailable);
95 for (EGLConfig
config : configs) {
97 eglGetConfigAttrib(m_display,
config, EGL_CONFIG_ID, &
value);
98 qDebug() <<
"#################\n" <<
"EGL_CONFIG_ID:" <<
value;
99 eglGetConfigAttrib(m_display,
config, EGL_BUFFER_SIZE, &
value);
101 eglGetConfigAttrib(m_display,
config, EGL_ALPHA_SIZE, &
value);
103 eglGetConfigAttrib(m_display,
config, EGL_RED_SIZE, &
value);
105 eglGetConfigAttrib(m_display,
config, EGL_GREEN_SIZE, &
value);
107 eglGetConfigAttrib(m_display,
config, EGL_BLUE_SIZE, &
value);
109 eglGetConfigAttrib(m_display,
config, EGL_DEPTH_SIZE, &
value);
111 eglGetConfigAttrib(m_display,
config, EGL_STENCIL_SIZE, &
value);
114 eglGetConfigAttrib(m_display,
config, EGL_ALPHA_MASK_SIZE, &
value);
116 eglGetConfigAttrib(m_display,
config, EGL_BIND_TO_TEXTURE_RGB, &
value);
118 eglGetConfigAttrib(m_display,
config, EGL_BIND_TO_TEXTURE_RGBA, &
value);
122 eglGetConfigAttrib(m_display,
config, EGL_COLOR_BUFFER_TYPE, &
value);
124 eglGetConfigAttrib(m_display,
config, EGL_CONFIG_CAVEAT, &
value);
126 eglGetConfigAttrib(m_display,
config, EGL_CONFORMANT, &
value);
130 eglGetConfigAttrib(m_display,
config, EGL_LEVEL, &
value);
132 eglGetConfigAttrib(m_display,
config, EGL_LUMINANCE_SIZE, &
value);
134 eglGetConfigAttrib(m_display,
config, EGL_MAX_PBUFFER_WIDTH, &
value);
136 eglGetConfigAttrib(m_display,
config, EGL_MAX_PBUFFER_HEIGHT, &
value);
138 eglGetConfigAttrib(m_display,
config, EGL_MAX_PBUFFER_PIXELS, &
value);
140 eglGetConfigAttrib(m_display,
config, EGL_MAX_SWAP_INTERVAL, &
value);
142 eglGetConfigAttrib(m_display,
config, EGL_MIN_SWAP_INTERVAL, &
value);
144 eglGetConfigAttrib(m_display,
config, EGL_NATIVE_RENDERABLE, &
value);
146 eglGetConfigAttrib(m_display,
config, EGL_NATIVE_VISUAL_ID, &
value);
148 eglGetConfigAttrib(m_display,
config, EGL_NATIVE_VISUAL_TYPE, &
value);
150 eglGetConfigAttrib(m_display,
config, EGL_RENDERABLE_TYPE, &
value);
152 eglGetConfigAttrib(m_display,
config, EGL_SAMPLE_BUFFERS, &
value);
154 eglGetConfigAttrib(m_display,
config, EGL_SAMPLES, &
value);
157 eglGetConfigAttrib(m_display,
config, EGL_SURFACE_TYPE, &
value);
159 eglGetConfigAttrib(m_display,
config, EGL_TRANSPARENT_TYPE, &
value);
161 eglGetConfigAttrib(m_display,
config, EGL_TRANSPARENT_RED_VALUE, &
value);
163 eglGetConfigAttrib(m_display,
config, EGL_TRANSPARENT_GREEN_VALUE, &
value);
164 qDebug() <<
"EGL_TRANSPARENT_GREEN_VALUE:" <<
value;
165 eglGetConfigAttrib(m_display,
config, EGL_TRANSPARENT_BLUE_VALUE, &
value);
166 qDebug() <<
"EGL_TRANSPARENT_BLUE_VALUE:" <<
value;
175 error = vgGetError();
176 eglError = eglGetError();
179 }
while (
error != VG_NO_ERROR && eglError != EGL_SUCCESS);
static QPlatformNativeInterface * platformNativeInterface()
qsizetype bytesPerLine() const
Returns the number of bytes per image scanline.
uchar * bits()
Returns a pointer to the first pixel data.
QImage mirrored(bool horizontally=false, bool vertically=true) const &
qsizetype size() const noexcept
static void checkErrors()
QImage readFramebuffer(const QSize &size)
QOpenVGContext(QWindow *window)
static QString number(int, int base=10)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Combined button and popup list for selecting options.
DBusConnection const char DBusError * error
typedef EGLSurface(EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC)(EGLDisplay dpy
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
typedef EGLDisplay(EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC)(EGLenum platform
GLenum GLuint GLintptr GLsizeiptr size
[1]