KWin
Loading...
Searching...
No Matches
drm_abstract_output.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: 2021 Xaver Hugl <xaver.hugl@gmail.com>
6
7 SPDX-License-Identifier: GPL-2.0-or-later
8*/
9#pragma once
10
11#include "core/output.h"
12
13namespace KWin
14{
15
16class DrmBackend;
17class DrmGpu;
18class DrmOutputLayer;
19class OutputFrame;
20
22{
23 Q_OBJECT
24public:
26
27 RenderLoop *renderLoop() const override;
28 void frameFailed() const;
29 void pageFlipped(std::chrono::nanoseconds timestamp, PresentationMode mode);
30 DrmGpu *gpu() const;
31
32 virtual bool present(const std::shared_ptr<OutputFrame> &frame) = 0;
33 virtual DrmOutputLayer *primaryLayer() const = 0;
34 virtual DrmOutputLayer *cursorLayer() const = 0;
35
36 void updateEnabled(bool enabled);
37
38protected:
39 friend class DrmGpu;
40
41 std::unique_ptr<RenderLoop> m_renderLoop;
42 std::shared_ptr<OutputFrame> m_frame;
43 DrmGpu *const m_gpu;
44};
45
46}
virtual bool present(const std::shared_ptr< OutputFrame > &frame)=0
void pageFlipped(std::chrono::nanoseconds timestamp, PresentationMode mode)
std::shared_ptr< OutputFrame > m_frame
std::unique_ptr< RenderLoop > m_renderLoop
void updateEnabled(bool enabled)
virtual DrmOutputLayer * primaryLayer() const =0
virtual DrmOutputLayer * cursorLayer() const =0
RenderLoop * renderLoop() const override
PresentationMode
Definition globals.h:276