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.viewport = mViewport;
sdata->geometry.viewport = vport;
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;
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))
{
@ -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()
{
if (mRootTarget.invalid()) return false;

View file

@ -80,8 +80,6 @@ public:
bool postRender() override;
void dispose(RenderData data) override;;
RenderRegion region(RenderData data) override;
RenderRegion viewport() override;
bool viewport(const RenderRegion& vp) override;
bool blend(BlendMethod method) override;
ColorSpace colorSpace() override;
const RenderSurface* mainSurface() override;
@ -137,7 +135,6 @@ private:
void* mContext = nullptr;
RenderSurface surface;
GLint mTargetFboId = 0;
RenderRegion mViewport;
GlStageBuffer mGpuBuffer;
GlRenderTarget mRootTarget;
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)
{
if (!data || stride == 0 || w == 0 || h == 0 || w > stride) return false;

View file

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

View file

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

View file

@ -423,10 +423,17 @@ private:
uint32_t refCnt = 0; //reference count
Key key;
protected:
RenderRegion vport; //viewport
public:
//common implementation
uint32_t ref();
uint32_t unref();
RenderRegion viewport();
bool viewport(const RenderRegion& vp);
//main features
virtual ~RenderMethod() {}
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;
@ -438,8 +445,6 @@ public:
virtual bool postRender() = 0;
virtual void dispose(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 ColorSpace colorSpace() = 0;
virtual const RenderSurface* mainSurface() = 0;
@ -447,10 +452,12 @@ public:
virtual bool clear() = 0;
virtual bool sync() = 0;
//compositions
virtual RenderCompositor* target(const RenderRegion& region, ColorSpace cs, CompositionFlag flags) = 0;
virtual bool beginComposite(RenderCompositor* cmp, MaskMethod method, uint8_t opacity) = 0;
virtual bool endComposite(RenderCompositor* cmp) = 0;
//post effects
virtual void prepare(RenderEffect* effect, const Matrix& transform) = 0;
virtual bool region(RenderEffect* effect) = 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
renderDataShape->viewport = mViewport;
renderDataShape->viewport = vport;
if (flags & RenderUpdateFlag::Gradient && rshape.fill) renderDataShape->renderSettingsShape.update(mContext, rshape.fill);
else if (flags & RenderUpdateFlag::Color) renderDataShape->renderSettingsShape.update(mContext, rshape.color);
if (rshape.stroke) {
@ -165,7 +165,7 @@ RenderData WgRenderer::prepare(RenderSurface* surface, RenderData data, const Ma
auto renderDataPicture = data ? (WgRenderDataPicture*)data : mRenderDataPicturePool.allocate(mContext);
// update paint settings
renderDataPicture->viewport = mViewport;
renderDataPicture->viewport = vport;
if (flags & (RenderUpdateFlag::Transform | RenderUpdateFlag::Blend)) {
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)
{
mBlendMethod = method;

View file

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