949ceb249f
and improve perspective handling in rest of quad pipeline This function produces 0, 1, or 2 quads clipped to w > 0, with proper local coords. To make its signature a little easier to reason about, I added a simple 'DrawQuad' struct that represents the combination of device and local coordinates, and edge AA flags. I am open to suggestions for the name. GrQuad::bounds() remains perspective aware so that it is always correct. I updated CropToRect to check for w < 0 and not attempt to crop in that scenario. Theoretically, we could clip to w = 0 first and then go through the CropToRect optimization path. However, with the current state of the GrFillRectOp and GrTextureOp, that made it more annoying to have the bulk APIs handle the w clipping as well. So for now, the w plane clipping is entirely the responsibility of the ops. A benefit of this approach is that GrRenderTargetContext doesn't need to be modified, and in the case where the clipping produces 2 quads they are automatically put in the same op w/o going through any batching code. However, it is becoming clear to me that managing 4 effective code paths (fill + texture X simple + bulk API) is more maintenance than it's worth. I added skbug:9869 to work out how to simplify these op creation APIs further, and if we succeed there, I think it will make applying the W plane clipping more convenient as well. For now, since this affects SkiaRenderer on Linux stable, I am pushing for correctness. Bug: skia:9779, chromium:224618 Change-Id: I4218a956cbe0bbc2b5c9cf133a069d54c93848e8 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/268686 Commit-Queue: Michael Ludwig <michaelludwig@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com> |
||
---|---|---|
animations | ||
bench | ||
bin | ||
build/fuchsia | ||
build_overrides | ||
dm | ||
docker | ||
docs/examples | ||
example | ||
experimental | ||
fuzz | ||
gm | ||
gn | ||
include | ||
infra | ||
modules | ||
platform_tools | ||
resources | ||
samplecode | ||
site | ||
specs | ||
src | ||
tests | ||
third_party | ||
tools | ||
.clang-format | ||
.clang-tidy | ||
.gitignore | ||
.gn | ||
AUTHORS | ||
BUILD.gn | ||
codereview.settings | ||
CONTRIBUTING | ||
CQ_COMMITTERS | ||
DEPS | ||
go.mod | ||
go.sum | ||
LICENSE | ||
OWNERS | ||
PRESUBMIT.py | ||
public.bzl | ||
README | ||
README.chromium | ||
RELEASE_NOTES.txt | ||
whitespace.txt |
Skia is a complete 2D graphic library for drawing Text, Geometries, and Images. See full details, and build instructions, at https://skia.org.