aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrRenderTargetContext.cpp
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2018-05-25 10:08:05 -0400
committerGravatar Stephen White <senorblanco@chromium.org>2018-05-26 18:36:12 +0000
commitd8eb7b6b12d5b155214031d4aa4d8f582ebb91a1 (patch)
tree0c5de84e88769d346345910a1eb4bea5bd3fba36 /src/gpu/GrRenderTargetContext.cpp
parent16b1eab9bab992785a9c8dd780b42e6ed76a5dc0 (diff)
Reland "Turn off domain in GrTextureOp when src rect contains entire proxy"
This is a reland of 869433fa113d1573d5d91fcafdca413b247ce1b0 Original change's description: > Turn off domain in GrTextureOp when src rect contains entire proxy > > Move check for turning off domain when nearest/no-aa to GrRenderTargetContext. > > Change-Id: I3c071b5f73fb3134218453204f30c3020c9dad9a > Reviewed-on: https://skia-review.googlesource.com/130143 > Reviewed-by: Robert Phillips <robertphillips@google.com> > Commit-Queue: Brian Salomon <bsalomon@google.com> Change-Id: I29a21e26de8a246a74bd40fd0cda044f8f18327e Reviewed-on: https://skia-review.googlesource.com/130307 Reviewed-by: Stephen White <senorblanco@chromium.org>
Diffstat (limited to 'src/gpu/GrRenderTargetContext.cpp')
-rw-r--r--src/gpu/GrRenderTargetContext.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/gpu/GrRenderTargetContext.cpp b/src/gpu/GrRenderTargetContext.cpp
index f4db697e41..456d8e4a82 100644
--- a/src/gpu/GrRenderTargetContext.cpp
+++ b/src/gpu/GrRenderTargetContext.cpp
@@ -776,13 +776,22 @@ void GrRenderTargetContext::drawTexture(const GrClip& clip, sk_sp<GrTextureProxy
if (filter != GrSamplerState::Filter::kNearest && !must_filter(srcRect, dstRect, viewMatrix)) {
filter = GrSamplerState::Filter::kNearest;
}
+ GrAAType aaType = this->chooseAAType(aa, GrAllowMixedSamples::kNo);
+ if (constraint == SkCanvas::kStrict_SrcRectConstraint) {
+ // No need to use a texture domain with nearest filtering unless there is AA bloating.
+ // Also, no need if the srcRect contains the entire texture.
+ if (filter == GrSamplerState::Filter::kNearest && aaType != GrAAType::kCoverage) {
+ constraint = SkCanvas::kFast_SrcRectConstraint;
+ } else if (srcRect.contains(proxy->getWorstCaseBoundsRect())) {
+ constraint = SkCanvas::kFast_SrcRectConstraint;
+ }
+ }
SkRect clippedDstRect = dstRect;
SkRect clippedSrcRect = srcRect;
if (!crop_filled_rect(this->width(), this->height(), clip, viewMatrix, &clippedDstRect,
&clippedSrcRect)) {
return;
}
- GrAAType aaType = this->chooseAAType(aa, GrAllowMixedSamples::kNo);
bool allowSRGB = SkToBool(this->colorSpaceInfo().colorSpace());
this->addDrawOp(clip, GrTextureOp::Make(std::move(proxy), filter, color, clippedSrcRect,
clippedDstRect, aaType, constraint, viewMatrix,