20#include <QtGui/private/qtguiglobal_p.h>
21#include <qpa/qplatformscreen.h>
23#include <QtCore/QVariant>
24#include <QtCore/QThreadStorage>
27#include <xf86drmMode.h>
28#include <drm_fourcc.h>
35#ifndef DRM_PLANE_TYPE_OVERLAY
36#define DRM_PLANE_TYPE_OVERLAY 0
38#ifndef DRM_PLANE_TYPE_PRIMARY
39#define DRM_PLANE_TYPE_PRIMARY 1
41#ifndef DRM_PLANE_TYPE_CURSOR
42#define DRM_PLANE_TYPE_CURSOR 2
45#ifndef DRM_CLIENT_CAP_UNIVERSAL_PLANES
46#define DRM_CLIENT_CAP_UNIVERSAL_PLANES 2
48#ifndef DRM_CLIENT_CAP_ATOMIC
49#define DRM_CLIENT_CAP_ATOMIC 3
52#ifndef DRM_MODE_PROP_EXTENDED_TYPE
53#define DRM_MODE_PROP_EXTENDED_TYPE 0x0000ffc0
55#ifndef DRM_MODE_PROP_TYPE
56#define DRM_MODE_PROP_TYPE(n) ((n) << 6)
58#ifndef DRM_MODE_PROP_OBJECT
59#define DRM_MODE_PROP_OBJECT DRM_MODE_PROP_TYPE(1)
61#ifndef DRM_MODE_PROP_SIGNED_RANGE
62#define DRM_MODE_PROP_SIGNED_RANGE DRM_MODE_PROP_TYPE(2)
156 uint32_t connector_id = 0;
157 uint32_t crtc_index = 0;
158 uint32_t crtc_id = 0;
160 int preferred_mode = -1;
162 bool mode_set =
false;
163 drmModeCrtcPtr saved_crtc =
nullptr;
165 int subpixel = DRM_MODE_SUBPIXEL_UNKNOWN;
166 drmModePropertyPtr dpms_prop =
nullptr;
167 drmModePropertyBlobPtr edid_blob =
nullptr;
168 bool wants_forced_plane =
false;
169 uint32_t forced_plane_id = 0;
170 bool forced_plane_set =
false;
171 uint32_t drm_format = DRM_FORMAT_XRGB8888;
172 bool drm_format_requested_by_user =
false;
177 uint32_t crtcIdPropertyId = 0;
178 uint32_t modeIdPropertyId = 0;
179 uint32_t activePropertyId = 0;
181 uint32_t mode_blob_id = 0;
193 int virtualIndex = 0;
195 bool isPrimary =
false;
206 bool hasAtomicSupport();
208#if QT_CONFIG(drm_atomic)
209 drmModeAtomicReq *threadLocalAtomicRequest();
210 bool threadLocalAtomicCommit(
void *
user_data);
211 void threadLocalAtomicReset();
213 void createScreens();
232 int crtcForConnector(drmModeResPtr resources, drmModeConnectorPtr connector);
234 drmModeConnectorPtr connector,
236 drmModePropertyPtr connectorProperty(drmModeConnectorPtr connector,
const QByteArray &
name);
237 drmModePropertyBlobPtr connectorPropertyBlob(drmModeConnectorPtr connector,
const QByteArray &
name);
239 void enumerateProperties(drmModeObjectPropertiesPtr objProps,
PropCallback callback);
240 void discoverPlanes();
250#if QT_CONFIG(drm_atomic)
252 drmModeAtomicReq *
request =
nullptr;
253 drmModeAtomicReq *previous_request =
nullptr;
IOBluetoothDevice * device
virtual void * nativeDisplay() const =0
QList< QKmsPlane > m_planes
QKmsScreenConfig * m_screenConfig
virtual QPlatformScreen * createScreen(const QKmsOutput &output)=0
std::function< void(drmModePropertyPtr, quint64)> PropCallback
virtual void registerScreen(QPlatformScreen *screen, bool isPrimary, const QPoint &virtualPos, const QList< QPlatformScreen * > &virtualSiblings)=0
bool m_has_atomic_support
QSize headlessSize() const
QMap< QString, QVariantMap > m_outputSettings
virtual ~QKmsScreenConfig()
bool separateScreens() const
VirtualDesktopLayout virtualDesktopLayout() const
virtual void loadConfig()
@ VirtualDesktopLayoutVertical
@ VirtualDesktopLayoutHorizontal
VirtualDesktopLayout m_virtualDesktopLayout
QMap< QString, QVariantMap > outputSettings() const
QString devicePath() const
bool supportsPBuffers() const
\inmodule QtCore\reentrant
\macro QT_RESTRICTED_CAST_FROM_ASCII
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void * user_data
#define Q_DECLARE_FLAGS(Flags, Enum)
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
static QFontEngine::SubpixelAntialiasingType subpixelAntialiasingTypeHint()
#define DRM_PLANE_TYPE_OVERLAY
#define DRM_PLANE_TYPE_PRIMARY
#define DRM_PLANE_TYPE_CURSOR
GLsizei const GLchar *const * path
unsigned long long quint64
QT_BEGIN_NAMESPACE typedef uchar * output
QNetworkRequest request(url)
QList< QKmsPlane > available_planes
QList< drmModeModeInfo > modes
uint32_t srcheightPropertyId
uint32_t framebufferPropertyId
uint32_t crtcwidthPropertyId
uint32_t rotationPropertyId
Rotations initialRotation
QList< uint32_t > supportedFormats
uint32_t crtcheightPropertyId
uint32_t srcwidthPropertyId
uint32_t blendOpPropertyId
Rotations availableRotations