[Impeller] Give filters responsibility over creating passes
No semantic change beyond debug labels and resource creation order. This just moves filter pass creation down the stack from FilterContents::RenderToSnapshot to virtual FilterContents::RenderFilter.
- Filters now create their own render passes and return a snapshot.
- Most filters now resolve their inputs before creating their own textures/render passes.
- The pass textures now have identifiable labels.
This allows filters to:
- Avoid creating textures when not necessary.
- Passthrough inputs, including in cases where the input only needs to be transformed.
- Do arbitrary pass encoding (blit passes, multiple render passes, etc.)
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.