efl on wayland
play

EFL on Wayland Rafael Antognolli October, 22th - 2013 Wayland - PowerPoint PPT Presentation

EFL on Wayland Rafael Antognolli October, 22th - 2013 Wayland Simpler replacement for X Core protocol + extensions Weston is the reference compositor Toolkits (EFL, Qt, GTK) implement the client API EFL Enlightenment


  1. EFL on Wayland Rafael Antognolli October, 22th - 2013

  2. Wayland • Simpler replacement for X • Core protocol + extensions • Weston is the reference compositor • Toolkits (EFL, Qt, GTK) implement the client API

  3. EFL – Enlightenment Foundation Libraries • Base libraries of Enlightenment 0.17 (soon 0.18) • Yet another toolkit library, just like Qt and GTK • Split among several libraries/modules: • Evas • Ecore • Elementary • Edje, Eina, Emotion...

  4. What's a Wayland Backend? • In other words, why we need a Wayland backend? We need it to: • Create Wayland windows • Draw widgets into those windows • Expose Wayland-specific APIs • In summary: it allows us to run EFL applications on Wayland

  5. EFL – Wayland Architecture

  6. Work against a moving target • Wayland started in 2008 • Became freedesktop.org project in October, 2010 • EFL backend started in 2011 • Initial SHM backend in December, 14 th 2011 • First Wayland release (0.85) in February, 2012 • Wayland 1.0 released in October, 2012

  7. Frame sync • Frame callback from Wayland • Avoid unnecessary repaints • Avoid blocking the mainloop • Avoid tearing, sync with display update • Implemented in SHM backend first, EGL backend a few months later

  8. SHM triple-buffering • Wayland_SHM engine rewrite • Buffer management moved to Evas engine • Better organization: swapper, buffer and engine

  9. Client-side decorations: introduction • Client renders title bar, buttons and borders • Content must be shifted • Decorations and content cannot overlap

  10. Client-side decorations: first solution • Objects moved by an offset • Master clipper for client area • Window decorations added 0

  11. Client-side decorations: Elementary layouts • Several bugs related to CSD • Fix one case, breaks another one • Elementary will handle all of that for us 1

  12. Client-side decorations: Elementary layouts • Several bugs related to CSD • Fix one case, breaks another one • Elementary will handle all of that for us • Breaks non-elementary apps 2

  13. Client-side decorations: crazy proposal • Using an Ecore_Evas inside another Ecore_Evas • Would fix non-elementary apps • Fix all the problems in the world 3

  14. Client-side decorations: render offset and no clipper • New proposal: put offsets down in the render tree • Affects every Evas object • Needs changes to input coordinates • Needs changes to window decorations 4

  15. Client-side decorations: render offset and no clipper • New proposal: put offsets down in the render tree • Affects every Evas object • Needs changes to input coordinates • Needs changes to window decorations • Ended up bringing back the clipper 5

  16. Multi-touch • Code was there already, not tested • Bugs were found after testing • Needed hardware • Developed with ssh + borrowed laptop 6

  17. Input Methods • Openismus added Input Method support on Wayland • Submitted patches for EFL and IBus too • Eduardo (Etrunko) polished and integrated them 7

  18. Window/Surface Rotation • Simply were not implemented • Copy & paste code from X11 backends • Not using buffer transforms yet 8

  19. Surfaces • Just like “windows” in X11 • Rectangular area, with position, size and pixel contents • Managed by the compositor • Support different types of rendering: • Rendered in a SHM buffer • Directly with EGL 9

  20. Subsurfaces • Always placed relatively to the main surface • Can be updated in sync with the main surface • Uses: • Faster video decoding • Offload compositing work from clients to compositor • Allows to pass buffer (YUV) processing to dedicated overlay hardware • Popups • Surface is not limited to the main surface area 0

  21. Subsurfaces – main features • Sharing API with X11 backends • Video_Surface API • Auto-detection/usage of subsurfaces • API exposed – highly customizable use 1

  22. Subsurfaces - autodetection • For a specific image object, use subsurfaces “when possible” • Some checks are done on the image: • The image is not being clipped • The image is not being scaled • The image remains inside the main surface area • Other conditions might be specified or relaxed later • If conditions are not met, use a pixel buffer as fallback • Seamless transition to/from subsurface 2

  23. Drag'n Drop and Copy'n Paste • CnP fully functional • DnD functional inside the same window • Still needs a common API for Wayland and X 3

  24. Future Plans • Need more common APIs: • DnD, CnP, window handling • More subsurface features as they become available • A common “surface layer” that abstracts the underlying backend • Video backends of Emotion (video library) must use subsurfaces 4

  25. Questions? • Contact: • IRC: #wayland-efl @ freenode • https://lists.sourceforge.net/lists/listinfo/enlightenment-devel • http://www.enlightenment.org/ • rafael.antognolli@intel.com 5

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend