4#ifndef DMABUFSERVERBUFFERINTEGRATION_H
5#define DMABUFSERVERBUFFERINTEGRATION_H
7#include <QtCore/QVariant>
8#include <QtWaylandClient/private/qwayland-wayland.h>
9#include "qwayland-qt-dmabuf-server-buffer.h"
10#include <QtWaylandClient/private/qwaylandserverbufferintegration_p.h>
13#include <QtWaylandClient/private/qwaylanddisplay_p.h>
14#include <QtCore/QTextStream>
17#include <EGL/eglext.h>
19typedef void *EGLImageKHR;
20typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer,
const EGLint *attrib_list);
21typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
24#ifndef GL_OES_EGL_image
38 int32_t width, int32_t height, int32_t stride, int32_t offset, int32_t fourcc_format);
43 EGLImageKHR m_image = EGL_NO_IMAGE_KHR;
44 QOpenGLTexture *m_texture =
nullptr;
45 struct ::qt_server_buffer *m_server_buffer =
nullptr;
57 inline EGLImageKHR
eglCreateImageKHR(EGLContext ctx, EGLenum target, EGLClientBuffer buffer,
const EGLint *attrib_list);
62 int32_t width, int32_t height, int32_t stride,
63 int32_t offset, int32_t fourcc_format)
override;
67 const QString &interface, uint32_t version);
70 PFNEGLCREATEIMAGEKHRPROC m_egl_create_image =
nullptr;
71 PFNEGLDESTROYIMAGEKHRPROC m_egl_destroy_image =
nullptr;
72 PFNGLEGLIMAGETARGETTEXTURE2DOESPROC m_gl_egl_image_target_texture =
nullptr;
73 QWaylandDisplay *m_display =
nullptr;
74 EGLDisplay m_egl_display = EGL_NO_DISPLAY;
75 bool m_egl_initialized =
false;
80 if (!m_egl_initialized)
82 if (!m_egl_create_image) {
83 qCWarning(lcQpaWayland) <<
"DmaBufServerBufferIntegration: Trying to use unresolved function eglCreateImageKHR";
84 return EGL_NO_IMAGE_KHR;
86 return m_egl_create_image(m_egl_display, ctx, target, buffer, attrib_list);
91 if (!m_egl_destroy_image) {
92 qCWarning(lcQpaWayland) <<
"DmaBufServerBufferIntegration: Trying to use unresolved function eglDestroyImageKHR";
95 return m_egl_destroy_image(m_egl_display, image);
100 if (!m_gl_egl_image_target_texture) {
101 qCWarning(lcQpaWayland) <<
"DmaBufServerBufferIntegration: Trying to use unresolved function glEGLImageTargetTexture2DOES";
104 m_gl_egl_image_target_texture(target, image);
void glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
EGLImageKHR eglCreateImageKHR(EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
EGLBoolean eglDestroyImageKHR(EGLImageKHR image)
void initialize(QWaylandDisplay *display) override
QOpenGLTexture * toOpenGlTexture() override
~DmaBufServerBuffer() override
Combined button and popup list for selecting options.