From b9cbd74fc6b40031fe80069ae68f7d3722e48d20 Mon Sep 17 00:00:00 2001 From: RuiwenTang Date: Mon, 11 Nov 2024 11:40:46 +0800 Subject: [PATCH] gl_engine: Fix repeated clip drawing causes performance degradation The clips need to be cleared every time when shape update. Otherwise, the increasing number of clips will hurt the performance. --- src/renderer/gl_engine/tvgGlRenderer.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/renderer/gl_engine/tvgGlRenderer.cpp b/src/renderer/gl_engine/tvgGlRenderer.cpp index cd0d400e..7e6887a0 100644 --- a/src/renderer/gl_engine/tvgGlRenderer.cpp +++ b/src/renderer/gl_engine/tvgGlRenderer.cpp @@ -1207,7 +1207,10 @@ RenderData GlRenderer::prepare(RenderSurface* image, RenderData data, const Matr sdata->geometry->tesselate(image, flags); - if (!clips.empty()) sdata->clips.push(clips); + if (!clips.empty()) { + sdata->clips.clear(); + sdata->clips.push(clips); + } return sdata; } @@ -1263,7 +1266,10 @@ RenderData GlRenderer::prepare(const RenderShape& rshape, RenderData data, const if (!sdata->geometry->tesselate(rshape, sdata->updateFlag)) return sdata; } - if (!clipper && !clips.empty()) sdata->clips.push(clips); + if (!clipper && !clips.empty()) { + sdata->clips.clear(); + sdata->clips.push(clips); + } return sdata; }