Skip to main content

Crate vello_gpu

Crate vello_gpu 

Source
Expand description

A GPU renderer for 2D vector graphics with CPU-side preprocessing.

Vello GPU uses the Sparse Strips architecture to divide work between CPU preprocessing and GPU rendering:

  • The CPU processes paths, tiles, and schedules sparse strips.
  • The GPU rasterizes those strips and performs compositing.
  • The compact strip representation limits data transfer between them.

§Key Features

  • Efficient path rendering with CPU-side processing
  • GPU-accelerated compositing and blending
  • Support for both windowed and headless rendering

§Feature Flags

  • wgpu (enabled by default): Enables the GPU rendering backend via wgpu and includes the required Vello GPU shaders.
  • wgpu_default (enabled by default): Enables wgpu with its default hardware backends (such as Vulkan, Metal, and DX12).
  • text (enabled by default): Enables glyph rendering (Scene::glyph_run).
  • webgl: Enables the WebGL rendering backend for browser support, using GLSL shaders for compatibility.

If you need to customize the set of enabled wgpu features, disable this crate’s default features then enable its wgpu feature. You can then depend on wgpu directly, setting the specific features you require. Don’t forget to also disable wgpu’s default features.

§Architecture

The renderer is split into several key components:

  • Scene: Manages the render context and path processing on the CPU
  • Renderer or WebGlRenderer: Handles GPU resource management and executes draw operations

See the individual module documentation for more details on usage and implementation.

§Current state

Vello GPU is a solid GPU-accelerated 2D renderer with broad, reliable feature support. Although it does not match the compute-centric vello renderer’s raw performance on dynamic and vector-heavy workloads, it provides excellent performance on workloads that benefit from GPU acceleration, such as images, gradients, and filters. Overall, we still consider it to be slightly less mature than its CPU-only counterpart Vello CPU.

Vello GPU remains under active development. Known limitations include:

  • The following features are not yet supported and will panic: Mask layers, complex filter graphs as well as certain blend modes for non-isolated blending.
  • Parts of the API and its documentation are still suboptimal, for example the lifecycle and ownership of external resources through Resources.
  • Some exposed features remain experimental and are not recommended for use, including glyph caching. Experimental APIs are identified in their method documentation.
  • Parts of the rendering pipeline are not yet fully optimized, particularly the wgpu backend, but also other aspects.
  • Some failures panic instead of being reported through a user-facing error.

With that said, we are continuously improving Vello GPU and will address these and other limitations in future releases.

§Package rename

This package was previously named vello_hybrid. New dependencies and Rust imports should use vello_gpu; no compatibility re-export package is provided in this repository. Existing crates.io releases under vello_hybrid remain available, and publication under the new name may lag behind the repository rename.

Re-exports§

pub use text::GlyphRunBuilder;
pub use util::DimensionConstraints;

Modules§

filter_effects
Filter effects API based on the W3C Filter Effects specification.
geometry
Geometry utilities.
peniko
A Rust 2D graphics type library
util
A number of utility helper methods.

Structs§

AtlasConfig
Configuration for multiple atlas support.
AtlasId
Unique identifier for an atlas.
AtlasLayerDiagnostics
Free-space details for one atlas texture-array layer.
AtlasTextureInfo
Current allocation state of the WebGL image/glyph atlas textures.
CellStatistics
Summary of the differences between one expected and actual probe cell.
Config
Configuration for the GPU renderer.
GpuStrip
A GPU strip instance for rendering.
ImageId
Opaque image handle
LayersConfig
Configuration for temporary textures used to render layers and effects.
Mask
A mask.
MemorySettings
Settings controlling usage of GPU memory.
PixelMetadata
Metadata about the pixels of an image.
Pixmap
A pixmap of premultiplied RGBA8 values backed by u8.
ProbeResult
Probe failure output.
RectU16
An axis-aligned rectangle with u16 coordinates, stored as two corners (x0, y0) and (x1, y1).
RenderSettings
Settings to apply to the render context.
RenderSize
Dimensions of the rendering target.
RenderState
A render state which contains the style properties for path rendering.
RenderTargetConfig
Options for the renderer
Renderer
Vello GPU’s renderer.
Resources
Persistent resources required by Vello GPU for rendering.
Scene
A render context for GPU rendering.
SizeU16
A size represented by two 16-bit unsigned integers.
TextureBindings
Runtime bindings for externally owned textures sampled by image paints.
TextureId
A handle to an external, user-provided texture.
Tint
A tint applied to image paints.
Transforms
Context for holding transforms for paths and paints.
WebGlPendingProbe
A WebGL probe whose pixel readback has been queued but not completed.
WebGlRenderer
Vello GPU’s WebGL2 renderer.
WebGlRendererInit
WebGL renderer initialization that may still be compiling shader programs.
WebGlTextureBindings
Runtime bindings for externally owned textures sampled by image paints.
WebGlTextureWithDimensions
Wrapper for WebGlTexture with known dimensions.

Enums§

AllocationStrategy
Strategy for allocating images across multiple atlases.
AtlasError
Errors that can occur during atlas operations.
AtlasSpaceDiagnostics
Free-space details collected after an atlas allocation fails.
ClearSettings
Controls how the output target is cleared before drawing.
ImageSource
Bitmap source used by Image.
IncompatibleContextReason
Reasons a WebGL context can be incompatible with the renderer.
IntermediateTextureError
Errors that can occur while allocating intermediate textures.
Level
The level enum with the specific SIMD capabilities available.
Pixels
The result of attempting to extract RGB8 data from a Pixmap.
Probe
Result of running the renderer probe.
ProbeFeature
A feature exercised by the renderer probe.
RenderError
Errors that can occur during rendering.
TintMode
How tint color is applied to an image.
WebGlContextOperation
WebGL context operations.
WebGlDataTransferOperation
WebGL data-transfer operations.
WebGlError
Errors produced by the WebGL backend.
WebGlOperation
A fallible operation performed by the WebGL backend.
WebGlProbeError
Error returned while running a WebGL probe.
WebGlProbeOperation
WebGL renderer probe operations.
WebGlProbeStatus
Result of polling the WebGL probe.
WebGlRendererInitStatus
Result of polling WebGL renderer initialization.
WebGlResourceKind
Kinds of WebGL resources.
WebGlShaderInterfaceOperation
Shader interface operations.
WebGlShaderProgramOperation
Shader compilation and program linking operations.
WebGlShaderStage
WebGL shader stages.

Constants§

ALL_PROBE_ELEMENTS
All elements available for use in a probe.

Traits§

AtlasWriter
Trait for types that can write image data directly to the atlas texture.
WebGlAtlasWriter
Trait for types that can write image data directly to the atlas texture in WebGL.

Type Aliases§

GlyphRunBuilder
A glyph run builder.
Image
An image.
PaintType
A kind of paint that can be used for filling and stroking shapes.
TargetInit
Controls whether existing target contents are preserved or cleared before drawing.