Allow subpixel nested rects to have nearly equal x/y half widths
When transforming to device space, equal local-space half widths in X
and Y might end up being fractionally different, which would prevent
optimizing the nested rect path to use the stroke aa rect op. Visually,
these very small differences are not going to be noticeable and the op
can just arbitrarily pick one of the two widths to use for coverage.
Also fixed an issue where if the aa stroke op returned null from
MakeNested(), drawSimplifiedShape() assumed it meant nothing needed to
be drawn. After https://skia-review.googlesource.com/c/skia/+/427976,
this actually isn't the case and it should attempt path rendering for
the unbalanced subpixel nested rects.
In the linked bug's case, the square rects would not transform to
identical x and y half widths depending on the UI scale of the browser
(differing by a negligible amount). This would then return a null op
and skip falling back to the path renderer so nothing would draw.
Bug: chromium:1234194
Change-Id: Ibd4254cb37e0fc01a5da342e06c4d82cb6223fe8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/447462
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
3 files changed