File indexing completed on 2025-07-13 04:58:52

0001 /*
0002     KWin - the KDE window manager
0003     This file is part of the KDE project.
0004 
0005     SPDX-FileCopyrightText: 2015 Martin Gräßlin <mgraesslin@kde.org>
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 #pragma once
0010 #include "drm_render_backend.h"
0011 #include "platformsupport/scenes/qpainter/qpainterbackend.h"
0012 
0013 #include <QList>
0014 #include <QObject>
0015 
0016 namespace KWin
0017 {
0018 
0019 class DrmBackend;
0020 class DrmAbstractOutput;
0021 class DrmQPainterLayer;
0022 class DrmPipeline;
0023 
0024 class DrmQPainterBackend : public QPainterBackend, public DrmRenderBackend
0025 {
0026     Q_OBJECT
0027 public:
0028     DrmQPainterBackend(DrmBackend *backend);
0029     ~DrmQPainterBackend();
0030 
0031     GraphicsBufferAllocator *graphicsBufferAllocator() const override;
0032 
0033     void present(Output *output, const std::shared_ptr<OutputFrame> &frame) override;
0034     OutputLayer *primaryLayer(Output *output) override;
0035     OutputLayer *cursorLayer(Output *output) override;
0036 
0037     std::shared_ptr<DrmPipelineLayer> createPrimaryLayer(DrmPipeline *pipeline) override;
0038     std::shared_ptr<DrmPipelineLayer> createCursorLayer(DrmPipeline *pipeline) override;
0039     std::shared_ptr<DrmOutputLayer> createLayer(DrmVirtualOutput *output) override;
0040 
0041 private:
0042     DrmBackend *m_backend;
0043 };
0044 }