17#include <QSocketNotifier>
34class DrmAbstractOutput;
35class DrmRenderBackend;
36class DrmVirtualOutput;
39class GraphicsBufferAllocator;
57 const uint32_t m_lesseeId;
58 const QList<DrmOutput *> m_outputs;
94 const QList<DrmPipeline *>
pipelines()
const;
114 std::unique_ptr<DrmLease>
leaseOutputs(
const QList<DrmOutput *> &outputs);
123 void dispatchEvents();
124 DrmOutput *findOutput(quint32 connector);
126 void initDrmResources();
128 DrmPipeline::Error checkCrtcAssignment(QList<DrmConnector *> connectors,
const QList<DrmCrtc *> &crtcs);
130 QList<DrmObject *> unusedObjects()
const;
132 static void pageFlipHandler(
int fd,
unsigned int sequence,
unsigned int sec,
unsigned int usec,
unsigned int crtc_id,
void *user_data);
135 const dev_t m_deviceId;
136 const QString m_devNode;
137 bool m_atomicModeSetting;
138 bool m_addFB2ModifiersSupported =
false;
141 bool m_isVirtualMachine;
142 bool m_supportsCursorPlaneHotspot =
false;
143 bool m_asyncPageflipSupported =
false;
144 bool m_isRemoved =
false;
145 bool m_isActive =
true;
146 bool m_forceModeset =
false;
147 clockid_t m_presentationClock;
148 gbm_device *m_gbmDevice;
150 std::unique_ptr<GraphicsBufferAllocator> m_allocator;
151 std::unique_ptr<EglDisplay> m_eglDisplay;
154 std::vector<std::unique_ptr<DrmPlane>> m_planes;
155 std::vector<std::unique_ptr<DrmCrtc>> m_crtcs;
156 std::vector<std::shared_ptr<DrmConnector>> m_connectors;
157 QList<DrmObject *> m_allObjects;
158 QList<DrmPipeline *> m_pipelines;
160 QList<DrmOutput *> m_drmOutputs;
161 QList<DrmVirtualOutput *> m_virtualOutputs;
163 std::unique_ptr<QSocketNotifier> m_socketNotifier;
bool asyncPageflipSupported() const
std::unique_ptr< DrmLease > leaseOutputs(const QList< DrmOutput * > &outputs)
void setActive(bool active)
QList< DrmOutput * > drmOutputs() const
void outputRemoved(DrmAbstractOutput *output)
void setEglDisplay(std::unique_ptr< EglDisplay > &&display)
DrmVirtualOutput * createVirtualOutput(const QString &name, const QSize &size, double scale)
EglDisplay * eglDisplay() const
void outputAdded(DrmAbstractOutput *output)
FileDescriptor createNonMasterFd() const
bool addFB2ModifiersSupported() const
const QList< DrmPipeline * > pipelines() const
clockid_t presentationClock() const
bool needsModeset() const
DrmBackend * platform() const
std::shared_ptr< DrmFramebuffer > importBuffer(GraphicsBuffer *buffer, FileDescriptor &&explicitFence)
void activeChanged(bool active)
GraphicsBufferAllocator * graphicsBufferAllocator() const
DrmGpu(DrmBackend *backend, const QString &devNode, int fd, dev_t deviceId)
DrmPipeline::Error testPendingConfiguration()
void removeVirtualOutput(DrmVirtualOutput *output)
QList< DrmVirtualOutput * > virtualOutputs() const
gbm_device * gbmDevice() const
bool atomicModeSetting() const
uint32_t lesseeId() const
DrmLease(DrmGpu *gpu, FileDescriptor &&fd, uint32_t lesseeId, const QList< DrmOutput * > &outputs)