A transform for either a picture cache or external compositor surface, stored
in the CompositeState structure. This allows conversions from local rects
to raster or device rects, without access to the spatial tree (e.g. during
the render step where dirty rects are calculated). Since we know that we only
handle scale and offset transforms for these types, we can store a single
ScaleOffset rather than 4x4 matrix here for efficiency.
Describes information about drawing a primitive as a compositor surface.
For now, we support only YUV images as compositor surfaces, but in future
this will also support RGBA images.
This struct exists to provide a Default impl and allow #[serde(skip)]
on the two frame vectors. Unfortunately FrameVec does not have a Default
implementation (vectors only implement it with the global allocator).
An ExternalSurfaceDescriptor that has had image keys
resolved to texture handles. This contains all the
information that the compositor step in renderer
needs to know.
Describes the source surface information for a tile to be composited. This
is the analog of the TileSurface type, with target surface information
resolved such that it can be used by the renderer.
This is a representation of CompositorConfig without the Compositor trait
present. This allows it to be freely copied to other threads, such as the render
backend where the frame builder can access it.
Defines an interface to a native (OS level) compositor. If supplied
by the client application, then picture cache slices will be
composited by the OS compositor, rather than drawn via WR batches.
Defines an interface to a non-native (application-level) Compositor which handles
partial present. This is required if webrender must query the backbuffer’s age.
TODO: Use the Compositor trait for native and non-native compositors, and integrate
this functionality there.