Skip to content

Conversation

@raphlinus
Copy link
Contributor

No description provided.

Also added a screenshot from Laurenz Stampfl's thesis.
Copy link
Member

@DJMcNab DJMcNab left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some first-pass comments.

Overall this looks good. It's a reminder that brevity in these isn't a bad thing!

</figure>

We released version [0.0.4 of the sparse strips][sparse strips 0.0.4] versions of the renderer.
It should be a solid version of vello_cpu, suitable for a wider range of applications where CPU-only rendering is appropriate.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
It should be a solid version of vello_cpu, suitable for a wider range of applications where CPU-only rendering is appropriate.
It should be a solid version of Vello CPU, suitable for a wider range of applications where CPU-only rendering is appropriate.

We could also consider linking to Vello CPU on crates.io here, although I'm more hesitant to do the same for Vello Hybrid...

Suggested change
It should be a solid version of vello_cpu, suitable for a wider range of applications where CPU-only rendering is appropriate.
It should be a solid version of [Vello CPU](https://crates.io/crates/vello_cpu), suitable for a wider range of applications where CPU-only rendering is appropriate.


Thomas Smith has been making excellent progress on rendering sparse strip alpha values in GPU compute shaders.
This was the original motivation for the sparse strip work.
You can follow the progress in the Zulip thread [Thoughts on GPU sparse strips].
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you think about:

Suggested change
You can follow the progress in the Zulip thread [Thoughts on GPU sparse strips].
You can follow the progress in the Zulip thread [#vello > Thoughts on GPU sparse strips].

or even

Suggested change
You can follow the progress in the Zulip thread [Thoughts on GPU sparse strips].
You can follow the progress in [#vello > Thoughts on GPU sparse strips].

Comment on lines 39 to 40
Work on Vello Classic focused on support for web standard compatibility, motivated by Servo integration.
Those features include support for non-premultiplied alpha ([vello#1173][], [vello#1262][], [vello#1145][]).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We probably need something like:

This has been released in Vello v0.6.0, which also upgraded to wgpu v26 for compatibility with Bevy v0.17.

Comment on lines 38 to 46

Work on Vello Classic focused on support for web standard compatibility, motivated by Servo integration.
Those features include support for non-premultiplied alpha ([vello#1173][], [vello#1262][], [vello#1145][]).

Vello CPU now supports non-isolated blending ([vello#1159][] among others), which is important for HTML5 canvas compatibility.
SVG and COLRv1 emoji, by contrast, which has set priorities for Vello in the past, only support isolated blending.
There are also promising early results for supporting image filters including blurs.

A major development in Vello Hybrid is support for multiple image atlases ([vello#1252][]), which improves performance for image rendering.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that the order of paragraphs in this section might not be optimal. I bounced off it bit reading it because it jumps from Sparse Strips to Vello Classic back to sparse strips.

It lets you build user interfaces declaratively by composing lightweight views together, and will diff them to provide minimal updates to a retained layer.

We released [version 0.4][Xilem 0.4.0] of both Masonry and Xilem in October.
This release comprises 7 crates, including xilem_web.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This release comprises 7 crates, including xilem_web.
This release comprises 7 crates, including Xilem Web.

maybe?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here I was going for the crate name, but I'll make this change, it makes sense to be consistent.

A major development in Vello Hybrid is support for multiple image atlases ([vello#1252][]), which improves performance for image rendering.


## Masonry and Xilem
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't mind having this be fairly short, especially as the GitHub release has all of the highlights.

We could say something about Masonry having greatly improved documentation, but I also think that's a hard message to land coherently alongside "Xilem's documentation is still awful".

Linebender is thrilled to have other UI toolkits in the ecosystem adopt our crates.

Much of the development work on Parley is directed toward supporting HTML floats, particularly in Blitz.
[parley#421][] is the main PR tracking this work, and references several other PRs.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missed link reference definition (we really should get markdownlint set up)

## Fearless SIMD

Fearless SIMD is our SIMD infrastructure library.
It provides a solid way for writing SIMD operations portably across WASM, Aarch64, x86, and x86_64.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
It provides a solid way for writing SIMD operations portably across WASM, Aarch64, x86, and x86_64.
It provides a solid way for writing SIMD operations portably across Wasm, AArch64, x86, and x86_64.

I don't particularly like that capitalisation for WebAssembly, but it seems to be how it's stylised.

Also bump publication date.
@raphlinus raphlinus marked this pull request as ready for review November 10, 2025 15:43
Copy link
Member

@DJMcNab DJMcNab left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nits around crate names, and a missing link to the Vello release.

There is something to be said about how our proliferation of two-word crate names impacts how clear it is that they're an atomic unit, but that's neither here nor there. That is, it's our current policy to refer to crates with their capitalised name except in code or when using a shorthand like xilem#513 to refer to an issue.

Otherwise, this looks good to me (pending the rename to fix the date)

Vello is our GPU vector renderer.
It can draw large 2D scenes with high performance, using GPU compute shaders for most of the work.

Laurenz Stampl has done his Masters degree at ETH Zurich on high performance CPU rendering of 2D graphics, particularly the techniques used in vello_cpu.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Laurenz Stampl has done his Masters degree at ETH Zurich on high performance CPU rendering of 2D graphics, particularly the techniques used in vello_cpu.
Laurenz Stampl has done his Masters degree at ETH Zurich on high performance CPU rendering of 2D graphics, particularly the techniques used in Vello CPU.


We released version [0.0.4 of the sparse strips][sparse strips 0.0.4] versions of the renderer.
It should be a solid version of [Vello CPU](https://crates.io/crates/vello_cpu), suitable for a wider range of applications where CPU-only rendering is appropriate.
In addition, it is the initial release of vello_hybrid, a newer approach that uses the GPU to do pixel compositing, but SIMD-accelerated geometry processing on the CPU.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
In addition, it is the initial release of vello_hybrid, a newer approach that uses the GPU to do pixel compositing, but SIMD-accelerated geometry processing on the CPU.
In addition, it is the initial release of Vello Hybrid, a newer approach that uses the GPU to do pixel compositing, but SIMD-accelerated geometry processing on the CPU.


Work on Vello Classic focused on support for web standard compatibility, motivated by Servo integration.
Those features include support for non-premultiplied alpha ([vello#1173][], [vello#1262][], [vello#1145][]).
This has been released in Vello v0.6.0, which also upgraded to wgpu v26 for compatibility with Bevy v0.17.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This has been released in Vello v0.6.0, which also upgraded to wgpu v26 for compatibility with Bevy v0.17.
This has been released in Vello [v0.6.0](https://github.com/linebender/vello/releases/tag/v0.6.0), which also upgraded to wgpu v26 for compatibility with Bevy v0.17.

(You might want to make that be a link reference definition)

[parley#421][] is the main PR tracking this work, and references several other PRs.

There has also been some performance work, which especially impacts larger paragraphs.
This work continues, and we hope to publish quantitative benchmark results in November.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this referring to? Is this the addition of Parley to Cosmic Text's benchmarks?


As development work, we are pursuing a new approach to using intrinsics safely inside `#[target_feature]` blocks: [fearless_simd#108].
[Safe SIMD intrinsics](https://blog.rust-lang.org/2025/05/15/Rust-1.87.0/#safe-architecture-intrinsics) were added in Rust 1.87, and we encourage using them when writing architecture-specific code.
An explicit design goal of fearless_simd is to allow portable code in cases where the functionality is reasonably common across architectures, but also facilitate "downcasting" to a specific SIMD level when those intrinsics offer higher performance than the portable choice.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
An explicit design goal of fearless_simd is to allow portable code in cases where the functionality is reasonably common across architectures, but also facilitate "downcasting" to a specific SIMD level when those intrinsics offer higher performance than the portable choice.
An explicit design goal of Fearless SIMD is to allow portable code in cases where the functionality is reasonably common across architectures, but also facilitate "downcasting" to a specific SIMD level when those intrinsics offer higher performance than the portable choice.

@raphlinus raphlinus merged commit ae71451 into main Nov 13, 2025
2 checks passed
@raphlinus raphlinus deleted the tmil-22 branch November 13, 2025 15:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants