17#include <drm_fourcc.h>
34 const QSize nativeSize(m_output->
modeSize());
35 if (!m_swapchain || m_swapchain->size() != nativeSize) {
36 m_swapchain = std::make_unique<QPainterSwapchain>(m_backend->
graphicsBufferAllocator(), nativeSize, DRM_FORMAT_XRGB8888);
39 m_current = m_swapchain->acquire();
44 m_renderStart = std::chrono::steady_clock::now();
47 .repaint = m_output->
rect(),
53 m_renderTime = std::chrono::steady_clock::now() - m_renderStart;
59 return m_current->view()->image();
73 const auto outputs = backend->
outputs();
74 for (
Output *output : outputs) {
81void VirtualQPainterBackend::addOutput(
Output *output)
83 m_outputs[output] = std::make_unique<VirtualQPainterLayer>(output,
this);
86void VirtualQPainterBackend::removeOutput(Output *output)
88 m_outputs.erase(output);
93 return m_allocator.get();
103 return m_outputs[output].get();
107#include "moc_virtual_qpainter_backend.cpp"
void outputAdded(Output *output)
void outputRemoved(Output *output)
Outputs outputs() const override
void present(Output *output, const std::shared_ptr< OutputFrame > &frame) override
GraphicsBufferAllocator * graphicsBufferAllocator() const override
VirtualQPainterBackend(VirtualBackend *backend)
VirtualQPainterLayer * primaryLayer(Output *output) override
~VirtualQPainterBackend() override
std::chrono::nanoseconds queryRenderTime() const override
std::optional< OutputLayerBeginFrameInfo > beginFrame() override
bool endFrame(const QRegion &renderedRegion, const QRegion &damagedRegion) override
VirtualQPainterLayer(Output *output, VirtualQPainterBackend *backend)
~VirtualQPainterLayer() override
RenderTarget renderTarget