Skip to content

Latest commit

 

History

History
32 lines (23 loc) · 1.15 KB

rendering.md

File metadata and controls

32 lines (23 loc) · 1.15 KB

🦉 Rendering Pipeline 🦉

We explain here how Owl is designed, from the perspective of its rendering pipeline.

Warning: these notes are technical by nature, and intended for people working on Owl (or interested in understanding its design).

Overview

A rendering occurs in two phases:

  • virtual rendering: this generates the virtual dom in memory, asynchronously
  • patch: applies a virtual tree to the screen (synchronously)

There are several classes involved in a rendering:

  • components
  • a scheduler
  • fibers: small objects containing some metadata, associated with a rendering of a specific component

Components are organized in a dynamic component tree, visible in the user interface. Whenever a rendering is initiated in a component C:

  • a fiber is created on C with the rendering props information
  • the virtual rendering phase starts on C (will asynchronously render all the child components)
  • the fiber is added to the scheduler, which will poll continuously, every animation frame, if the fiber is done
  • once it is done, the scheduler will call the task callback, which will apply the patch (if it was not cancelled in the meantime).