Essos
Essos is a library making it simple to create applications that run either as native EGL or Wayland clients. It is a companion to Westeros.
Features
- Simple C API
- Hides the complexity and drudge work required to write a Wayland client
- Hides EGL platform glue
- GLES2 rendering
- Keyboard, pointer, multi-touch input
- Display size discovery/change notification
- Display mode setting (with KMS)
Implementations
- Broadcom
- Intel
- RaspberryPi (Userland or vc4graphics)
- Amlogic
- Realtek
- iMX
- Anything supporting KMS+DRM
Direct EGL or Wayland
- Applications written to Essos API produces a binary that can execute as either a Direct EGL application or as a Wayland client.
- Essos will auto-detect Wayland
- Choose Wayland/Direct EGL programmatically
Application Model
- Fullscreen apps
- Window management provided externally
- Wayland compositor
- Spark
- With a top-level compositor like Spark, a rich multi-window UX can be created using Westeros embedded compositors to contain Essos apps
User Input
- Linux standard input, key codes, etc.
- Register callback for what you want:
- Keys
- Pointer
- Multi-Touch
- Settings
Graphics
- Rendering with GLES2
- EGL setup: automatic or as controlled as desired
- EssContextGetEGLContextAttributes
- EssContextSetEGLContextAttributes
- EssContextGetEGLSurfaceAttributes
- EssContextSetEGLSurfaceAttributes
- Graphics updates committed with EssContextUpdateDisplay
Minimal App
ctx= EssContextCreate();
EssContextStart(ctx);
for( ; ; )
{
render();
EssContextUpdateDisplay(ctx);
EssContextRunEventLoopOnce(ctx);
}
EssContextDestroy();
Essos and Westeros
- Essos is part of Westeros
- Essos apps can run with or without a Wayland compositor
- Wayland compositor could be ‘normal’ or nested/embedded
Future
- Essos Resource Manager
- Provide multi-process coordination of scarce resources like video decoders
- Will be used by Westeros sink
Requirements
- Linux
- GLES2
- EGL