22class EglSwapchainSlot;
25class GraphicsBufferAllocator;
26class GLRenderTimeQuery;
32class WaylandEglBackend;
41 std::shared_ptr<GLTexture>
texture()
const;
44 std::optional<OutputLayerBeginFrameInfo>
beginFrame()
override;
45 bool endFrame(
const QRegion &renderedRegion,
const QRegion &damagedRegion)
override;
52 std::shared_ptr<EglSwapchain> m_swapchain;
53 std::shared_ptr<EglSwapchainSlot> m_buffer;
54 std::unique_ptr<GLRenderTimeQuery> m_query;
56 wl_buffer *m_presentationBuffer =
nullptr;
69 std::optional<OutputLayerBeginFrameInfo>
beginFrame()
override;
70 bool endFrame(
const QRegion &renderedRegion,
const QRegion &damagedRegion)
override;
76 std::shared_ptr<EglSwapchain> m_swapchain;
77 std::shared_ptr<EglSwapchainSlot> m_buffer;
78 std::unique_ptr<GLRenderTimeQuery> m_query;
105 void init()
override;
106 void present(
Output *output,
const std::shared_ptr<OutputFrame> &frame)
override;
113 bool initializeEgl();
114 bool initRenderingContext();
115 bool createEglWaylandOutput(
Output *output);
116 void cleanupSurfaces()
override;
120 std::unique_ptr<WaylandEglPrimaryLayer> primaryLayer;
121 std::unique_ptr<WaylandEglCursorLayer> cursorLayer;
125 std::unique_ptr<GraphicsBufferAllocator> m_allocator;
126 std::map<Output *, Layers> m_outputs;
OpenGL framebuffer object.
Class encapsulating all Wayland data structures needed by the Egl backend.
OpenGL Backend using Egl on a Wayland surface.
GraphicsBufferAllocator * graphicsBufferAllocator() const override
OutputLayer * cursorLayer(Output *output) override
void present(Output *output, const std::shared_ptr< OutputFrame > &frame) override
OutputLayer * primaryLayer(Output *output) override
std::pair< std::shared_ptr< KWin::GLTexture >, ColorDescription > textureForOutput(KWin::Output *output) const override
std::unique_ptr< SurfaceTexture > createSurfaceTextureWayland(SurfacePixmap *pixmap) override
~WaylandEglBackend() override
WaylandBackend * backend() const
WaylandEglBackend(WaylandBackend *b)
std::optional< OutputLayerBeginFrameInfo > beginFrame() override
std::chrono::nanoseconds queryRenderTime() const override
~WaylandEglCursorLayer() override
bool endFrame(const QRegion &renderedRegion, const QRegion &damagedRegion) override
WaylandEglCursorLayer(WaylandOutput *output, WaylandEglBackend *backend)
WaylandEglPrimaryLayer(WaylandOutput *output, WaylandEglBackend *backend)
~WaylandEglPrimaryLayer() override
std::shared_ptr< GLTexture > texture() const
std::optional< OutputLayerBeginFrameInfo > beginFrame() override
bool scanout(SurfaceItem *surfaceItem) override
std::chrono::nanoseconds queryRenderTime() const override
GLFramebuffer * fbo() const
bool endFrame(const QRegion &renderedRegion, const QRegion &damagedRegion) override