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:
Hermet Park 2020-09-04 12:12:18 +09:00 committed by Hermet Park
parent c7646d3f73
commit 1f05c249af
2 changed files with 9 additions and 17 deletions

View file

@ -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)

View file

@ -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();