[E-Dev-Day-US-2015][5/9] Evas Scenegraph, Lesson Learned! (Cedric Bail )
-
Upload
enlightenmentproject -
Category
Software
-
view
44 -
download
0
Transcript of [E-Dev-Day-US-2015][5/9] Evas Scenegraph, Lesson Learned! (Cedric Bail )
1Samsung Open Source Group
Cedric BailSenior Open Source EngineerSamsung Open Source Group
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
5Samsung Open Source Group
Today environment
● SMP everywhere
● GPU everywhere
● Embedded device everywhere
● Everyone expect iOS and Android
7Samsung Open Source Group
Landscape is changing
● Big-Little
● Scheduling, CPU idle and frequency
● Memory bandwidth still limited
● Battery still limited
● Display everywhere
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 ?