SlideShare a Scribd company logo
1 of 40
Download to read offline
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 cameraXIMEA
 
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 UniverseExozet Berlin GmbH
 
OpenGL ES and Mobile GPU
OpenGL ES and Mobile GPUOpenGL ES and Mobile GPU
OpenGL ES and Mobile GPUJiansong 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 performanceCodemotion
 
2014 - Lumina DE Overview
2014 - Lumina DE Overview2014 - Lumina DE Overview
2014 - Lumina DE OverviewKen Moore
 
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 2019Unity Technologies
 
Lec 9-os-review
Lec 9-os-reviewLec 9-os-review
Lec 9-os-reviewMothi 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 & InfrastructureGerke 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

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 LMGLinaro
 
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
 
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 engineMichalis 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 - GFX2011Prabindh 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 GalloLinaro
 
Ubuntu phone engineering
Ubuntu phone engineeringUbuntu phone engineering
Ubuntu phone engineeringRex 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-509Linaro
 
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.mx7Kynetics
 
Minko - Flash Conference #5
Minko - Flash Conference #5Minko - Flash Conference #5
Minko - Flash Conference #5Minko3D
 
Leveraging Android's Linux Heritage
Leveraging Android's Linux HeritageLeveraging Android's Linux Heritage
Leveraging Android's Linux HeritageOpersys 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 UpstreamingLinaro
 

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
 
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 USBSamsung 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 DevicesSamsung 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 BeyondSamsung 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 tutorialSamsung 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 StrategySamsung 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 DeviceSamsung 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 IoTivitySamsung 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 LinuxSamsung 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/LinuxSamsung 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 ThingsSamsung 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 CollaborationSamsung 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

Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptrcbcrtm
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineeringssuserb3a23b
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 

Recently uploaded (20)

Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.ppt
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Odoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting ServiceOdoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting Service
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineering
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 

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!