Remove cumulative paint layer limit - #790
Open
VladimirKras wants to merge 2 commits into
Open
Conversation
Dense scenes could silently stop emitting requested clip and effect layers after crossing the global limit, corrupting later content. Always preserve the layer stack and cover the previous cutoff with a recording-scene regression test. Assisted-by: Codex/GPT-5
nicoburns
requested changes
Aug 25, 2026
nicoburns
left a comment
Member
There was a problem hiding this comment.
This seems reasonable, but can we ditch the test please.
Vello Classic and Vello Hybrid both still have issues with resource allocation, but this isn't really guarding against it effectively.
Author
|
Sorry about the useless test. Dropped it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
Dense scenes silently stop emitting requested clip and effect layers once cumulative painting crosses the nominal 1,024-layer limit, so later content is painted with the wrong layer stack and becomes visibly corrupted even when frame rate is healthy. The cap is enforced in backend-independent paint code, so it affects CPU and GPU renderers alike.
Why the cap can be removed
The cap was introduced at 28 in 596d419 as a workaround for Vello #644, then raised to 1,024 in c74b019. Vello fixed the underlying empty-clip encoding bug in Vello #651, merged in August 2024; Blitz now uses Vello 0.10.0, so retaining the old global workaround causes silent data loss without protecting current renderers from that historical bug.
Changes
Validation
cargo test -p blitz-paint --libcargo clippy -p blitz-paint --no-deps -- -D warningscargo fmt --all -- --checkgit diff --checkThe workspace Clippy command currently stops on an unrelated existing
needless_returnwarning atpackages/blitz-dom/src/mutator.rs:1218with Rust 1.96.1; the affected crate passes Clippy with dependency linting disabled.Note
AI-assistance disclosure: this change and PR description were prepared with assistance from Codex/GPT-5 and reviewed by the submitter.
WPT results
No changes in test results compared to
main.Generated by the WPT workflow.