[e-dev-day-us-2015][5/9] evas scenegraph, lesson learned! (cedric bail )

12
1 Samsung Open Source Group Cedric Bail Senior Open Source Engineer Samsung Open Source Group [email protected] Scenegraph, lesson learned

Upload: enlightenmentproject

Post on 15-Jul-2015

44 views

Category:

Software


0 download

TRANSCRIPT

1Samsung Open Source Group

Cedric BailSenior Open Source EngineerSamsung Open Source Group

[email protected]

Scenegraph, lesson learned

2Samsung Open Source Group

Scenegraph ?

● Graph of primitive graphical object

● Widget composed of primitive

● Doesn't rely on OS to draw widgets

● Compositor can also use them

● One place to optimize

– Reuse data

– Cutout

– Limit shader and texture switch

– Split CPU, memory and IO bound

3Samsung Open Source Group

Scenegraph – early 2000

● SMP was luxury

● GPU where limited or non existent

● iOS and Android didn't exist

● It was the web bubble, nobody really did care about application on embedded device

● That's when started Evas design, nothing close for 2D toolkit

4Samsung Open Source Group

Evas first scenegraph

5Samsung Open Source Group

Today environment

● SMP everywhere

● GPU everywhere

● Embedded device everywhere

● Everyone expect iOS and Android

6Samsung Open Source Group

Evas scenegraph today

7Samsung Open Source Group

Landscape is changing

● Big-Little

● Scheduling, CPU idle and frequency

● Memory bandwidth still limited

● Battery still limited

● Display everywhere

8Samsung Open Source Group

Evas scenegraph tomorrow

9Samsung Open Source Group

“Small” TODO !

● Look like “Gstreamer” pipeline → Needs something to handle a low level pipeline

● Linux kernel power scheduler need to be improved

● Evas needs :

– 'COW' for all primitives (mostly Textblock, Textgrid, Evas_3D and Evas_VG)

– Splitting CPU bound from memory bound tasks

– Retained rendering library instead of caching immediate rendering

● Edje :

– Parallelize layout of an object (using internal dependency graph)

– Parallelize layout of multiple object (requested by uper layer, like Elementary)

10Samsung Open Source Group

More exploration

● More possibility :

– Tile rendering : Would that improve performance ? Do we have spare bandwidth ?

– Using ORC for more specialized compositing functions

– More light compression of data to reduce memory bandwidth needs

– Vulkan : should be more suited to this modern pipeline

– Hybrid pipeline ? Choosing between GPU/CPU depending on the amount of data to manipulate could maybe be more doable with Vulkan ?

11Samsung Open Source Group

Opinions ? Questions ?

Thank you.

12Samsung Open Source Group