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

0001 /*
0002     KWin - the KDE window manager
0003     This file is part of the KDE project.
0004 
0005     SPDX-FileCopyrightText: 2022 Xaver Hugl <xaver.hugl@gmail.com>
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 #pragma once
0010 
0011 #include "drm_buffer.h"
0012 
0013 namespace KWin
0014 {
0015 
0016 class DrmDumbBuffer : public DrmGpuBuffer
0017 {
0018 public:
0019     DrmDumbBuffer(DrmGpu *gpu, const QSize &size, uint32_t format, uint32_t handle, uint32_t stride, size_t bufferSize);
0020     ~DrmDumbBuffer() override;
0021 
0022     bool map(QImage::Format format = QImage::Format_RGB32);
0023     QImage *image() const;
0024     void *data() const;
0025 
0026     static std::shared_ptr<DrmDumbBuffer> createDumbBuffer(DrmGpu *gpu, const QSize &size, uint32_t format);
0027 
0028 private:
0029     const size_t m_bufferSize;
0030     void *m_memory = nullptr;
0031     std::unique_ptr<QImage> m_image;
0032 };
0033 
0034 }