[graphite] Handle complex rrect coverage in fragment shader

Instead of having each corner calculate vertices and coverage
independently, which requires very careful and brittle placement of
vertices when corners start to intersect, switch to evaluating
coverage for all corners per pixel. It also changes the linear
coverage to be calculated from 4 interpolated edge distances (L<->R
and T<->B). Within the fragment shader, if needed, these values can
reconstruct relative position to each corner's circle or ellipse, and
be adjusted to calculate inner distance of a stroke.

Since this is increased work per pixel, the fill triangles are
adjusted to skip all per-pixel work when they have non-zero area.
Fill style and solid interior styles utilize this. Strokes do not, but
the complexity around placing one ring of inner vertices on the base
shape and the fill vertices on the AA inset is gone. For strokes the
fill vertices and inner vertices will always be coincident.

Bug: b/260715571
Bug: b/266448854
Bug: b/266450701
Bug: b/266443584

Change-Id: I1c86378d89df2a5e8dc400cc0a57db4280c98a09
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/640887
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Arman Uguray <armansito@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
10 files changed