Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qeglfskmsvsp2screen.h
Go to the documentation of this file.
1
// Copyright (C) 2015 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
2
// Copyright (C) 2017 The Qt Company Ltd.
3
// Copyright (C) 2016 Pelagicore AG
4
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
5
// Qt-Security score:significant reason:default
6
7
#
ifndef
QEGLFSKMSVSP2SCREEN_H
8
#
define
QEGLFSKMSVSP2SCREEN_H
9
10
#
include
"qeglfskmsscreen_p.h"
11
#
include
"qvsp2blendingdevice.h"
12
#
include
<
QtCore
/
QMutex
>
13
14
#
include
<
qpa
/
qplatformscreen_p
.
h
>
15
16
#
include
<
gbm
.
h
>
17
18
QT_BEGIN_NAMESPACE
19
20
class
QEglFSKmsVsp2Screen
:
public
QEglFSKmsScreen
21
,
public
QNativeInterface
::
Private
::
QVsp2Screen
22
{
23
public
:
24
QEglFSKmsVsp2Screen
(QEglFSKmsDevice *device,
const
QKmsOutput &output);
25
26
gbm_surface *
createSurface
();
27
void
resetSurface
();
28
29
void
initDumbFrameBuffers
();
30
void
initVsp2
();
31
void
initQtLayer
();
32
33
//TODO: use a fixed index API instead of auto increment?
34
int
addLayer
(
int
dmabufFd,
const
QSize &size,
const
QPoint &position, uint drmPixelFormat, uint bytesPerLine)
override
;
35
void
setLayerBuffer
(
int
id,
int
dmabufFd)
override
;
36
void
setLayerPosition
(
int
id,
const
QPoint &position)
override
;
37
void
setLayerAlpha
(
int
id, qreal alpha)
override
;
38
bool
removeLayer
(
int
id)
override
;
39
void
addBlendListener
(
void
(*callback)())
override
;
40
41
void
flip
();
42
void
blendAndFlipDrm
();
43
44
private
:
45
class
Blender :
public
QObject
// This is a workaround we really would want the screen to be a QObject
46
{
47
public
:
48
Blender(
QEglFSKmsVsp2Screen
*screen) : m_screen(screen) {}
49
~Blender() override {}
50
bool
event(QEvent *event)
override
;
51
QEglFSKmsVsp2Screen
*m_screen =
nullptr
;
52
};
53
QScopedArrayPointer<Blender> m_blender;
54
55
gbm_surface *m_gbmSurface =
nullptr
;
56
gbm_bo *m_currentGbmBo =
nullptr
;
57
gbm_bo *m_nextGbmBo =
nullptr
;
58
59
QScopedPointer<QVsp2BlendingDevice> m_blendDevice;
60
61
struct
FrameBuffer {
//these are for buffers that have been blended by the bru
62
uint32_t drmBufferId = 0;
63
int
dmabufFd = -1;
64
};
65
std::array<FrameBuffer, 2> m_frameBuffers;
66
uint m_backFb = 0;
67
void
initDumbFrameBuffer(FrameBuffer &fb);
68
QList<
void
(*)()> m_blendFinishedCallbacks;
69
70
struct
DmaBuffer {
//these are for qt buffers before blending with additional layers (gbm buffer data)
71
int
dmabufFd = -1;
72
};
73
static
void
dmaBufferDestroyedHandler(gbm_bo *gbmBo,
void
*data);
74
DmaBuffer *dmaBufferForGbmBuffer(gbm_bo *gbmBo);
75
76
void
ensureModeSet();
77
void
doDrmFlip();
78
79
bool
m_blendScheduled =
false
;
80
int
m_qtLayer = 0;
//TODO: add API for changing this
81
};
82
83
QT_END_NAMESPACE
84
85
#
endif
// QEGLFSKMSVSP2SCREEN_H
QEglFSKmsVsp2Device
Definition
qeglfskmsvsp2device.h:19
QEglFSKmsVsp2Device::gbmDevice
gbm_device * gbmDevice() const
Definition
qeglfskmsvsp2device.cpp:70
QEglFSKmsVsp2Device::nativeDisplay
void * nativeDisplay() const override
Definition
qeglfskmsvsp2device.cpp:65
QEglFSKmsVsp2Device::QEglFSKmsVsp2Device
QEglFSKmsVsp2Device(QKmsScreenConfig *screenConfig, const QString &path)
Definition
qeglfskmsvsp2device.cpp:19
QEglFSKmsVsp2Device::registerScreenCloning
void registerScreenCloning(QPlatformScreen *screen, QPlatformScreen *screenThisScreenClones, const QList< QPlatformScreen * > &screensCloningThisScreen) override
Definition
qeglfskmsvsp2device.cpp:88
QEglFSKmsVsp2Device::createHeadlessScreen
QPlatformScreen * createHeadlessScreen() override
Definition
qeglfskmsvsp2device.cpp:82
QEglFSKmsVsp2Device::close
void close() override
Definition
qeglfskmsvsp2device.cpp:50
QEglFSKmsVsp2Device::open
bool open() override
Definition
qeglfskmsvsp2device.cpp:24
QEglFSKmsVsp2Device::createScreen
QPlatformScreen * createScreen(const QKmsOutput &output) override
Definition
qeglfskmsvsp2device.cpp:75
QEglFSKmsVsp2Screen
Definition
qeglfskmsvsp2screen.h:22
QEglFSKmsVsp2Screen::removeLayer
bool removeLayer(int id) override
Definition
qeglfskmsvsp2screen.cpp:165
QEglFSKmsVsp2Screen::resetSurface
void resetSurface()
Definition
qeglfskmsvsp2screen.cpp:95
QEglFSKmsVsp2Screen::setLayerPosition
void setLayerPosition(int id, const QPoint &position) override
Definition
qeglfskmsvsp2screen.cpp:153
QEglFSKmsVsp2Screen::flip
void flip()
Definition
qeglfskmsvsp2screen.cpp:177
QEglFSKmsVsp2Screen::createSurface
gbm_surface * createSurface()
Definition
qeglfskmsvsp2screen.cpp:73
QEglFSKmsVsp2Screen::setLayerBuffer
void setLayerBuffer(int id, int dmabufFd) override
Definition
qeglfskmsvsp2screen.cpp:143
QEglFSKmsVsp2Screen::initQtLayer
void initQtLayer()
Definition
qeglfskmsvsp2screen.cpp:115
QEglFSKmsVsp2Screen::addBlendListener
void addBlendListener(void(*callback)()) override
Definition
qeglfskmsvsp2screen.cpp:172
QEglFSKmsVsp2Screen::addLayer
int addLayer(int dmabufFd, const QSize &size, const QPoint &position, uint drmPixelFormat, uint bytesPerLine) override
Definition
qeglfskmsvsp2screen.cpp:130
QEglFSKmsVsp2Screen::setLayerAlpha
void setLayerAlpha(int id, qreal alpha) override
Definition
qeglfskmsvsp2screen.cpp:159
QEglFSKmsVsp2Screen::blendAndFlipDrm
void blendAndFlipDrm()
Definition
qeglfskmsvsp2screen.cpp:235
QEglFSKmsVsp2Screen::initDumbFrameBuffers
void initDumbFrameBuffers()
Definition
qeglfskmsvsp2screen.cpp:100
QEglFSKmsVsp2Screen::initVsp2
void initVsp2()
Definition
qeglfskmsvsp2screen.cpp:106
QEglFSKmsVsp2Screen::QEglFSKmsVsp2Screen
QEglFSKmsVsp2Screen(QEglFSKmsDevice *device, const QKmsOutput &output)
Definition
qeglfskmsvsp2screen.cpp:67
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
qtbase
src
plugins
platforms
eglfs
deviceintegration
eglfs_kms_vsp2
qeglfskmsvsp2screen.h
Generated on
for Qt by
1.18.0