7#include "qwayland-server-linux-dmabuf-unstable-v1.h"
9#include <QtWaylandCompositor/private/qwayland-server-wayland.h>
10#include <QtWaylandCompositor/private/qwlclientbufferintegration_p.h>
12#include <QtOpenGL/QOpenGLTexture>
13#include <QtCore/QObject>
14#include <QtCore/QHash>
15#include <QtCore/QSize>
16#include <QtCore/QTextStream>
19#include <QtGui/QOpenGLContext>
20#include <QtCore/QMutex>
23#include <EGL/eglext.h>
26#ifndef DRM_FORMAT_RESERVED
27#define DRM_FORMAT_RESERVED ((1ULL << 56) - 1)
29#ifndef DRM_FORMAT_MOD_VENDOR_NONE
30#define DRM_FORMAT_MOD_VENDOR_NONE 0
32#ifndef DRM_FORMAT_MOD_LINEAR
33#define DRM_FORMAT_MOD_LINEAR fourcc_mod_code(NONE, 0)
35#ifndef DRM_FORMAT_MOD_INVALID
36#define DRM_FORMAT_MOD_INVALID fourcc_mod_code(NONE, DRM_FORMAT_RESERVED)
40#ifndef EGL_WL_bind_wayland_display
59class LinuxDmabuf :
public QtWaylandServer::zwp_linux_dmabuf_v1
109 inline uint32_t
flags()
const {
return m_flags; }
110 inline uint32_t
drmFormat()
const {
return m_drmFormat; }
121 uint32_t m_flags = 0;
123 std::array<Plane, MaxDmabufPlanes> m_planes;
124 uint32_t m_planesNumber = 1;
126 std::array<EGLImageKHR, MaxDmabufPlanes> m_eglImages = { {EGL_NO_IMAGE_KHR, EGL_NO_IMAGE_KHR, EGL_NO_IMAGE_KHR, EGL_NO_IMAGE_KHR} };
127 std::array<QOpenGLTexture *, MaxDmabufPlanes> m_textures = { {
nullptr,
nullptr,
nullptr,
nullptr} };
128 std::array<QOpenGLContext *, MaxDmabufPlanes> m_texturesContext = { {
nullptr,
nullptr,
nullptr,
nullptr} };
132 void freeResources();
void zwp_linux_buffer_params_v1_create_immed(Resource *resource, uint32_t buffer_id, int32_t width, int32_t height, uint32_t format, uint32_t flags) override
~LinuxDmabufParams() override
friend class LinuxDmabufClientBufferIntegrationPrivate
void zwp_linux_buffer_params_v1_create(Resource *resource, int32_t width, int32_t height, uint32_t format, uint32_t flags) override
void zwp_linux_buffer_params_v1_destroy(Resource *resource) override
void zwp_linux_buffer_params_v1_add(Resource *resource, int32_t fd, uint32_t plane_idx, uint32_t offset, uint32_t stride, uint32_t modifier_hi, uint32_t modifier_lo) override
void zwp_linux_buffer_params_v1_destroy_resource(Resource *resource) override
Plane & plane(uint index)
void initTexture(uint32_t plane, QOpenGLTexture *texture)
uint32_t drmFormat() const
void initImage(uint32_t plane, EGLImageKHR image)
void buffer_destroy(Resource *resource) override
~LinuxDmabufWlBuffer() override
static const uint32_t MaxDmabufPlanes
QOpenGLTexture * texture(uint32_t plane) const
void buffer_destroy_resource(Resource *resource) override
EGLImageKHR image(uint32_t plane)
uint32_t planesNumber() const
void zwp_linux_dmabuf_v1_bind_resource(Resource *resource) override
void setSupportedModifiers(const QHash< uint32_t, QList< uint64_t > > &modifiers)
void zwp_linux_dmabuf_v1_create_params(Resource *resource, uint32_t params_id) override
\qmltype WaylandCompositor \instantiates QWaylandCompositor \inqmlmodule QtWayland....
\inmodule QtWaylandCompositor
EGLImageKHR int int EGLuint64KHR * modifiers
typedef EGLBoolean(EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWL)(EGLDisplay dpy
struct wl_display * display
Combined button and popup list for selecting options.
typedef EGLDisplay(EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC)(EGLenum platform
GLint GLsizei GLsizei height
const void GLsizei GLsizei stride
GLenum GLuint GLintptr offset
GLint GLsizei GLsizei GLenum format