Created on January 27, 2021, Last modified on September 05, 2023

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
Go To Top