Don't avoid disabling subset for planar image draws
Change-Id: Icb34f14d1103a7849813d4b80e7733ba9b743a99
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/302638
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/SkGpuDevice_drawTexture.cpp b/src/gpu/SkGpuDevice_drawTexture.cpp
index 08017ea..d482797 100644
--- a/src/gpu/SkGpuDevice_drawTexture.cpp
+++ b/src/gpu/SkGpuDevice_drawTexture.cpp
@@ -35,7 +35,7 @@
}
//////////////////////////////////////////////////////////////////////////////
-// Helper functions for dropping src rect constraint in bilerp mode.
+// Helper functions for dropping src rect subset in bilerp mode.
static const SkScalar kColorBleedTolerance = 0.001f;
@@ -79,17 +79,17 @@
return inner != outer;
}
-static bool can_ignore_bilerp_constraint(const GrTextureProducer& producer,
- const SkRect& srcRect,
- const SkMatrix& srcRectToDeviceSpace,
- int numSamples) {
+static bool can_ignore_bilerp_subset(const GrTextureProducer& producer,
+ const SkRect& srcSubset,
+ const SkMatrix& srcRectToDeviceSpace,
+ int numSamples) {
if (srcRectToDeviceSpace.rectStaysRect()) {
// sampling is axis-aligned
SkRect transformedRect;
- srcRectToDeviceSpace.mapRect(&transformedRect, srcRect);
+ srcRectToDeviceSpace.mapRect(&transformedRect, srcSubset);
- if (has_aligned_samples(srcRect, transformedRect) ||
- !may_color_bleed(srcRect, transformedRect, srcRectToDeviceSpace, numSamples)) {
+ if (has_aligned_samples(srcSubset, transformedRect) ||
+ !may_color_bleed(srcSubset, transformedRect, srcRectToDeviceSpace, numSamples)) {
return true;
}
}
@@ -446,10 +446,10 @@
// Check for optimization to drop the src rect constraint when on bilerp.
if (!doBicubic && fm == GrSamplerState::Filter::kBilerp && restrictToSubset &&
- coordsAllInsideSrcRect && !producer->isPlanar()) {
+ coordsAllInsideSrcRect) {
SkMatrix combinedMatrix;
combinedMatrix.setConcat(ctm, srcToDst);
- if (can_ignore_bilerp_constraint(*producer, src, combinedMatrix, rtc->numSamples())) {
+ if (can_ignore_bilerp_subset(*producer, src, combinedMatrix, rtc->numSamples())) {
restrictToSubset = false;
}
}