diff --git a/src/gpu/ops/GrTextureOp.cpp b/src/gpu/ops/GrTextureOp.cpp index a5c051d9ef..4f49cea272 100644 --- a/src/gpu/ops/GrTextureOp.cpp +++ b/src/gpu/ops/GrTextureOp.cpp @@ -696,15 +696,17 @@ private: if (GrAAType::kCoverage == this->aaType()) { fAAType = static_cast(GrAAType::kNone); aaFlags = GrQuadAAFlags::kNone; - // We may have had a strict constraint with nearest filter solely due to - // possible AA bloat. In that case it's no longer necessary. - if (constraint == SkCanvas::kStrict_SrcRectConstraint && - fFilter == GrSamplerState::Filter::kNearest) { - constraint = SkCanvas::kFast_SrcRectConstraint; - } } } } + // We may have had a strict constraint with nearest filter solely due to possible AA bloat. + // If we don't have (or determined we don't need) coverage AA then we can skip using a + // domain. + if (constraint == SkCanvas::kStrict_SrcRectConstraint && + fFilter == GrSamplerState::Filter::kNearest && + this->aaType() != GrAAType::kCoverage) { + constraint = SkCanvas::kFast_SrcRectConstraint; + } const auto& draw = fDraws.emplace_back(srcRect, quad, aaFlags, constraint, color); this->setBounds(bounds, HasAABloat::kNo, IsZeroArea::kNo); fDomain = static_cast(draw.domain());