KWin
Loading...
Searching...
No Matches
drm_egl_layer.h
Go to the documentation of this file.
1/*
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5 SPDX-FileCopyrightText: 2022 Xaver Hugl <xaver.hugl@gmail.com>
6
7 SPDX-License-Identifier: GPL-2.0-or-later
8*/
9#pragma once
10#include "drm_layer.h"
11
12#include "drm_dmabuf_feedback.h"
14
15#include <QMap>
16#include <QPointer>
17#include <QRegion>
18#include <epoxy/egl.h>
19#include <optional>
20
21namespace KWin
22{
23
24class EglGbmBackend;
25
27{
28public:
29 EglGbmLayer(EglGbmBackend *eglBackend, DrmPipeline *pipeline);
30
31 std::optional<OutputLayerBeginFrameInfo> beginFrame() override;
32 bool endFrame(const QRegion &renderedRegion, const QRegion &damagedRegion) override;
33 bool scanout(SurfaceItem *surfaceItem) override;
34 bool checkTestBuffer() override;
35 std::shared_ptr<DrmFramebuffer> currentBuffer() const override;
36 bool hasDirectScanoutBuffer() const override;
37 QRegion currentDamage() const override;
38 std::shared_ptr<GLTexture> texture() const override;
40 void releaseBuffers() override;
41 std::chrono::nanoseconds queryRenderTime() const override;
42
43private:
44 std::shared_ptr<DrmFramebuffer> m_scanoutBuffer;
45 QRegion m_currentDamage;
46
47 EglGbmLayerSurface m_surface;
48 DmabufFeedback m_dmabufFeedback;
49};
50
51}
OpenGL Backend using Egl on a GBM surface.
ColorDescription colorDescription() const
void releaseBuffers() override
std::optional< OutputLayerBeginFrameInfo > beginFrame() override
std::shared_ptr< DrmFramebuffer > currentBuffer() const override
bool hasDirectScanoutBuffer() const override
bool checkTestBuffer() override
EglGbmLayer(EglGbmBackend *eglBackend, DrmPipeline *pipeline)
bool scanout(SurfaceItem *surfaceItem) override
QRegion currentDamage() const override
bool endFrame(const QRegion &renderedRegion, const QRegion &damagedRegion) override
std::chrono::nanoseconds queryRenderTime() const override
std::shared_ptr< GLTexture > texture() const override