Skip to content

Impeller: Strange issue with path fills #157885

@lyceel

Description

@lyceel

Using the new Impeller interop toolkit, and I've run into a fairly elusive issue that causes path fills to not be drawn when they should.

The issue seems to involve interactions between transforms, clip regions, and the DisplayListBuilder save stack. After adding lots of logging, I've reduced the issue down to a fairly simple example: https://gist.github.com/lyceel/de6d80caffb3c209d3dadbdfd10447de

With the code as it is, the path is not filled at all:

incorrect

If either the rounded rectangle's transform (Option 1 comment), or the unused clip (Option 2) are commented out, the path is filled properly with red:

correct

I recognize that the simple solution would be to remove the useless save/clip/restore block in the middle, but this is much more difficult to prevent in the real-world use case where this issue was discovered.

Metadata

Metadata

Assignees

Labels

customer: googleVarious Google teamse: impellerImpeller rendering backend issues and features requestse: libimpellerThe standalone Impeller library with a single-header API.engineflutter/engine related. See also e: labels.r: fixedIssue is closed as already fixed in a newer versionteam-engineOwned by Engine team

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions