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)
/************************************************************************/
/* Internal Class Implementation */
/************************************************************************/
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)
{
// 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)
{
return { 0, 0, INT32_MAX, INT32_MAX };

View file

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