SlideShare a Scribd company logo
1Samsung Open Source Group
Cedric Bail
Senior Graphics Developer
Samsung Open Source Group
cedric@osg.samsung.com
Enlightenment Foundation Libraries
An UI Toolkit Designed for the Embedded World
2Samsung Open Source Group
● What are the Enlightenment Foundation Libraries?
● Where are they used?
● Where it is going?
● Questions?
3Samsung Open Source Group
What is EFL?
4Samsung Open Source Group
EFL: A Toolkit Created for Enlightenment 17
5Samsung Open Source Group
Enlightenment 17
– Enlightenment project started in 1997
– Windows Manager
– First Windows Manager of GNOME
– Full rewrite started in 2001
– Primary belief is there will never be “a year of the Linux desktop”
– Designed with the embedded world in mind…
– … and needed a toolkit !
6Samsung Open Source Group
Enlightenment
– 17 was just the version number, we are now at 19!
– Use EFL scenegraph and main loop
– Not different from any other EFL application
– Composite and Window Manager
– Wayland client support
– Multiple backend (X, FB, DRM, …)
– Highly customizable (Profiles, modules and themes)
7Samsung Open Source Group
Enlightenment Community
● The Enlightenment community
– 60 uniq contributors per release (10 cores)
– 1000 users that build from source
– 2 distributions based on Enlightenment (Bodhi and Elive)
● The Enlightenment community expected Linux to takeoff in the embedded wo
rld, not on the desktop
● The values shared by this community:
● Customizable
● Scalable
● Fast
● Light
● Feature Rich
8Samsung Open Source Group
Enlightenment Foundation Libraries (EFL)
● Spent a decade writing a modern graphic toolkit
● Licensed under a mix of LGPL and BSD license
● Focus on embedded devices
● First release on January 2011
● Stable, long term API/ABI
● In the process of releasing version 1.13
● 3 month release cycle
9Samsung Open Source Group
State of EFL
● Designed for creating a Windows Manager (WM), now used for any type of
application
● Has its own scene graph and rendering library
● Optimized to reduce CPU, GPU, memory and battery usage
● Supports international language requirements (LTR/RTL, UTF8)
● Supports all variations of screens and input devices (scale factor)
● Fully Themable (layout of the application included)
● Supports profiles
● Can take up as little as 8MB of space with a minimal set of dependencies
● Has a modular design
10Samsung Open Source Group
Why We Care About Optimization
● Moore's law doesn't apply to battery and memory bandwidth
● Most rendering operations are limited directly by memory bandwidth
● Many embedded devices have less available memory than a low end phone
– Refrigerator, oven, dish washer, washing machine, home automation…
● Even a low end phone doesn't have much memory to space once you run a
browser!
● GL context at best consumes 10MB, usually more around 40MB; this is bad
for multitasking!
11Samsung Open Source Group
Current State of Optimization
● Application runtime memory use is mostly driven by screen size
● EFL can fit in 8MB on disk (static compilation with minimal dependencies)
● No hard requirement on the GPU
● Enlightenment + Arch Linux combined :
– 48 MB RAM
– 300 Mhz (1024 x 768)
– Yes, for a desktop profile!
12Samsung Open Source Group
Under the Hood
13Samsung Open Source Group
Bird's Eye View of EFL
X11
OpenGL
EINA
MEMPOOL
EVAS
JPEG
PNG
GIF
TIFF
EET
SVG
MORE...
XRENDER
OPENGL/ES
X11 (SOFTWARE)
FB (SOFTWARE)
MORE...
EET
EMBRYO
EDJE
ELEMENTARY E-DBUS DBUS
ECORE
FILE
X11
CON
IPC
FB
EVAS
QUARTZ
INPUT
JOB
SDL
WIN32/CE
MORE...
EFREET
MEMORY (RAM)
(DATA STRUCTURES)
DATA IN STORAGE
(DISK/FLASH ETC.)
PIXELS ON A
DISPLAY
IMAGE FILES
IN STORAGE
OTHER APPLICATIONS
AND SERVICES
USER INTERACTION
AND FEEDBACK
INPUT DEVICES
AND OTHER
SYSTEM SERVICES
AND COMPONENTS
ABSTRACTED UI
COMPONENTS
FROM STORAGE
FREEDESKTOP.ORG
STANDARDS LAYER
FAST VIRTUAL
MACHINE
FOR LOGIC
AUGMENTATION
14Samsung Open Source Group
EET: Serialization of C Structure
● Something very specific to EFL
● Fast serialization library for file storage and network communication
● Store image, sounds, font
● Reduces overhead when loading the same data across multiple applications
● Provides tools to convert from and to a human readable form
● Configurations and themes are built with this library
15Samsung Open Source Group
Evas: Scene Graph Canvas
●
The brain of EFL
● Has its own scene graph and rendering library with more than 10 years of optimization work
● Provides glitch-free rendering
● Reduces overdrawing
● Deduplicates as much as possible to reduce memory waste
● Offers compressed glyph rendering
● Is portable (SDL, X11, Wayland, FB, DRM, Windows, Mac OS X, ...)
●
Has an optimized software renderer (MMX, SSE*, Neon)
● Optimized use of GPU (optional)
– Supports partial updates (assuming the driver does)
– Reduces context and texture switches as much as possible
– Reduces memory overhead
16Samsung Open Source Group
Scene Graph
Container
Container Container
Container Container
Example scene graph
17Samsung Open Source Group
Evas: Scene Graph
●
A basic scene graph rendering ascends from the bottom to the top of the tree
●
Possible optimizations
– Reorder GL operations to limit Texture and Shader changes
– Partial updates
– Cutout opaque areas
– Complete drawing operations in another thread
– Efficiently cache costly CPU operations between frames
– Deduplicate objects
18Samsung Open Source Group
Evas: Frame Delta
Computation of previous and current frame with cutout
19Samsung Open Source Group
Evas: Rendering Pipeline
Current and future rendering pipeline for Evas
20Samsung Open Source Group
Evas: Learned Experience From Our Scene Graph
● After initial startup... it's mostly bound to the memory
● Vector graphics and smooth scaled images are bound to the CPU
● It's important to optimize memory usage for both GL and software
● Deduplication of strings, images and text makes a major difference
● The compressed glyph (software) and image (GL) also make a difference
21Samsung Open Source Group
Evas: Issue With Design of Future Pipeline
● CPU and memory frequency are very important
● Evas was created when dual core CPU's were found only on high end servers
●
It's slowly evolving to take advantage of more cores
● The Linux Kernel handles it poorly on embedded devices
● Typical scenario :
1. Long periods of IO bound operations (Main loop)
2. Followed by a short need for all cores to be up and running
3. Processes are then limited by memory speed
● In this scenario, it's not capable of running at the right speed with the right number of
cores
● A lot of work is needed in the kernel before we can totally benefit from it
22Samsung Open Source Group
Edje: Theme and Layout Engine
● The heart of EFL
● Theme and layout engine
● Descriptive language
● Uses Evas for rendering logic (fully independent from the system)
● Doesn't require a FPU
● Optimizes load time (time to first frame) and run time
● Reduces memory fragmentation
23Samsung Open Source Group
Edje in Action
24Samsung Open Source Group
Elementary: Widgets Set
● Widgets toolkit
● Based on EFL infrastructure, uses Edje & Evas
● Screen and input independence achieved through :
– Scale factor
– Finger size
● Profile support (define configuration on a per Window basis)
● Fully themable
● Supports touchscreens
25Samsung Open Source Group
Many Other Useful Components
● Eina: C data types library and various system helper
● Ecore: main loop, events, network and threads infrastructure
● Eio: asynchronous Input/Output
● Emotion: video component integration
● Eeze: hot plug and device detection
● Eldbus: dbus integration library
● Efreet: Freedesktop library
● Eo: safe, fast and light object infrastructure
● Eolian: compilation time introspection infrastructure
● Elocation: geoclue integration
26Samsung Open Source Group
Bindings for all Sorts of Languages
● C++11 modern binding (RAII, lambda, …)
● Lua
● Python
● JS
● Ocaml (see http://win-builds.org)
27Samsung Open Source Group
Where is EFL Used?
28Samsung Open Source Group
First Tizen Device: Camera
Samsung NX300
29Samsung Open Source Group
Smart Watch: Gear Series
Samsung Gear 2 Samsung Gear S
30Samsung Open Source Group
Smart Phone: Z1
Samsung Z1
31Samsung Open Source Group
Smart TV
Samsung TV
32Samsung Open Source Group
Many Other Products
● Fridge
● Printer
● Medical device
● Set top box
● Home automation
● Navigation system
● More to come...
33Samsung Open Source Group
Where is EFL Going?
34Samsung Open Source Group
Improving Performance
● Faster, lighter, better
● Better support for systems without MMU
● Improve speed of software renderer (more colorspace support)
● Slowly roll in threads for CPU intensive tasks
● Improve speed of GPU renderer (more efficient packing)
● Speed up animation filter (Dedicated assembler and shader)
● Efficiently share data across processes
● Experiment with new memory layouts for Eo object
35Samsung Open Source Group
Improve Functionality
● Improve 3D scene graph inside Evas canvas (3D world, Effect, …)
● Add SVG scene graph and Vector graphics API in Evas
● Animated filters
● Improve portability (Windows, Mac OS X)
● Keep it always up to date (C++, Lua, Python, JS, Ocaml)
● Improve tests and automatic build system to improve quality
● Improve documentation
36Samsung Open Source Group
Animated Filter !
Animated bump map filter effect on an image
37Samsung Open Source Group
3D Scene Graph
Example of using current Evas 3D scene graph
38Samsung Open Source Group
The Future of Enlightenment
● X11 will be made optional by serving as a KMS/DRM Wayland Compositor
● Incorporate Elementary widgets set
● Differentiate from Qt logic to provide a library to do your own compositor
→ Enlightenment is the base to put your module in for your specific needs
● Improve support for HiDPI
● Improve modularity
● Support more upstream profiles (Tiling, mobile, TV, ...)
39Samsung Open Source Group
EFL Cheat Sheet
● Fast release cycle: 3 months
● Used in Tizen
● Will always support systems with no GPU and limited resources
● Continuous EFL benchmarking to make sure that each release improves on
the last
● Majority is licensed under LGPL
● Backend is covered under MIT license
● World wide community
40Samsung Open Source Group
Questions?
Twitter: @SamsungOSG
Email: jobs@osg.samsung.com
Slides: http://www.slideshare.net/SamsungOSG
We're Hiring!

More Related Content

What's hot

Ximea - the pc camera, 90 gflps smart camera
Ximea  - the pc camera, 90 gflps smart cameraXimea  - the pc camera, 90 gflps smart camera
Ximea - the pc camera, 90 gflps smart camera
XIMEA
 
Unity optimization techniques applied in Catan Universe
Unity optimization techniques applied in Catan UniverseUnity optimization techniques applied in Catan Universe
Unity optimization techniques applied in Catan Universe
Exozet Berlin GmbH
 
OpenGL ES and Mobile GPU
OpenGL ES and Mobile GPUOpenGL ES and Mobile GPU
OpenGL ES and Mobile GPU
Jiansong Chen
 
Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...
Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...
Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...
Umbra Software
 
Umbra Ignite 2015: Jérémy Virga – Dishonored 2 rendering engine architecture ...
Umbra Ignite 2015: Jérémy Virga – Dishonored 2 rendering engine architecture ...Umbra Ignite 2015: Jérémy Virga – Dishonored 2 rendering engine architecture ...
Umbra Ignite 2015: Jérémy Virga – Dishonored 2 rendering engine architecture ...
Umbra Software
 
Unity - Internals: memory and performance
Unity - Internals: memory and performanceUnity - Internals: memory and performance
Unity - Internals: memory and performance
Codemotion
 
2014 - Lumina DE Overview
2014 - Lumina DE Overview2014 - Lumina DE Overview
2014 - Lumina DE Overview
Ken Moore
 
Introduction to Embedded Systems a Practical Approach
Introduction to Embedded Systems a Practical ApproachIntroduction to Embedded Systems a Practical Approach
Introduction to Embedded Systems a Practical Approach
Amr Ali (ISTQB CTAL Full, CSM, ITIL Foundation)
 
Crossing platforms: bringing call of duty to mobile – Unite Copenhagen 2019
Crossing platforms: bringing call of duty to mobile – Unite Copenhagen 2019Crossing platforms: bringing call of duty to mobile – Unite Copenhagen 2019
Crossing platforms: bringing call of duty to mobile – Unite Copenhagen 2019
Unity Technologies
 
Lec 9-os-review
Lec 9-os-reviewLec 9-os-review
Lec 9-os-review
Mothi R
 
Building iPhone Apps: From Flash Lite to Corona
Building iPhone Apps: From Flash Lite to CoronaBuilding iPhone Apps: From Flash Lite to Corona
Building iPhone Apps: From Flash Lite to CoronaAnscamobile
 
West Coast DevCon 2014: Build Automation - Epic’s Build Tools & Infrastructure
West Coast DevCon 2014: Build Automation - Epic’s Build Tools & InfrastructureWest Coast DevCon 2014: Build Automation - Epic’s Build Tools & Infrastructure
West Coast DevCon 2014: Build Automation - Epic’s Build Tools & Infrastructure
Gerke Max Preussner
 

What's hot (12)

Ximea - the pc camera, 90 gflps smart camera
Ximea  - the pc camera, 90 gflps smart cameraXimea  - the pc camera, 90 gflps smart camera
Ximea - the pc camera, 90 gflps smart camera
 
Unity optimization techniques applied in Catan Universe
Unity optimization techniques applied in Catan UniverseUnity optimization techniques applied in Catan Universe
Unity optimization techniques applied in Catan Universe
 
OpenGL ES and Mobile GPU
OpenGL ES and Mobile GPUOpenGL ES and Mobile GPU
OpenGL ES and Mobile GPU
 
Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...
Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...
Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...
 
Umbra Ignite 2015: Jérémy Virga – Dishonored 2 rendering engine architecture ...
Umbra Ignite 2015: Jérémy Virga – Dishonored 2 rendering engine architecture ...Umbra Ignite 2015: Jérémy Virga – Dishonored 2 rendering engine architecture ...
Umbra Ignite 2015: Jérémy Virga – Dishonored 2 rendering engine architecture ...
 
Unity - Internals: memory and performance
Unity - Internals: memory and performanceUnity - Internals: memory and performance
Unity - Internals: memory and performance
 
2014 - Lumina DE Overview
2014 - Lumina DE Overview2014 - Lumina DE Overview
2014 - Lumina DE Overview
 
Introduction to Embedded Systems a Practical Approach
Introduction to Embedded Systems a Practical ApproachIntroduction to Embedded Systems a Practical Approach
Introduction to Embedded Systems a Practical Approach
 
Crossing platforms: bringing call of duty to mobile – Unite Copenhagen 2019
Crossing platforms: bringing call of duty to mobile – Unite Copenhagen 2019Crossing platforms: bringing call of duty to mobile – Unite Copenhagen 2019
Crossing platforms: bringing call of duty to mobile – Unite Copenhagen 2019
 
Lec 9-os-review
Lec 9-os-reviewLec 9-os-review
Lec 9-os-review
 
Building iPhone Apps: From Flash Lite to Corona
Building iPhone Apps: From Flash Lite to CoronaBuilding iPhone Apps: From Flash Lite to Corona
Building iPhone Apps: From Flash Lite to Corona
 
West Coast DevCon 2014: Build Automation - Epic’s Build Tools & Infrastructure
West Coast DevCon 2014: Build Automation - Epic’s Build Tools & InfrastructureWest Coast DevCon 2014: Build Automation - Epic’s Build Tools & Infrastructure
West Coast DevCon 2014: Build Automation - Epic’s Build Tools & Infrastructure
 

Viewers also liked

EFL: Scaling From the Embedded World to the Desktop
EFL: Scaling From the Embedded World to the DesktopEFL: Scaling From the Embedded World to the Desktop
EFL: Scaling From the Embedded World to the Desktop
Samsung Open Source Group
 
Enlightenment as Standalone Wayland Compositor
Enlightenment as Standalone Wayland CompositorEnlightenment as Standalone Wayland Compositor
Enlightenment as Standalone Wayland Compositor
Samsung Open Source Group
 
Application GUI Design
Application GUI DesignApplication GUI Design
Application GUI Design
Samsung Open Source Group
 
A Detailed Look at Cairo's OpenGL Spans Compositor Performance
A Detailed Look at Cairo's OpenGL Spans Compositor PerformanceA Detailed Look at Cairo's OpenGL Spans Compositor Performance
A Detailed Look at Cairo's OpenGL Spans Compositor Performance
Samsung Open Source Group
 
Gui application development guidelines
Gui application development guidelinesGui application development guidelines
Gui application development guidelinesLOUIS WAYNE
 
Clang: More than just a C/C++ Compiler
Clang: More than just a C/C++ CompilerClang: More than just a C/C++ Compiler
Clang: More than just a C/C++ Compiler
Samsung Open Source Group
 
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilityIoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT Interoperability
Samsung Open Source Group
 

Viewers also liked (8)

Eo fosdem 15
Eo fosdem 15Eo fosdem 15
Eo fosdem 15
 
EFL: Scaling From the Embedded World to the Desktop
EFL: Scaling From the Embedded World to the DesktopEFL: Scaling From the Embedded World to the Desktop
EFL: Scaling From the Embedded World to the Desktop
 
Enlightenment as Standalone Wayland Compositor
Enlightenment as Standalone Wayland CompositorEnlightenment as Standalone Wayland Compositor
Enlightenment as Standalone Wayland Compositor
 
Application GUI Design
Application GUI DesignApplication GUI Design
Application GUI Design
 
A Detailed Look at Cairo's OpenGL Spans Compositor Performance
A Detailed Look at Cairo's OpenGL Spans Compositor PerformanceA Detailed Look at Cairo's OpenGL Spans Compositor Performance
A Detailed Look at Cairo's OpenGL Spans Compositor Performance
 
Gui application development guidelines
Gui application development guidelinesGui application development guidelines
Gui application development guidelines
 
Clang: More than just a C/C++ Compiler
Clang: More than just a C/C++ CompilerClang: More than just a C/C++ Compiler
Clang: More than just a C/C++ Compiler
 
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilityIoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT Interoperability
 

Similar to Enlightenment Foundation Libraries (Overview)

LAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMG
Linaro
 
Trends of SW Platforms for Heterogeneous Multi-core systems and Open Source ...
Trends of SW Platforms for Heterogeneous Multi-core systems and  Open Source ...Trends of SW Platforms for Heterogeneous Multi-core systems and  Open Source ...
Trends of SW Platforms for Heterogeneous Multi-core systems and Open Source ...Seunghwa Song
 
Linux-Internals-and-Networking
Linux-Internals-and-NetworkingLinux-Internals-and-Networking
Linux-Internals-and-Networking
Emertxe Information Technologies Pvt Ltd
 
Why kernelspace sucks?
Why kernelspace sucks?Why kernelspace sucks?
Why kernelspace sucks?OpenFest team
 
Castle Game Engine and the joy of making and using a custom game engine
Castle Game Engine and the joy  of making and using a custom game engineCastle Game Engine and the joy  of making and using a custom game engine
Castle Game Engine and the joy of making and using a custom game engine
Michalis Kamburelis
 
Embedded Linux Multimedia
Embedded Linux MultimediaEmbedded Linux Multimedia
Embedded Linux MultimediaCaglar Dursun
 
Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011
Prabindh Sundareson
 
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Linaro
 
Computer graphics workbook
Computer graphics workbookComputer graphics workbook
Computer graphics workbook
Muhammadalizardari
 
Ubuntu phone engineering
Ubuntu phone engineeringUbuntu phone engineering
Ubuntu phone engineering
Rex Tsai
 
Deep Learning on ARM Platforms - SFO17-509
Deep Learning on ARM Platforms - SFO17-509Deep Learning on ARM Platforms - SFO17-509
Deep Learning on ARM Platforms - SFO17-509
Linaro
 
Heterogeneous multiprocessing on androd and i.mx7
Heterogeneous multiprocessing on androd and i.mx7Heterogeneous multiprocessing on androd and i.mx7
Heterogeneous multiprocessing on androd and i.mx7
Kynetics
 
Minko - Flash Conference #5
Minko - Flash Conference #5Minko - Flash Conference #5
Minko - Flash Conference #5Minko3D
 
Embedded Android : System Development - Part I
Embedded Android : System Development - Part IEmbedded Android : System Development - Part I
Embedded Android : System Development - Part I
Emertxe Information Technologies Pvt Ltd
 
Leveraging Android's Linux Heritage
Leveraging Android's Linux HeritageLeveraging Android's Linux Heritage
Leveraging Android's Linux Heritage
Opersys inc.
 
"The Vision API Maze: Options and Trade-offs," a Presentation from the Khrono...
"The Vision API Maze: Options and Trade-offs," a Presentation from the Khrono..."The Vision API Maze: Options and Trade-offs," a Presentation from the Khrono...
"The Vision API Maze: Options and Trade-offs," a Presentation from the Khrono...
Edge AI and Vision Alliance
 
Unite 2013 optimizing unity games for mobile platforms
Unite 2013 optimizing unity games for mobile platformsUnite 2013 optimizing unity games for mobile platforms
Unite 2013 optimizing unity games for mobile platforms
ナム-Nam Nguyễn
 
Embedded Graphics Drivers in Mesa (ELCE 2019)
Embedded Graphics Drivers in Mesa (ELCE 2019)Embedded Graphics Drivers in Mesa (ELCE 2019)
Embedded Graphics Drivers in Mesa (ELCE 2019)
Igalia
 
Arch linux and whole security concepts in linux explained
Arch linux and whole security concepts in linux explained Arch linux and whole security concepts in linux explained
Arch linux and whole security concepts in linux explained
krishna kakade
 
LCE13: Android Graphics Upstreaming
LCE13: Android Graphics UpstreamingLCE13: Android Graphics Upstreaming
LCE13: Android Graphics Upstreaming
Linaro
 

Similar to Enlightenment Foundation Libraries (Overview) (20)

LAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMG
 
Trends of SW Platforms for Heterogeneous Multi-core systems and Open Source ...
Trends of SW Platforms for Heterogeneous Multi-core systems and  Open Source ...Trends of SW Platforms for Heterogeneous Multi-core systems and  Open Source ...
Trends of SW Platforms for Heterogeneous Multi-core systems and Open Source ...
 
Linux-Internals-and-Networking
Linux-Internals-and-NetworkingLinux-Internals-and-Networking
Linux-Internals-and-Networking
 
Why kernelspace sucks?
Why kernelspace sucks?Why kernelspace sucks?
Why kernelspace sucks?
 
Castle Game Engine and the joy of making and using a custom game engine
Castle Game Engine and the joy  of making and using a custom game engineCastle Game Engine and the joy  of making and using a custom game engine
Castle Game Engine and the joy of making and using a custom game engine
 
Embedded Linux Multimedia
Embedded Linux MultimediaEmbedded Linux Multimedia
Embedded Linux Multimedia
 
Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011
 
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
 
Computer graphics workbook
Computer graphics workbookComputer graphics workbook
Computer graphics workbook
 
Ubuntu phone engineering
Ubuntu phone engineeringUbuntu phone engineering
Ubuntu phone engineering
 
Deep Learning on ARM Platforms - SFO17-509
Deep Learning on ARM Platforms - SFO17-509Deep Learning on ARM Platforms - SFO17-509
Deep Learning on ARM Platforms - SFO17-509
 
Heterogeneous multiprocessing on androd and i.mx7
Heterogeneous multiprocessing on androd and i.mx7Heterogeneous multiprocessing on androd and i.mx7
Heterogeneous multiprocessing on androd and i.mx7
 
Minko - Flash Conference #5
Minko - Flash Conference #5Minko - Flash Conference #5
Minko - Flash Conference #5
 
Embedded Android : System Development - Part I
Embedded Android : System Development - Part IEmbedded Android : System Development - Part I
Embedded Android : System Development - Part I
 
Leveraging Android's Linux Heritage
Leveraging Android's Linux HeritageLeveraging Android's Linux Heritage
Leveraging Android's Linux Heritage
 
"The Vision API Maze: Options and Trade-offs," a Presentation from the Khrono...
"The Vision API Maze: Options and Trade-offs," a Presentation from the Khrono..."The Vision API Maze: Options and Trade-offs," a Presentation from the Khrono...
"The Vision API Maze: Options and Trade-offs," a Presentation from the Khrono...
 
Unite 2013 optimizing unity games for mobile platforms
Unite 2013 optimizing unity games for mobile platformsUnite 2013 optimizing unity games for mobile platforms
Unite 2013 optimizing unity games for mobile platforms
 
Embedded Graphics Drivers in Mesa (ELCE 2019)
Embedded Graphics Drivers in Mesa (ELCE 2019)Embedded Graphics Drivers in Mesa (ELCE 2019)
Embedded Graphics Drivers in Mesa (ELCE 2019)
 
Arch linux and whole security concepts in linux explained
Arch linux and whole security concepts in linux explained Arch linux and whole security concepts in linux explained
Arch linux and whole security concepts in linux explained
 
LCE13: Android Graphics Upstreaming
LCE13: Android Graphics UpstreamingLCE13: Android Graphics Upstreaming
LCE13: Android Graphics Upstreaming
 

More from Samsung Open Source Group

The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)
Samsung Open Source Group
 
