[Impeller] Don't use transient stencil buffers for passes with advanced blends#33413
Conversation
|
It looks like this pull request may not have tests. Please make sure to add tests before merging. If you need an exemption to this rule, contact Hixie on the #hackers channel in Chat (don't just cc him here, he won't see it! He's on Discord!). If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix? Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. |
| static RenderTarget CreateMSAA(const Context& context, | ||
| std::shared_ptr<Texture> resolve_texture, | ||
| std::string label = "Offscreen"); | ||
| static RenderTarget CreateOffscreen( |
There was a problem hiding this comment.
In a later patch perhaps, we should consider creating a render target builder that makes it easy to set up render targets with commonly used configurations. The argument list here is getting out of hand already.
There was a problem hiding this comment.
Agreed, added a bug for this: flutter/flutter#104006
|
Sorry for the trouble: you'll need to pull in master/main to at least 9867003 to get linux_host to pass |
f491dc6 to
f083703
Compare
This change fixes an Metal validation failure on iOS.
When using advanced blends, we need to persist (store/load) the stencil over multiple RenderPasses, which means the stencil can't be memoryless in this situation.