Skip to content

[Impeller] Complete support for conic path segments #163563

@flar

Description

@flar

impeller::Path now allows you to insert conic curves into the path (as of this PR), but it uses a very basic "conic to 2 quadratics" conversion method to implement them. This is a very simplistic way to handle them, only really being sufficient for 90 degree circular types of conic, and really we should be computing how many quads to break into, or to interpolate the conic directly.

Note that while implementing even the simplistic support we discovered that portions of Flutter were handing in degenerate conics and so our simple calculation was creating "dirty outlines" with extremely tiny perturbations that freaked out the stroking code. These same unnecessary perturbations were also happening with the Skia code we were replacing, and we had accepted the ugly outlines into the goldens, but when the new code was generating slightly different perturbations (because it was not implemented with vectorized math instructions), we received new golden failures. We implemented a simple work around for those conics as can be seen in this commit from that PR

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work listc: proposalA detailed proposal for a change to Fluttere: impellerImpeller rendering backend issues and features requestsengineflutter/engine related. See also e: labels.r: fixedIssue is closed as already fixed in a newer versionteam-engineOwned by Engine teamtriaged-engineTriaged by Engine team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions