mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-09 14:13:43 +00:00
wg_engine: code refactoring
- apply thorvg compact coding style. - separate private / public methods designated in sectors.
This commit is contained in:
parent
1932107097
commit
8be44e66d2
2 changed files with 39 additions and 36 deletions
|
@ -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 };
|
||||||
|
|
|
@ -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_ */
|
||||||
|
|
Loading…
Add table
Reference in a new issue