Crate webrender

Source
Expand description

A GPU based renderer for the web.

It serves as an experimental render backend for Servo, but it can also be used as such in a standalone application.

§External dependencies

WebRender currently depends on FreeType

§Api Structure

The main entry point to WebRender is the crate::Renderer.

By calling Renderer::new(...) you get a Renderer, as well as a RenderApiSender. Your Renderer is responsible to render the previously processed frames onto the screen.

By calling yourRenderApiSender.create_api(), you’ll get a RenderApi instance, which is responsible for managing resources and documents. A worker thread is used internally to untie the workload from the application thread and therefore be able to make better use of multicore systems.

§Frame

What is referred to as a frame, is the current geometry on the screen. A new Frame is created by calling set_display_list() on the RenderApi. When the geometry is processed, the application will be informed via a RenderNotifier, a callback which you pass to Renderer::new. More information about stacking contexts.

set_display_list() also needs to be supplied with BuiltDisplayLists. These are obtained by finalizing a DisplayListBuilder. These are used to draw your geometry. But it doesn’t only contain trivial geometry, it can also store another StackingContext, as they’re nestable.

Re-exports§

  • pub extern crate api;
  • pub extern crate euclid;
  • pub use api as webrender_api;

Structs§

Enums§

Constants§

Statics§

Traits§

  • Allows callers to hook into the main render_backend loop and provide additional frame ops for generate_frame transactions. These functions are all called from the render backend thread.
  • Defines the interface for hooking up an external profiler to WR.
  • The interfaces that an application can implement to handle ProgramCache update
  • Allows callers to hook in at certain points of the async scene build. These functions are all called from the scene builder thread.

Functions§

  • Creates heap-allocated strings for both vertex and fragment shaders. Public to be accessible to tests.
  • Set the profiler callbacks, or None to disable the profiler. This function must only ever be called before any WR instances have been created, or the hooks will not be set.