5 releases (breaking)
| 0.68.0 | Jan 28, 2026 |
|---|---|
| 0.61.0 | Jan 15, 2020 |
| 0.60.0 | Feb 18, 2019 |
| 0.58.0 | Jan 3, 2019 |
| 0.0.0 | Aug 14, 2018 |
#500 in Graphics APIs
6,642 downloads per month
Used in skryn
4.5MB
85K
SLoC
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.
Dependencies
~4–12MB
~248K SLoC