mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-13 19:44:28 +00:00
sw_engine: step backward optimization.
As profiled, raster parallelization is not so efficient, we revert this behavior. We will come again with a better fine-tuned method.
This commit is contained in:
parent
c7646d3f73
commit
1f05c249af
2 changed files with 9 additions and 17 deletions
|
@ -98,7 +98,8 @@ SwRenderer::~SwRenderer()
|
|||
|
||||
bool SwRenderer::clear()
|
||||
{
|
||||
if (this->valid() || tasks.size() > 0) return false;
|
||||
for (auto task : tasks) task->get();
|
||||
tasks.clear();
|
||||
|
||||
return flush();
|
||||
}
|
||||
|
@ -106,8 +107,6 @@ bool SwRenderer::clear()
|
|||
|
||||
bool SwRenderer::flush()
|
||||
{
|
||||
this->get(); //complete rendering
|
||||
|
||||
for (auto task : tasks) task->get();
|
||||
tasks.clear();
|
||||
|
||||
|
@ -135,21 +134,13 @@ bool SwRenderer::target(uint32_t* buffer, uint32_t stride, uint32_t w, uint32_t
|
|||
|
||||
|
||||
bool SwRenderer::preRender()
|
||||
{
|
||||
//before we start rendering, we should finish all preparing tasks
|
||||
for (auto task : tasks) task->get();
|
||||
|
||||
TaskScheduler::request(this);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void SwRenderer::run()
|
||||
{
|
||||
rasterClear(surface);
|
||||
|
||||
//before we start rendering, we should finish all preparing tasks
|
||||
for (auto task : tasks) {
|
||||
task->get();
|
||||
|
||||
uint8_t r, g, b, a;
|
||||
if (auto fill = task->sdata->fill()) {
|
||||
rasterGradientShape(surface, &task->shape, fill->id());
|
||||
|
@ -161,7 +152,9 @@ void SwRenderer::run()
|
|||
if (a > 0) rasterStroke(surface, &task->shape, r, g, b, a);
|
||||
}
|
||||
tasks.clear();
|
||||
};
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool SwRenderer::dispose(TVG_UNUSED const Shape& sdata, void *data)
|
||||
|
|
|
@ -28,7 +28,7 @@ struct SwTask;
|
|||
namespace tvg
|
||||
{
|
||||
|
||||
class SwRenderer : public RenderMethod, public Task
|
||||
class SwRenderer : public RenderMethod
|
||||
{
|
||||
public:
|
||||
void* prepare(const Shape& shape, void* data, const RenderTransform* transform, RenderUpdateFlag flags) override;
|
||||
|
@ -39,7 +39,6 @@ public:
|
|||
bool flush() override;
|
||||
uint32_t ref() override;
|
||||
uint32_t unref() override;
|
||||
void run() override;
|
||||
|
||||
static SwRenderer* inst();
|
||||
static int init();
|
||||
|
|
Loading…
Add table
Reference in a new issue