Easy IoT with JavaScript
Easy IoT with JavaScriptEasy IoT with JavaScript
Easy IoT with JavaScript
Samsung Open Source Group
 
Spawny: A New Approach to Logins
Spawny: A New Approach to LoginsSpawny: A New Approach to Logins
Spawny: A New Approach to Logins
Samsung Open Source Group
 
Rapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBRapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USB
Samsung Open Source Group
 
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT DevicesTizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Samsung Open Source Group
 
IoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and BeyondIoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and Beyond
Samsung Open Source Group
 
IoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialIoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorial
Samsung Open Source Group
 
GENIVI + OCF Cooperation
GENIVI + OCF CooperationGENIVI + OCF Cooperation
GENIVI + OCF Cooperation
Samsung Open Source Group
 
Framework for IoT Interoperability
Framework for IoT InteroperabilityFramework for IoT Interoperability
Framework for IoT Interoperability
Samsung Open Source Group
 
Open Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate StrategyOpen Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate Strategy
Samsung Open Source Group
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
Samsung Open Source Group
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Samsung Open Source Group
 
IoTivity: From Devices to the Cloud
IoTivity: From Devices to the CloudIoTivity: From Devices to the Cloud
IoTivity: From Devices to the Cloud
Samsung Open Source Group
 
