6#ifndef QEGLFSKMSVSP2SCREEN_H
7#define QEGLFSKMSVSP2SCREEN_H
11#include <QtCore/QMutex>
13#include <qpa/qplatformscreen_p.h>
33 int addLayer(
int dmabufFd,
const QSize &size,
const QPoint &position, uint drmPixelFormat, uint bytesPerLine)
override;
44 class Blender :
public QObject
48 ~Blender() override {}
49 bool event(QEvent *event)
override;
52 QScopedArrayPointer<Blender> m_blender;
54 gbm_surface *m_gbmSurface =
nullptr;
55 gbm_bo *m_currentGbmBo =
nullptr;
56 gbm_bo *m_nextGbmBo =
nullptr;
58 QScopedPointer<QVsp2BlendingDevice> m_blendDevice;
61 uint32_t drmBufferId = 0;
64 std::array<FrameBuffer, 2> m_frameBuffers;
66 void initDumbFrameBuffer(FrameBuffer &fb);
67 QList<
void (*)()> m_blendFinishedCallbacks;
72 static void dmaBufferDestroyedHandler(gbm_bo *gbmBo,
void *data);
73 DmaBuffer *dmaBufferForGbmBuffer(gbm_bo *gbmBo);
78 bool m_blendScheduled =
false;
gbm_device * gbmDevice() const
void * nativeDisplay() const override
QEglFSKmsVsp2Device(QKmsScreenConfig *screenConfig, const QString &path)
void registerScreenCloning(QPlatformScreen *screen, QPlatformScreen *screenThisScreenClones, const QList< QPlatformScreen * > &screensCloningThisScreen) override
QPlatformScreen * createHeadlessScreen() override
QPlatformScreen * createScreen(const QKmsOutput &output) override
bool removeLayer(int id) override
void setLayerPosition(int id, const QPoint &position) override
gbm_surface * createSurface()
void setLayerBuffer(int id, int dmabufFd) override
void addBlendListener(void(*callback)()) override
int addLayer(int dmabufFd, const QSize &size, const QPoint &position, uint drmPixelFormat, uint bytesPerLine) override
void setLayerAlpha(int id, qreal alpha) override
void initDumbFrameBuffers()
QEglFSKmsVsp2Screen(QEglFSKmsDevice *device, const QKmsOutput &output)