aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrTextureProxy.cpp
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2018-02-09 10:49:23 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-02-09 16:14:51 +0000
commit3b2ebbb2d49d41553ff17d64202e2046b1af1560 (patch)
treed8b617014c9bf9a0943031a9c97251cbb72bdd26 /src/gpu/GrTextureProxy.cpp
parent1fabd51f585383b0f7b8f82c4489989e9379627b (diff)
When querying mipmapped on proxies return targets state if possible
In the non-ddl world where we are still using lazy proxies, we may create those proxies with no mipmaps, but when we instantiate them immediately we end up getting a surface with mips. This allows future queries on that proxy to take advatage of the fact that we actaully have mips. For lazy ddl proxies, this makes it work in a world where we may decide to uninstantiate the proxies and we continue to track the request mip level as well as the actually one from instantiation. Bug: skia: Change-Id: I4824e74d5e2a2fdf860709c85469aa8cf74632d5 Reviewed-on: https://skia-review.googlesource.com/106121 Commit-Queue: Greg Daniel <egdaniel@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src/gpu/GrTextureProxy.cpp')
-rw-r--r--src/gpu/GrTextureProxy.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/gpu/GrTextureProxy.cpp b/src/gpu/GrTextureProxy.cpp
index d15b611edb..834d92b345 100644
--- a/src/gpu/GrTextureProxy.cpp
+++ b/src/gpu/GrTextureProxy.cpp
@@ -118,9 +118,16 @@ GrSamplerState::Filter GrTextureProxy::highestFilterMode() const {
return GrSamplerState::Filter::kMipMap;
}
+GrMipMapped GrTextureProxy::mipMapped() const {
+ if (this->priv().isInstantiated()) {
+ return this->priv().peekTexture()->texturePriv().mipMapped();
+ }
+ return fMipMapped;
+}
+
size_t GrTextureProxy::onUninstantiatedGpuMemorySize() const {
return GrSurface::ComputeSize(this->config(), this->width(), this->height(), 1,
- this->mipMapped(), !this->priv().isExact());
+ this->texPriv().proxyMipMapped(), !this->priv().isExact());
}
void GrTextureProxy::setUniqueKey(GrProxyProvider* proxyProvider, const GrUniqueKey& key) {
@@ -149,7 +156,7 @@ void GrTextureProxy::validateLazySurface(const GrSurface* surface) {
// Anything that is checked here should be duplicated in GrTextureRenderTargetProxy's version
SkASSERT(surface->asTexture());
- SkASSERT(GrMipMapped::kNo == this->mipMapped() ||
+ SkASSERT(GrMipMapped::kNo == this->texPriv().proxyMipMapped() ||
GrMipMapped::kYes == surface->asTexture()->texturePriv().mipMapped());
}
#endif