SOSCON 2016 JerryScript
SOSCON 2016 JerryScriptSOSCON 2016 JerryScript
SOSCON 2016 JerryScript
Samsung Open Source Group
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
Samsung Open Source Group
 
Run Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT NetworkRun Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT Network
Samsung Open Source Group
 
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxPractical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Samsung Open Source Group
 
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/LinuxIoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
Samsung Open Source Group
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of ThingsJerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
Samsung Open Source Group
 
Introduction to Linux-wpan and Potential Collaboration
Introduction to Linux-wpan and Potential CollaborationIntroduction to Linux-wpan and Potential Collaboration
Introduction to Linux-wpan and Potential Collaboration
Samsung Open Source Group
 

More from Samsung Open Source Group (20)

The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)
 
Easy IoT with JavaScript
Easy IoT with JavaScriptEasy IoT with JavaScript
Easy IoT with JavaScript
 
Spawny: A New Approach to Logins
Spawny: A New Approach to LoginsSpawny: A New Approach to Logins
Spawny: A New Approach to Logins
 
Rapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBRapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USB
 
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT DevicesTizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
 
IoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and BeyondIoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and Beyond
 
IoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialIoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorial
 
GENIVI + OCF Cooperation
GENIVI + OCF CooperationGENIVI + OCF Cooperation
GENIVI + OCF Cooperation
 
