File indexing completed on 2025-04-20 10:57:36

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_dumb_swapchain.h"
0011 #include "drm_render_backend.h"
0012 #include "qpainterbackend.h"
0013 
0014 #include <QObject>
0015 #include <QVector>
0016 
0017 namespace KWin
0018 {
0019 
0020 class DrmBackend;
0021 class DrmAbstractOutput;
0022 class DrmQPainterLayer;
0023 class DrmPipeline;
0024 
0025 class DrmQPainterBackend : public QPainterBackend, public DrmRenderBackend
0026 {
0027     Q_OBJECT
0028 public:
0029     DrmQPainterBackend(DrmBackend *backend);
0030     ~DrmQPainterBackend();
0031 
0032     void present(Output *output) override;
0033     OutputLayer *primaryLayer(Output *output) override;
0034 
0035     std::shared_ptr<DrmPipelineLayer> createPrimaryLayer(DrmPipeline *pipeline) override;
0036     std::shared_ptr<DrmOverlayLayer> createCursorLayer(DrmPipeline *pipeline) override;
0037     std::shared_ptr<DrmOutputLayer> createLayer(DrmVirtualOutput *output) override;
0038 
0039 private:
0040     DrmBackend *m_backend;
0041 };
0042 }