vello_hybrid: fast-path premultiplied color matrices#1625
Draft
waywardmonkeys wants to merge 4 commits into
Draft
vello_hybrid: fast-path premultiplied color matrices#1625waywardmonkeys wants to merge 4 commits into
waywardmonkeys wants to merge 4 commits into
Conversation
Collaborator
Author
|
This was done with the assistance of Codex (GPT 5.5, xhigh). |
Collaborator
Author
|
This is a draft as it builds upon PR #1623, adding an optimization present there for the CPU renderer to the Hybrid renderer. |
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.
This adds a
vello_hybridshader fast path for color matrices that can be applied directly in premultiplied-alpha space.For RGB-only, alpha-preserving matrices with no RGB offsets,
ColorMatrixno longer needs to unpremultiply each sampled pixel, apply the matrix in straight-alpha space, then premultiply again. Instead, hybrid marks those matrices in the encoded filter header and the shader applies the RGB rows directly to premultiplied RGB, clamps the result to[0, alpha], and preserves alpha.This covers matrices such as grayscale and sepia while keeping the existing general path for matrices with RGB offsets, alpha reads, or alpha changes.