[E-Dev-Day-US-2015][5/9] Evas Scenegraph, Lesson Learned! (Cedric Bail )
at Enlightenment Developers Day North America 2015
https://phab.enlightenment.org/w/events/enlightenment_developer_day_us_2015/
Strategies for using alternative queries to mitigate zero results
[E-Dev-Day-US-2015][5/9] Evas Scenegraph, Lesson Learned! (Cedric Bail )
1. 1Samsung Open Source Group
Cedric Bail
Senior Open Source Engineer
Samsung Open Source Group
cedric@osg.samsung.com
Scenegraph, lesson learned
2. 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
3. 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
7. 7Samsung Open Source Group
Landscape is changing
● Big-Little
● Scheduling, CPU idle and frequency
● Memory bandwidth still limited
● Battery still limited
● Display everywhere
9. 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)
10. 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 ?