wg_engine: code refactoring

- apply thorvg compact coding style.
- separate private / public methods designated in sectors.
This commit is contained in:
Hermet Park 2024-07-06 11:31:47 +09:00 committed by Hermet Park
parent 1932107097
commit 8be44e66d2
2 changed files with 39 additions and 36 deletions

View file

@ -24,6 +24,10 @@
#define WG_SSAA_SAMPLES (2) #define WG_SSAA_SAMPLES (2)
/************************************************************************/
/* Internal Class Implementation */
/************************************************************************/
WgRenderer::WgRenderer() WgRenderer::WgRenderer()
{ {
} }
@ -69,6 +73,25 @@ void WgRenderer::release()
} }
void WgRenderer::clearDisposes()
{
if (mDisposed.renderDatas.count == 0) return;
for (auto p = mDisposed.renderDatas.begin(); p < mDisposed.renderDatas.end(); p++) {
auto renderData = (WgRenderDataPaint*)(*p);
if (renderData->type() == Type::Shape) {
mRenderDataShapePool.free(mContext, (WgRenderDataShape*)renderData);
} else {
renderData->release(mContext);
}
}
mDisposed.renderDatas.clear();
}
/************************************************************************/
/* External Class Implementation */
/************************************************************************/
RenderData WgRenderer::prepare(const RenderShape& rshape, RenderData data, const RenderTransform* transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags, bool clipper) RenderData WgRenderer::prepare(const RenderShape& rshape, RenderData data, const RenderTransform* transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags, bool clipper)
{ {
// get or create render data shape // get or create render data shape
@ -231,19 +254,6 @@ void WgRenderer::dispose(RenderData data) {
} }
void WgRenderer::clearDisposes()
{
for (uint32_t i = 0; i < mDisposed.renderDatas.count; i++) {
auto renderData = (WgRenderDataPaint*)mDisposed.renderDatas[i];
if (renderData->type() == Type::Shape)
mRenderDataShapePool.free(mContext, (WgRenderDataShape*)renderData);
else
renderData->release(mContext);
}
mDisposed.renderDatas.clear();
}
RenderRegion WgRenderer::region(TVG_UNUSED RenderData data) RenderRegion WgRenderer::region(TVG_UNUSED RenderData data)
{ {
return { 0, 0, INT32_MAX, INT32_MAX }; return { 0, 0, INT32_MAX, INT32_MAX };

View file

@ -27,11 +27,6 @@
class WgRenderer : public RenderMethod class WgRenderer : public RenderMethod
{ {
private:
WgRenderer();
~WgRenderer();
void initialize();
void release();
public: public:
RenderData prepare(const RenderShape& rshape, RenderData data, const RenderTransform* transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags, bool clipper) override; RenderData prepare(const RenderShape& rshape, RenderData data, const RenderTransform* transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags, bool clipper) override;
RenderData prepare(const Array<RenderData>& scene, RenderData data, const RenderTransform* transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags) override; RenderData prepare(const Array<RenderData>& scene, RenderData data, const RenderTransform* transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags) override;
@ -60,41 +55,39 @@ public:
static WgRenderer* gen(); static WgRenderer* gen();
static bool init(uint32_t threads); static bool init(uint32_t threads);
static bool term(); static bool term();
private: private:
// render handles WgRenderer();
WGPUCommandEncoder mCommandEncoder{}; ~WgRenderer();
// intermidiate buffer to render void initialize();
WgRenderStorage mRenderStorageInterm; void release();
// root render storage void clearDisposes();
WgRenderStorage mRenderStorageRoot;
// storage with data after antializing WGPUCommandEncoder mCommandEncoder{}; // render handles
WgRenderStorage mRenderStorageScreen; WgRenderStorage mRenderStorageInterm; // intermidiate buffer to render
// pool to hold render tree storages WgRenderStorage mRenderStorageRoot; // root render storage
WgRenderStoragePool mRenderStoragePool; WgRenderStorage mRenderStorageScreen; // storage with data after antializing
// opacity, blend methods and composite methods pool WgRenderStoragePool mRenderStoragePool; // pool to hold render tree storages
WgBindGroupOpacityPool mOpacityPool; WgBindGroupOpacityPool mOpacityPool; // opacity, blend methods and composite methods pool
WgBindGroupBlendMethodPool mBlendMethodPool; WgBindGroupBlendMethodPool mBlendMethodPool;
WgBindGroupCompositeMethodPool mCompositeMethodPool; WgBindGroupCompositeMethodPool mCompositeMethodPool;
// render data shpes pool WgRenderDataShapePool mRenderDataShapePool; // render data shpes pool
WgRenderDataShapePool mRenderDataShapePool;
// render tree stacks // render tree stacks
Array<Compositor*> mCompositorStack; Array<Compositor*> mCompositorStack;
Array<WgRenderStorage*> mRenderStorageStack; Array<WgRenderStorage*> mRenderStorageStack;
// native window handles
WgContext mContext; WgContext mContext;
WgPipelines mPipelines; WgPipelines mPipelines;
Surface mTargetSurface; Surface mTargetSurface;
// current blend method
BlendMethod mBlendMethod{}; BlendMethod mBlendMethod{}; // current blend method
// disposed resources, they should be released on synced call. // disposed resources, they should be released on synced call.
struct { struct {
Array<RenderData> renderDatas{}; Array<RenderData> renderDatas{};
Key key; Key key;
} mDisposed; } mDisposed;
void clearDisposes();
}; };
#endif /* _TVG_WG_RENDERER_H_ */ #endif /* _TVG_WG_RENDERER_H_ */