Don't drop mip map mode in GrTextureOp->GrTextureEffect fallback
Change-Id: I900345ba52605c3b3e0f077655ec5c25bab01b9c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/337721
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
diff --git a/src/gpu/ops/GrTextureOp.cpp b/src/gpu/ops/GrTextureOp.cpp
index 60b99be..ca85bfd 100644
--- a/src/gpu/ops/GrTextureOp.cpp
+++ b/src/gpu/ops/GrTextureOp.cpp
@@ -1145,23 +1145,25 @@
color, saturate, aaType, std::move(quad), subset);
} else {
// Emulate complex blending using GrFillRectOp
+ GrSamplerState samplerState(GrSamplerState::WrapMode::kClamp, filter, mm);
GrPaint paint;
paint.setColor4f(color);
paint.setXPFactory(SkBlendMode_AsXPFactory(blendMode));
std::unique_ptr<GrFragmentProcessor> fp;
+ const auto& caps = *context->priv().caps();
if (subset) {
- const auto& caps = *context->priv().caps();
SkRect localRect;
if (quad->fLocal.asRect(&localRect)) {
fp = GrTextureEffect::MakeSubset(std::move(proxyView), alphaType, SkMatrix::I(),
- filter, *subset, localRect, caps);
+ samplerState, *subset, localRect, caps);
} else {
fp = GrTextureEffect::MakeSubset(std::move(proxyView), alphaType, SkMatrix::I(),
- filter, *subset, caps);
+ samplerState, *subset, caps);
}
} else {
- fp = GrTextureEffect::Make(std::move(proxyView), alphaType, SkMatrix::I(), filter);
+ fp = GrTextureEffect::Make(std::move(proxyView), alphaType, SkMatrix::I(), samplerState,
+ caps);
}
fp = GrColorSpaceXformEffect::Make(std::move(fp), std::move(textureXform));
fp = GrBlendFragmentProcessor::Make(std::move(fp), nullptr, SkBlendMode::kModulate);