renderer: code refactoring
Some checks are pending
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run

unify the viewport methods among engines.
This commit is contained in:
Hermet Park 2025-06-17 01:42:39 +09:00 committed by Hermet Park
parent 0c0c30bd36
commit e96678df28
8 changed files with 27 additions and 53 deletions

View file

@ -1399,7 +1399,7 @@ RenderData GlRenderer::prepare(RenderSurface* image, RenderData data, const Matr
} }
sdata->geometry.matrix = transform; sdata->geometry.matrix = transform;
sdata->geometry.viewport = mViewport; sdata->geometry.viewport = vport;
sdata->geometry.tesselate(image, flags); sdata->geometry.tesselate(image, flags);
@ -1454,7 +1454,7 @@ RenderData GlRenderer::prepare(const RenderShape& rshape, RenderData data, const
if (sdata->updateFlag == RenderUpdateFlag::None) return sdata; if (sdata->updateFlag == RenderUpdateFlag::None) return sdata;
sdata->geometry.matrix = transform; sdata->geometry.matrix = transform;
sdata->geometry.viewport = mViewport; sdata->geometry.viewport = vport;
if (sdata->updateFlag & (RenderUpdateFlag::Color | RenderUpdateFlag::Stroke | RenderUpdateFlag::Gradient | RenderUpdateFlag::GradientStroke | RenderUpdateFlag::Transform | RenderUpdateFlag::Path)) if (sdata->updateFlag & (RenderUpdateFlag::Color | RenderUpdateFlag::Stroke | RenderUpdateFlag::Gradient | RenderUpdateFlag::GradientStroke | RenderUpdateFlag::Transform | RenderUpdateFlag::Path))
{ {
@ -1470,19 +1470,6 @@ RenderData GlRenderer::prepare(const RenderShape& rshape, RenderData data, const
} }
RenderRegion GlRenderer::viewport()
{
return mViewport;
}
bool GlRenderer::viewport(const RenderRegion& vp)
{
mViewport = vp;
return true;
}
bool GlRenderer::preUpdate() bool GlRenderer::preUpdate()
{ {
if (mRootTarget.invalid()) return false; if (mRootTarget.invalid()) return false;

View file

@ -80,8 +80,6 @@ public:
bool postRender() override; bool postRender() override;
void dispose(RenderData data) override;; void dispose(RenderData data) override;;
RenderRegion region(RenderData data) override; RenderRegion region(RenderData data) override;
RenderRegion viewport() override;
bool viewport(const RenderRegion& vp) override;
bool blend(BlendMethod method) override; bool blend(BlendMethod method) override;
ColorSpace colorSpace() override; ColorSpace colorSpace() override;
const RenderSurface* mainSurface() override; const RenderSurface* mainSurface() override;
@ -137,7 +135,6 @@ private:
void* mContext = nullptr; void* mContext = nullptr;
RenderSurface surface; RenderSurface surface;
GLint mTargetFboId = 0; GLint mTargetFboId = 0;
RenderRegion mViewport;
GlStageBuffer mGpuBuffer; GlStageBuffer mGpuBuffer;
GlRenderTarget mRootTarget; GlRenderTarget mRootTarget;
Array<GlProgram*> mPrograms; Array<GlProgram*> mPrograms;

View file

@ -313,19 +313,6 @@ bool SwRenderer::sync()
} }
RenderRegion SwRenderer::viewport()
{
return vport;
}
bool SwRenderer::viewport(const RenderRegion& vp)
{
vport = vp;
return true;
}
bool SwRenderer::target(pixel_t* data, uint32_t stride, uint32_t w, uint32_t h, ColorSpace cs) bool SwRenderer::target(pixel_t* data, uint32_t stride, uint32_t w, uint32_t h, ColorSpace cs)
{ {
if (!data || stride == 0 || w == 0 || h == 0 || w > stride) return false; if (!data || stride == 0 || w == 0 || h == 0 || w > stride) return false;

View file

@ -46,8 +46,6 @@ public:
bool postRender() override; bool postRender() override;
void dispose(RenderData data) override; void dispose(RenderData data) override;
RenderRegion region(RenderData data) override; RenderRegion region(RenderData data) override;
RenderRegion viewport() override;
bool viewport(const RenderRegion& vp) override;
bool blend(BlendMethod method) override; bool blend(BlendMethod method) override;
ColorSpace colorSpace() override; ColorSpace colorSpace() override;
const RenderSurface* mainSurface() override; const RenderSurface* mainSurface() override;
@ -76,7 +74,6 @@ private:
Array<SwTask*> tasks; //async task list Array<SwTask*> tasks; //async task list
Array<SwSurface*> compositors; //render targets cache list Array<SwSurface*> compositors; //render targets cache list
SwMpool* mpool; //private memory pool SwMpool* mpool; //private memory pool
RenderRegion vport; //viewport
bool sharedMpool; //memory-pool behavior policy bool sharedMpool; //memory-pool behavior policy
SwRenderer(); SwRenderer();

View file

@ -40,6 +40,20 @@ uint32_t RenderMethod::unref()
return (--refCnt); return (--refCnt);
} }
RenderRegion RenderMethod::viewport()
{
return vport;
}
bool RenderMethod::viewport(const RenderRegion& vp)
{
vport = vp;
return true;
}
/************************************************************************/ /************************************************************************/
/* RenderPath Class Implementation */ /* RenderPath Class Implementation */
/************************************************************************/ /************************************************************************/

View file

@ -423,10 +423,17 @@ private:
uint32_t refCnt = 0; //reference count uint32_t refCnt = 0; //reference count
Key key; Key key;
protected:
RenderRegion vport; //viewport
public: public:
//common implementation
uint32_t ref(); uint32_t ref();
uint32_t unref(); uint32_t unref();
RenderRegion viewport();
bool viewport(const RenderRegion& vp);
//main features
virtual ~RenderMethod() {} virtual ~RenderMethod() {}
virtual bool preUpdate() = 0; virtual bool preUpdate() = 0;
virtual RenderData prepare(const RenderShape& rshape, RenderData data, const Matrix& transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags, bool clipper) = 0; virtual RenderData prepare(const RenderShape& rshape, RenderData data, const Matrix& transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags, bool clipper) = 0;
@ -438,8 +445,6 @@ public:
virtual bool postRender() = 0; virtual bool postRender() = 0;
virtual void dispose(RenderData data) = 0; virtual void dispose(RenderData data) = 0;
virtual RenderRegion region(RenderData data) = 0; virtual RenderRegion region(RenderData data) = 0;
virtual RenderRegion viewport() = 0;
virtual bool viewport(const RenderRegion& vp) = 0;
virtual bool blend(BlendMethod method) = 0; virtual bool blend(BlendMethod method) = 0;
virtual ColorSpace colorSpace() = 0; virtual ColorSpace colorSpace() = 0;
virtual const RenderSurface* mainSurface() = 0; virtual const RenderSurface* mainSurface() = 0;
@ -447,10 +452,12 @@ public:
virtual bool clear() = 0; virtual bool clear() = 0;
virtual bool sync() = 0; virtual bool sync() = 0;
//compositions
virtual RenderCompositor* target(const RenderRegion& region, ColorSpace cs, CompositionFlag flags) = 0; virtual RenderCompositor* target(const RenderRegion& region, ColorSpace cs, CompositionFlag flags) = 0;
virtual bool beginComposite(RenderCompositor* cmp, MaskMethod method, uint8_t opacity) = 0; virtual bool beginComposite(RenderCompositor* cmp, MaskMethod method, uint8_t opacity) = 0;
virtual bool endComposite(RenderCompositor* cmp) = 0; virtual bool endComposite(RenderCompositor* cmp) = 0;
//post effects
virtual void prepare(RenderEffect* effect, const Matrix& transform) = 0; virtual void prepare(RenderEffect* effect, const Matrix& transform) = 0;
virtual bool region(RenderEffect* effect) = 0; virtual bool region(RenderEffect* effect) = 0;
virtual bool render(RenderCompositor* cmp, const RenderEffect* effect, bool direct) = 0; virtual bool render(RenderCompositor* cmp, const RenderEffect* effect, bool direct) = 0;

View file

@ -146,7 +146,7 @@ RenderData WgRenderer::prepare(const RenderShape& rshape, RenderData data, const
} }
// setup fill settings // setup fill settings
renderDataShape->viewport = mViewport; renderDataShape->viewport = vport;
if (flags & RenderUpdateFlag::Gradient && rshape.fill) renderDataShape->renderSettingsShape.update(mContext, rshape.fill); if (flags & RenderUpdateFlag::Gradient && rshape.fill) renderDataShape->renderSettingsShape.update(mContext, rshape.fill);
else if (flags & RenderUpdateFlag::Color) renderDataShape->renderSettingsShape.update(mContext, rshape.color); else if (flags & RenderUpdateFlag::Color) renderDataShape->renderSettingsShape.update(mContext, rshape.color);
if (rshape.stroke) { if (rshape.stroke) {
@ -165,7 +165,7 @@ RenderData WgRenderer::prepare(RenderSurface* surface, RenderData data, const Ma
auto renderDataPicture = data ? (WgRenderDataPicture*)data : mRenderDataPicturePool.allocate(mContext); auto renderDataPicture = data ? (WgRenderDataPicture*)data : mRenderDataPicturePool.allocate(mContext);
// update paint settings // update paint settings
renderDataPicture->viewport = mViewport; renderDataPicture->viewport = vport;
if (flags & (RenderUpdateFlag::Transform | RenderUpdateFlag::Blend)) { if (flags & (RenderUpdateFlag::Transform | RenderUpdateFlag::Blend)) {
renderDataPicture->renderSettings.update(mContext, transform, surface->cs, opacity); renderDataPicture->renderSettings.update(mContext, transform, surface->cs, opacity);
} }
@ -280,18 +280,6 @@ RenderRegion WgRenderer::region(RenderData data)
} }
RenderRegion WgRenderer::viewport() {
return mViewport;
}
bool WgRenderer::viewport(const RenderRegion& vp)
{
mViewport = vp;
return true;
}
bool WgRenderer::blend(BlendMethod method) bool WgRenderer::blend(BlendMethod method)
{ {
mBlendMethod = method; mBlendMethod = method;

View file

@ -38,8 +38,6 @@ public:
bool postRender() override; bool postRender() override;
void dispose(RenderData data) override; void dispose(RenderData data) override;
RenderRegion region(RenderData data) override; RenderRegion region(RenderData data) override;
RenderRegion viewport() override;
bool viewport(const RenderRegion& vp) override;
bool blend(BlendMethod method) override; bool blend(BlendMethod method) override;
ColorSpace colorSpace() override; ColorSpace colorSpace() override;
const RenderSurface* mainSurface() override; const RenderSurface* mainSurface() override;
@ -95,7 +93,6 @@ private:
// rendering states // rendering states
RenderSurface mTargetSurface; RenderSurface mTargetSurface;
BlendMethod mBlendMethod{}; BlendMethod mBlendMethod{};
RenderRegion mViewport{};
// disposable data list // disposable data list
Array<RenderData> mDisposeRenderDatas{}; Array<RenderData> mDisposeRenderDatas{};