Framework for IoT Interoperability
Framework for IoT InteroperabilityFramework for IoT Interoperability
Framework for IoT Interoperability
 
Open Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate StrategyOpen Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate Strategy
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
 
IoTivity: From Devices to the Cloud
IoTivity: From Devices to the CloudIoTivity: From Devices to the Cloud
IoTivity: From Devices to the Cloud
 
SOSCON 2016 JerryScript
SOSCON 2016 JerryScriptSOSCON 2016 JerryScript
SOSCON 2016 JerryScript
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
 
Run Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT NetworkRun Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT Network
 
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxPractical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
 
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/LinuxIoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of ThingsJerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
 
Introduction to Linux-wpan and Potential Collaboration
Introduction to Linux-wpan and Potential CollaborationIntroduction to Linux-wpan and Potential Collaboration
Introduction to Linux-wpan and Potential Collaboration
 

Recently uploaded

AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
pavan998932
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
kalichargn70th171
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 

Recently uploaded (20)

AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 

Enlightenment Foundation Libraries (Overview)

  • 1. 1Samsung Open Source Group Cedric Bail Senior Graphics Developer Samsung Open Source Group cedric@osg.samsung.com Enlightenment Foundation Libraries An UI Toolkit Designed for the Embedded World
  • 2. 2Samsung Open Source Group ● What are the Enlightenment Foundation Libraries? ● Where are they used? ● Where it is going? ● Questions?
  • 3. 3Samsung Open Source Group What is EFL?
  • 4. 4Samsung Open Source Group EFL: A Toolkit Created for Enlightenment 17
  • 5. 5Samsung Open Source Group Enlightenment 17 – Enlightenment project started in 1997 – Windows Manager – First Windows Manager of GNOME – Full rewrite started in 2001 – Primary belief is there will never be “a year of the Linux desktop” – Designed with the embedded world in mind… – … and needed a toolkit !
  • 6. 6Samsung Open Source Group Enlightenment – 17 was just the version number, we are now at 19! – Use EFL scenegraph and main loop – Not different from any other EFL application – Composite and Window Manager – Wayland client support – Multiple backend (X, FB, DRM, …) – Highly customizable (Profiles, modules and themes)
  • 7. 7Samsung Open Source Group Enlightenment Community ● The Enlightenment community – 60 uniq contributors per release (10 cores) – 1000 users that build from source – 2 distributions based on Enlightenment (Bodhi and Elive) ● The Enlightenment community expected Linux to takeoff in the embedded wo rld, not on the desktop ● The values shared by this community: ● Customizable ● Scalable ● Fast ● Light ● Feature Rich
  • 8. 8Samsung Open Source Group Enlightenment Foundation Libraries (EFL) ● Spent a decade writing a modern graphic toolkit ● Licensed under a mix of LGPL and BSD license ● Focus on embedded devices ● First release on January 2011 ● Stable, long term API/ABI ● In the process of releasing version 1.13 ● 3 month release cycle
  • 9. 9Samsung Open Source Group State of EFL ● Designed for creating a Windows Manager (WM), now used for any type of application ● Has its own scene graph and rendering library ● Optimized to reduce CPU, GPU, memory and battery usage ● Supports international language requirements (LTR/RTL, UTF8) ● Supports all variations of screens and input devices (scale factor) ● Fully Themable (layout of the application included) ● Supports profiles ● Can take up as little as 8MB of space with a minimal set of dependencies ● Has a modular design
  • 10. 10Samsung Open Source Group Why We Care About Optimization ● Moore's law doesn't apply to battery and memory bandwidth ● Most rendering operations are limited directly by memory bandwidth ● Many embedded devices have less available memory than a low end phone – Refrigerator, oven, dish washer, washing machine, home automation… ● Even a low end phone doesn't have much memory to space once you run a browser! ● GL context at best consumes 10MB, usually more around 40MB; this is bad for multitasking!
  • 11. 11Samsung Open Source Group Current State of Optimization ● Application runtime memory use is mostly driven by screen size ● EFL can fit in 8MB on disk (static compilation with minimal dependencies) ● No hard requirement on the GPU ● Enlightenment + Arch Linux combined : – 48 MB RAM – 300 Mhz (1024 x 768) – Yes, for a desktop profile!
  • 12. 12Samsung Open Source Group Under the Hood
  • 13. 13Samsung Open Source Group Bird's Eye View of EFL X11 OpenGL EINA MEMPOOL EVAS JPEG PNG GIF TIFF EET SVG MORE... XRENDER OPENGL/ES X11 (SOFTWARE) FB (SOFTWARE) MORE... EET EMBRYO EDJE ELEMENTARY E-DBUS DBUS ECORE FILE X11 CON IPC FB EVAS QUARTZ INPUT JOB SDL WIN32/CE MORE... EFREET MEMORY (RAM) (DATA STRUCTURES) DATA IN STORAGE (DISK/FLASH ETC.) PIXELS ON A DISPLAY IMAGE FILES IN STORAGE OTHER APPLICATIONS AND SERVICES USER INTERACTION AND FEEDBACK INPUT DEVICES AND OTHER SYSTEM SERVICES AND COMPONENTS ABSTRACTED UI COMPONENTS FROM STORAGE FREEDESKTOP.ORG STANDARDS LAYER FAST VIRTUAL MACHINE FOR LOGIC AUGMENTATION
  • 14. 14Samsung Open Source Group EET: Serialization of C Structure ● Something very specific to EFL ● Fast serialization library for file storage and network communication ● Store image, sounds, font ● Reduces overhead when loading the same data across multiple applications ● Provides tools to convert from and to a human readable form ● Configurations and themes are built with this library
  • 15. 15Samsung Open Source Group Evas: Scene Graph Canvas ● The brain of EFL ● Has its own scene graph and rendering library with more than 10 years of optimization work ● Provides glitch-free rendering ● Reduces overdrawing ● Deduplicates as much as possible to reduce memory waste ● Offers compressed glyph rendering ● Is portable (SDL, X11, Wayland, FB, DRM, Windows, Mac OS X, ...) ● Has an optimized software renderer (MMX, SSE*, Neon) ● Optimized use of GPU (optional) – Supports partial updates (assuming the driver does) – Reduces context and texture switches as much as possible – Reduces memory overhead
  • 16. 16Samsung Open Source Group Scene Graph Container Container Container Container Container Example scene graph
  • 17. 17Samsung Open Source Group Evas: Scene Graph ● A basic scene graph rendering ascends from the bottom to the top of the tree ● Possible optimizations – Reorder GL operations to limit Texture and Shader changes – Partial updates – Cutout opaque areas – Complete drawing operations in another thread – Efficiently cache costly CPU operations between frames – Deduplicate objects
  • 18. 18Samsung Open Source Group Evas: Frame Delta Computation of previous and current frame with cutout
  • 19. 19Samsung Open Source Group Evas: Rendering Pipeline Current and future rendering pipeline for Evas
  • 20. 20Samsung Open Source Group Evas: Learned Experience From Our Scene Graph ● After initial startup... it's mostly bound to the memory ● Vector graphics and smooth scaled images are bound to the CPU ● It's important to optimize memory usage for both GL and software ● Deduplication of strings, images and text makes a major difference ● The compressed glyph (software) and image (GL) also make a difference
  • 21. 21Samsung Open Source Group Evas: Issue With Design of Future Pipeline ● CPU and memory frequency are very important ● Evas was created when dual core CPU's were found only on high end servers ● It's slowly evolving to take advantage of more cores ● The Linux Kernel handles it poorly on embedded devices ● Typical scenario : 1. Long periods of IO bound operations (Main loop) 2. Followed by a short need for all cores to be up and running 3. Processes are then limited by memory speed ● In this scenario, it's not capable of running at the right speed with the right number of cores ● A lot of work is needed in the kernel before we can totally benefit from it
  • 22. 22Samsung Open Source Group Edje: Theme and Layout Engine ● The heart of EFL ● Theme and layout engine ● Descriptive language ● Uses Evas for rendering logic (fully independent from the system) ● Doesn't require a FPU ● Optimizes load time (time to first frame) and run time ● Reduces memory fragmentation
  • 23. 23Samsung Open Source Group Edje in Action
  • 24. 24Samsung Open Source Group Elementary: Widgets Set ● Widgets toolkit ● Based on EFL infrastructure, uses Edje & Evas ● Screen and input independence achieved through : – Scale factor – Finger size ● Profile support (define configuration on a per Window basis) ● Fully themable ● Supports touchscreens
  • 25. 25Samsung Open Source Group Many Other Useful Components ● Eina: C data types library and various system helper ● Ecore: main loop, events, network and threads infrastructure ● Eio: asynchronous Input/Output ● Emotion: video component integration ● Eeze: hot plug and device detection ● Eldbus: dbus integration library ● Efreet: Freedesktop library ● Eo: safe, fast and light object infrastructure ● Eolian: compilation time introspection infrastructure ● Elocation: geoclue integration
  • 26. 26Samsung Open Source Group Bindings for all Sorts of Languages ● C++11 modern binding (RAII, lambda, …) ● Lua ● Python ● JS ● Ocaml (see http://win-builds.org)
  • 27. 27Samsung Open Source Group Where is EFL Used?
  • 28. 28Samsung Open Source Group First Tizen Device: Camera Samsung NX300
  • 29. 29Samsung Open Source Group Smart Watch: Gear Series Samsung Gear 2 Samsung Gear S
  • 30. 30Samsung Open Source Group Smart Phone: Z1 Samsung Z1
  • 31. 31Samsung Open Source Group Smart TV Samsung TV
  • 32. 32Samsung Open Source Group Many Other Products ● Fridge ● Printer ● Medical device ● Set top box ● Home automation ● Navigation system ● More to come...
  • 33. 33Samsung Open Source Group Where is EFL Going?
  • 34. 34Samsung Open Source Group Improving Performance ● Faster, lighter, better ● Better support for systems without MMU ● Improve speed of software renderer (more colorspace support) ● Slowly roll in threads for CPU intensive tasks ● Improve speed of GPU renderer (more efficient packing) ● Speed up animation filter (Dedicated assembler and shader) ● Efficiently share data across processes ● Experiment with new memory layouts for Eo object
  • 35. 35Samsung Open Source Group Improve Functionality ● Improve 3D scene graph inside Evas canvas (3D world, Effect, …) ● Add SVG scene graph and Vector graphics API in Evas ● Animated filters ● Improve portability (Windows, Mac OS X) ● Keep it always up to date (C++, Lua, Python, JS, Ocaml) ● Improve tests and automatic build system to improve quality ● Improve documentation
  • 36. 36Samsung Open Source Group Animated Filter ! Animated bump map filter effect on an image
  • 37. 37Samsung Open Source Group 3D Scene Graph Example of using current Evas 3D scene graph
  • 38. 38Samsung Open Source Group The Future of Enlightenment ● X11 will be made optional by serving as a KMS/DRM Wayland Compositor ● Incorporate Elementary widgets set ● Differentiate from Qt logic to provide a library to do your own compositor → Enlightenment is the base to put your module in for your specific needs ● Improve support for HiDPI ● Improve modularity ● Support more upstream profiles (Tiling, mobile, TV, ...)
  • 39. 39Samsung Open Source Group EFL Cheat Sheet ● Fast release cycle: 3 months ● Used in Tizen ● Will always support systems with no GPU and limited resources ● Continuous EFL benchmarking to make sure that each release improves on the last ● Majority is licensed under LGPL ● Backend is covered under MIT license ● World wide community
  • 40. 40Samsung Open Source Group Questions? Twitter: @SamsungOSG Email: jobs@osg.samsung.com Slides: http://www.slideshare.net/SamsungOSG We're Hiring!