Skip to content

[Impeller] Extend coverage API for filters to allow supplying input coverage Rects #105810

@bdero

Description

@bdero

Currently, filters resolve coverage rectangles from inputs directly, but there are situations where it's convenient to be able to fetch coverage prior to assigning filter inputs. For example, with backdrop filters, the input for the filter is the parent pass texture. However, the size of the parent pass texture is in part determined by the output size of the filter itself. If its a kernel filter that may expand or contract the texture size (such as Blur and Erode), the parent pass layer should also expand or contract in size.

This circular coverage dependency can be resolved by changing the EntityPass coverage resolution to:

  1. Compute the subpass coverage as it currently does.
  2. Pass the unfiltered coverage rectangle through the coverage routine of the subpass backdrop filter.
  3. Intersect with the SaveLayer bounds rect as usual, if one was given.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work listc: renderingUI glitches reported at the engine/skia or impeller rendering levele: impellerImpeller rendering backend issues and features requestsengineflutter/engine related. See also e: labels.team-engineOwned by Engine teamtriaged-engineTriaged by Engine team

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions