7#ifndef QEGLFSKMSVSP2SCREEN_H
8#define QEGLFSKMSVSP2SCREEN_H
12#include <QtCore/QMutex>
14#include <qpa/qplatformscreen_p.h>
34 int addLayer(
int dmabufFd,
const QSize &size,
const QPoint &position, uint drmPixelFormat, uint bytesPerLine)
override;
45 class Blender :
public QObject
49 ~Blender() override {}
50 bool event(QEvent *event)
override;
53 QScopedArrayPointer<Blender> m_blender;
55 gbm_surface *m_gbmSurface =
nullptr;
56 gbm_bo *m_currentGbmBo =
nullptr;
57 gbm_bo *m_nextGbmBo =
nullptr;
59 QScopedPointer<QVsp2BlendingDevice> m_blendDevice;
62 uint32_t drmBufferId = 0;
65 std::array<FrameBuffer, 2> m_frameBuffers;
67 void initDumbFrameBuffer(FrameBuffer &fb);
68 QList<
void (*)()> m_blendFinishedCallbacks;
73 static void dmaBufferDestroyedHandler(gbm_bo *gbmBo,
void *data);
74 DmaBuffer *dmaBufferForGbmBuffer(gbm_bo *gbmBo);
79 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)
Combined button and popup list for selecting options.