Skip to content

A Wayland GL demo app with precise input and output timings

License

Notifications You must be signed in to change notification settings

ppaalanen/oring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Oring

Oring is a work title for a from-scratch Wayland application whose purpose has changed over time.

Currently oring-cal, poorly named as it was meant to be something else, is aiming to become an example of how to write a Wayland application, that:

  • Has a proper main event loop using the thread-safe Wayland client API.
  • Reacts to wl_seat and wl_output removals.
  • Predicts accurately the time when the output frame will be displayed.
  • Falls back to guessing if prediction is not available.
  • Rendering is event-triggered, not a CPU&GPU hog like with stupid games.
  • Supports triggering rendering from frame callback if more rendering time is needed.
  • Uses EGL and GL for the rendering.
  • Uses big OpenGL (apparently the myth of GL ES only might still live).
  • GL rendering happens in a thread outside of the main thread.
  • Has a trivial physical model controlling the rendered scene.
  • The physical model uses the predicted presentation timestamp for the rendered scene; use a predicted scene state.
  • Input affects the physical simulation.
  • Handles input based on the timestamps, not by the moment of receive.
  • Predicts pointer motion for the predicted presentation time when pointer is controlling the physical model.
  • Draws statistics of frame timings.
  • The scene is complicated enough that rendering actually takes a bit of time, just for the sake of emulating something more than a glxgears-level of work load.
  • Accommodates when rendering rate cannot keep up with the display.

Obviously, there is a long to way to go.

About

A Wayland GL demo app with precise input and output timings

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published