Skip to content

Sparse Strips v0.2.0

Choose a tag to compare

@LaurenzV LaurenzV released this 07 Aug 11:05
· 30 commits to main since this release
7073a85

This release has an MSRV of 1.88.

Vello CPU

Vello CPU is our 2D renderer which doesn't use a GPU.
The imaging model exposed by Vello CPU is very similar to that of current Vello.

Crates.io | Docs

This implementation is now broadly usable, with a reasonably complete imaging model and competitive performance.
It does not, however, have any API stability guarantees, as we intend to redesign the API to be consistent across the Vello renderers.
Performance information can be seen at https://laurenzv.github.io/vello_chart/ (although this URL is not time-locked, so it might show results from a slightly newer or older version than this tag).

Fixed

Optimized

  • Multi-threaded render contexts now initialize task dispatch lazily on the first drawing operation, avoiding unnecessary setup for empty frames and after resets. (#1787 by @LaurenzV, @yezhizhen)

Vello Hybrid

This release is a minor release of Vello Hybrid, which uses the CPU for preprocessing and the GPU for rasterization. The imaging model exposed by Vello Hybrid is very similar to that of current Vello.

Crates.io | Docs

This implementation is in its early stages and does not yet provide any API stability guarantees (see the roadmap for more details). It also doesn't have feature parity with Vello CPU. A few known issues remain, which we plan to address soon.

Added

  • Support for sampling from external textures through Scene::draw_texture_rects in the webgl backend, bringing it to parity with the wgpu backend. Textures are bound at render time through the new WebGlTextureBindings. (#1792 by @grebmeg)
  • ProbeResult::statistics, ProbeStatistics, and ProbeFeature for diagnosing which renderer-probe features and pixels differ from the reference output. (#1779 by @LaurenzV)
  • PROBE_ELEMENTS for inspecting the active features used by the WebGL compatibility probe. (#1801 by @LaurenzV)

Changed

  • Breaking change: Renderer::new, Renderer::new_with, WebGlRenderer::new, and WebGlRenderer::new_with now return the renderer and its associated Resources as a tuple. Resources can no longer be constructed directly and must only be used with the renderer instance that generated it. (#1794 by @LaurenzV)
  • Breaking change: Scene::new_with now takes a Level instead of RenderSettings. (#1794 by @LaurenzV)
  • Breaking change: WebGlRenderer::render and WebGlRenderer::render_to_atlas now take WebGlTextureBindings, providing the external textures referenced by the scene. Pass &WebGlTextureBindings::new() if the scene does not use any. (#1792 by @grebmeg)
  • Breaking change: Image-atlas allocation errors now include allocation and free-space diagnostics, while intermediate-texture failures use the new IntermediateTextureError variants for oversized allocations and texture-count limits. (#1778 by @grebmeg)

Fixed

  • Image tints with zero opacity now make the image fully transparent. (#1791 by @LaurenzV)
  • WebGL image-atlas allocation and growth on Mali-G52 GPUs, avoiding application-not-responding errors. (#1800 by @grebmeg)

Optimized

  • WebGL intermediate textures are destroyed before resized replacements are allocated, reducing peak texture memory while render targets grow. (#1781 by @LaurenzV)

Vello Common

This release also contains Vello Common, a support crate used by Vello CPU and Vello Hybrid.

Crates.io | Docs

Vello Common itself does not currently have any stable API surface, as it is only an implementation detail of Vello CPU and Vello Hybrid.

Added

  • ProbeResult::statistics, ProbeStatistics, and ProbeFeature for diagnosing which renderer-probe features and pixels differ from the reference output. (#1779 by @LaurenzV)
  • PROBE_ELEMENTS for inspecting the active features used by the shared probe scene. (#1801 by @LaurenzV)

Changed

  • Breaking change: AtlasError variants now report configured limits and allocation sizes, with the new AtlasSpaceDiagnostics and AtlasLayerDiagnostics types providing per-layer free-space, utilization, and fragmentation details. (#1778 by @grebmeg)

Vello Sparse Shaders

This release also contains Vello Sparse Shaders, a support crate used by Vello Hybrid.

Crates.io | Docs

This crate does not currently have any stable API guarantees.

Full Changelog: sparse-strips-v0.1.0...sparse-strips-v0.2.0

Contributors