From 5b3a045f15075629f318c18b6594ebb0ff5863d4 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Thu, 16 May 2024 22:06:07 +0900 Subject: [PATCH] renderer/engines: added mainSurface() interface. This interface expects the main surface of the raster engine. --- src/renderer/gl_engine/tvgGlRenderer.cpp | 6 ++++++ src/renderer/gl_engine/tvgGlRenderer.h | 4 ++-- src/renderer/sw_engine/tvgSwRenderer.cpp | 6 ++++++ src/renderer/sw_engine/tvgSwRenderer.h | 1 + src/renderer/tvgRender.h | 1 + src/renderer/wg_engine/tvgWgRenderer.cpp | 6 ++++++ src/renderer/wg_engine/tvgWgRenderer.h | 1 + 7 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/renderer/gl_engine/tvgGlRenderer.cpp b/src/renderer/gl_engine/tvgGlRenderer.cpp index f82cb2cd..02df065a 100644 --- a/src/renderer/gl_engine/tvgGlRenderer.cpp +++ b/src/renderer/gl_engine/tvgGlRenderer.cpp @@ -209,6 +209,12 @@ ColorSpace GlRenderer::colorSpace() } +const Surface* GlRenderer::mainSurface() +{ + return &surface; +} + + bool GlRenderer::blend(TVG_UNUSED BlendMethod method) { if (method != BlendMethod::Normal) { diff --git a/src/renderer/gl_engine/tvgGlRenderer.h b/src/renderer/gl_engine/tvgGlRenderer.h index 3414c841..6b4a8c23 100644 --- a/src/renderer/gl_engine/tvgGlRenderer.h +++ b/src/renderer/gl_engine/tvgGlRenderer.h @@ -52,8 +52,6 @@ public: RT_None, }; - Surface surface; - RenderData prepare(const RenderShape& rshape, RenderData data, const RenderTransform* transform, Array& clips, uint8_t opacity, RenderUpdateFlag flags, bool clipper) override; RenderData prepare(const Array& scene, RenderData data, const RenderTransform* transform, Array& clips, uint8_t opacity, RenderUpdateFlag flags) override; RenderData prepare(Surface* surface, const RenderMesh* mesh, RenderData data, const RenderTransform* transform, Array& clips, uint8_t opacity, RenderUpdateFlag flags) override; @@ -67,6 +65,7 @@ public: bool viewport(const RenderRegion& vp) override; bool blend(BlendMethod method) override; ColorSpace colorSpace() override; + const Surface* mainSurface() override; bool target(int32_t id, uint32_t w, uint32_t h); bool sync() override; @@ -96,6 +95,7 @@ private: void prepareCmpTask(GlRenderTask* task, const RenderRegion& vp); void endRenderPass(Compositor* cmp); + Surface surface; GLint mTargetFboId = 0; RenderRegion mViewport; RenderRegion mTargetViewport; diff --git a/src/renderer/sw_engine/tvgSwRenderer.cpp b/src/renderer/sw_engine/tvgSwRenderer.cpp index 33879057..3055616d 100644 --- a/src/renderer/sw_engine/tvgSwRenderer.cpp +++ b/src/renderer/sw_engine/tvgSwRenderer.cpp @@ -607,6 +607,12 @@ bool SwRenderer::mempool(bool shared) } +const Surface* SwRenderer::mainSurface() +{ + return surface; +} + + Compositor* SwRenderer::target(const RenderRegion& region, ColorSpace cs) { auto x = region.x; diff --git a/src/renderer/sw_engine/tvgSwRenderer.h b/src/renderer/sw_engine/tvgSwRenderer.h index 02359e4a..57be5589 100644 --- a/src/renderer/sw_engine/tvgSwRenderer.h +++ b/src/renderer/sw_engine/tvgSwRenderer.h @@ -49,6 +49,7 @@ public: bool viewport(const RenderRegion& vp) override; bool blend(BlendMethod method) override; ColorSpace colorSpace() override; + const Surface* mainSurface() override; bool clear() override; bool sync() override; diff --git a/src/renderer/tvgRender.h b/src/renderer/tvgRender.h index 4f54f2fe..b2506e01 100644 --- a/src/renderer/tvgRender.h +++ b/src/renderer/tvgRender.h @@ -293,6 +293,7 @@ public: virtual bool viewport(const RenderRegion& vp) = 0; virtual bool blend(BlendMethod method) = 0; virtual ColorSpace colorSpace() = 0; + virtual const Surface* mainSurface() = 0; virtual bool clear() = 0; virtual bool sync() = 0; diff --git a/src/renderer/wg_engine/tvgWgRenderer.cpp b/src/renderer/wg_engine/tvgWgRenderer.cpp index f50064e8..95ae02b6 100644 --- a/src/renderer/wg_engine/tvgWgRenderer.cpp +++ b/src/renderer/wg_engine/tvgWgRenderer.cpp @@ -259,6 +259,12 @@ ColorSpace WgRenderer::colorSpace() } +const Surface* WgRenderer::mainSurface() +{ + return &mTargetSurface; +} + + bool WgRenderer::clear() { return true; diff --git a/src/renderer/wg_engine/tvgWgRenderer.h b/src/renderer/wg_engine/tvgWgRenderer.h index cfba5334..ea8168d9 100644 --- a/src/renderer/wg_engine/tvgWgRenderer.h +++ b/src/renderer/wg_engine/tvgWgRenderer.h @@ -46,6 +46,7 @@ public: bool viewport(const RenderRegion& vp) override; bool blend(BlendMethod method) override; ColorSpace colorSpace() override; + const Surface* mainSurface() override; bool clear() override; bool sync() override;