Add "GrMipMapped" parameter to visitProxies
This will allow us to detect textures that need their mipmap levels
regenerated, and resolve them before executing the command buffer.
Bug: skia:
Change-Id: I65a1cd2b2d5ba2247d1c4a613ce9ba85b8d02377
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/215142
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
diff --git a/src/gpu/ops/GrCopySurfaceOp.h b/src/gpu/ops/GrCopySurfaceOp.h
index 0b7f532..794a7f5 100644
--- a/src/gpu/ops/GrCopySurfaceOp.h
+++ b/src/gpu/ops/GrCopySurfaceOp.h
@@ -25,7 +25,9 @@
const char* name() const override { return "CopySurface"; }
- void visitProxies(const VisitProxyFunc& func) const override { func(fSrc.get()); }
+ void visitProxies(const VisitProxyFunc& func) const override {
+ func(fSrc.get(), GrMipMapped::kNo);
+ }
#ifdef SK_DEBUG
SkString dumpInfo() const override {
diff --git a/src/gpu/ops/GrLatticeOp.cpp b/src/gpu/ops/GrLatticeOp.cpp
index 79cbc61..c133de4 100644
--- a/src/gpu/ops/GrLatticeOp.cpp
+++ b/src/gpu/ops/GrLatticeOp.cpp
@@ -171,7 +171,8 @@
const char* name() const override { return "NonAALatticeOp"; }
void visitProxies(const VisitProxyFunc& func) const override {
- func(fProxy.get());
+ bool mipped = (GrSamplerState::Filter::kMipMap == fFilter);
+ func(fProxy.get(), GrMipMapped(mipped));
fHelper.visitProxies(func);
}
diff --git a/src/gpu/ops/GrOp.h b/src/gpu/ops/GrOp.h
index 1c6f6e0..92a35a2 100644
--- a/src/gpu/ops/GrOp.h
+++ b/src/gpu/ops/GrOp.h
@@ -69,7 +69,7 @@
virtual const char* name() const = 0;
- typedef std::function<void(GrSurfaceProxy*)> VisitProxyFunc;
+ using VisitProxyFunc = std::function<void(GrSurfaceProxy*, GrMipMapped)>;
virtual void visitProxies(const VisitProxyFunc&) const {
// This default implementation assumes the op has no proxies
diff --git a/src/gpu/ops/GrSimpleMeshDrawOpHelper.h b/src/gpu/ops/GrSimpleMeshDrawOpHelper.h
index 9bd3902..3650fc5 100644
--- a/src/gpu/ops/GrSimpleMeshDrawOpHelper.h
+++ b/src/gpu/ops/GrSimpleMeshDrawOpHelper.h
@@ -107,7 +107,7 @@
friend class GrSimpleMeshDrawOpHelper;
};
- void visitProxies(const std::function<void(GrSurfaceProxy*)>& func) const {
+ void visitProxies(const GrOp::VisitProxyFunc& func) const {
if (fProcessors) {
fProcessors->visitProxies(func);
}
diff --git a/src/gpu/ops/GrSmallPathRenderer.cpp b/src/gpu/ops/GrSmallPathRenderer.cpp
index e7f6a5a..db62c17 100644
--- a/src/gpu/ops/GrSmallPathRenderer.cpp
+++ b/src/gpu/ops/GrSmallPathRenderer.cpp
@@ -278,7 +278,7 @@
const sk_sp<GrTextureProxy>* proxies = fAtlas->getProxies();
for (uint32_t i = 0; i < fAtlas->numActivePages(); ++i) {
SkASSERT(proxies[i]);
- func(proxies[i].get());
+ func(proxies[i].get(), GrMipMapped::kNo);
}
}
diff --git a/src/gpu/ops/GrTextureOp.cpp b/src/gpu/ops/GrTextureOp.cpp
index 11ee9e2..330ee88 100644
--- a/src/gpu/ops/GrTextureOp.cpp
+++ b/src/gpu/ops/GrTextureOp.cpp
@@ -193,7 +193,8 @@
void visitProxies(const VisitProxyFunc& func) const override {
for (unsigned p = 0; p < fProxyCnt; ++p) {
- func(fProxies[p].fProxy);
+ bool mipped = (GrSamplerState::Filter::kMipMap == this->filter());
+ func(fProxies[p].fProxy, GrMipMapped(mipped));
}
}