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 }