[−][src]Crate webrender
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
BuiltDisplayList
s. 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 webrender_api; |
pub use webrender_api as api; |
pub use webrender_api::euclid; |
Structs
BinaryRecorder | |
CpuProfile | |
DebugFlags | |
Device | |
ExternalImage | The data that an external client should provide about an external image. The timestamp is used to test if the renderer should upload new texture data this frame. For instance, if providing video frames, the application could call wr.render() whenever a new video frame is ready. If the callback increments the returned timestamp for a given image, the renderer will know to re-upload the image data to the GPU. Note that the UV coords are supplied in texel-space! |
GpuProfile | |
GraphicsApiInfo | |
PipelineInfo | |
ProgramBinary | |
ProgramCache | |
RenderResults | Return type from render(), which contains some repr(C) statistics as well as some non-repr(C) data. |
Renderer | The renderer is responsible for submitting to the GPU the work prepared by the RenderBackend. |
RendererOptions | |
RendererStats | Some basic statistics about the rendered scene, used in Gecko, as well as in wrench reftests to ensure that tests are batching and/or allocating on render targets as we expect them to. |
ShaderPrecacheFlags | |
Shaders | |
WrShaders |
Enums
ChasePrimitive | |
ExternalImageSource | |
GraphicsApi | |
RendererKind |
Constants
FRAMES_BEFORE_PICTURE_CACHING | |
MAX_VERTEX_TEXTURE_WIDTH |
Statics
WEBRENDER_RECORDING_HEADER |
Traits
ApiRecordingReceiver | |
AsyncPropertySampler | 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. |
ExternalImageHandler | The interfaces that an application can implement to support providing external image buffers. When the the application passes an external image to WR, it should kepp that external image life time. People could check the epoch id in RenderNotifier at the client side to make sure that the external image is not used by WR. Then, do the clean up for that external image. |
OutputImageHandler | Allows callers to receive a texture with the contents of a specific pipeline copied to it. Lock should return the native texture handle and the size of the texture. Unlock will only be called if the lock() call succeeds, when WR has issued the GL commands to copy the output to the texture handle. |
ProfilerHooks | Defines the interface for hooking up an external profiler to WR. |
ProgramCacheObserver | The interfaces that an application can implement to handle ProgramCache update |
SceneBuilderHooks | Allows callers to hook in at certain points of the async scene build. These functions are all called from the scene builder thread. |
ThreadListener |
Functions
set_profiler_hooks | 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. |