aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrTextureProducer.cpp
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2018-07-20 10:30:48 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-20 17:23:16 +0000
commit8e9b4c47575cd468d345e7b3a0e7ba17d21d42fc (patch)
tree8dbcdfdb16b44d19f5aa5df74b4398a5d6f95a83 /src/gpu/GrTextureProducer.cpp
parentfa072043631970f27f9f337a0cfd6ddecff1c75b (diff)
Reland "Don't require mips in GrTextureProducer if texture is 1x1."
This reverts commit c861eee3a6f1f93ad3df27b8be94f44b245bd128. Reason for revert: Relanding with fix for gray8 not copyable Original change's description: > Revert "Don't require mips in GrTextureProducer if texture is 1x1." > > This reverts commit 5191fd7555d34225ef771ad4cac65bcbbb50a89c. > > Reason for revert: breaking angle > > Original change's description: > > Don't require mips in GrTextureProducer if texture is 1x1. > > > > Bug: chromium:862921 > > Change-Id: I5f3584ad36e160a5a09d0a37e31e147155076b4d > > Reviewed-on: https://skia-review.googlesource.com/142586 > > Reviewed-by: Brian Osman <brianosman@google.com> > > Reviewed-by: Brian Salomon <bsalomon@google.com> > > Commit-Queue: Greg Daniel <egdaniel@google.com> > > TBR=egdaniel@google.com,bsalomon@google.com,brianosman@google.com > > Change-Id: Iaef7a56b061cb41f4c75ec20d8df77d3e52b194d > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: chromium:862921 > Reviewed-on: https://skia-review.googlesource.com/142600 > Reviewed-by: Greg Daniel <egdaniel@google.com> > Commit-Queue: Greg Daniel <egdaniel@google.com> TBR=egdaniel@google.com,bsalomon@google.com,brianosman@google.com Change-Id: I52378fa43efe2fdf583335f5fa8aa5b04a68ae2f Bug: chromium:862921 Reviewed-on: https://skia-review.googlesource.com/142760 Commit-Queue: Greg Daniel <egdaniel@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'src/gpu/GrTextureProducer.cpp')
-rw-r--r--src/gpu/GrTextureProducer.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/gpu/GrTextureProducer.cpp b/src/gpu/GrTextureProducer.cpp
index 59962c55b1..8499b8abe5 100644
--- a/src/gpu/GrTextureProducer.cpp
+++ b/src/gpu/GrTextureProducer.cpp
@@ -11,6 +11,7 @@
#include "GrRenderTargetContext.h"
#include "GrTextureProxy.h"
#include "SkGr.h"
+#include "SkMipMap.h"
#include "SkRectPriv.h"
#include "effects/GrBicubicEffect.h"
#include "effects/GrSimpleTextureEffect.h"
@@ -226,8 +227,14 @@ sk_sp<GrTextureProxy> GrTextureProducer::refTextureProxyForParams(
SkDEBUGCODE(bool expectNoScale = (sampler.filter() != GrSamplerState::Filter::kMipMap &&
!sampler.isRepeated()));
SkASSERT(scaleAdjust || expectNoScale);
+
+ int mipCount = SkMipMap::ComputeLevelCount(this->width(), this->height());
+ bool willBeMipped = GrSamplerState::Filter::kMipMap == sampler.filter() && mipCount &&
+ fContext->contextPriv().caps()->mipMapSupport();
+
auto result =
- this->onRefTextureProxyForParams(sampler, dstColorSpace, proxyColorSpace, scaleAdjust);
+ this->onRefTextureProxyForParams(sampler, dstColorSpace, proxyColorSpace, willBeMipped,
+ scaleAdjust);
// Check that the "no scaling expected" case always returns a proxy of the same size as the
// producer.
@@ -243,8 +250,14 @@ sk_sp<GrTextureProxy> GrTextureProducer::refTextureProxy(GrMipMapped willNeedMip
GrMipMapped::kNo == willNeedMips ? GrSamplerState::Filter::kNearest
: GrSamplerState::Filter::kMipMap;
GrSamplerState sampler(GrSamplerState::WrapMode::kClamp, filter);
+
+ int mipCount = SkMipMap::ComputeLevelCount(this->width(), this->height());
+ bool willBeMipped = GrSamplerState::Filter::kMipMap == sampler.filter() && mipCount &&
+ fContext->contextPriv().caps()->mipMapSupport();
+
auto result =
- this->onRefTextureProxyForParams(sampler, dstColorSpace, proxyColorSpace, nullptr);
+ this->onRefTextureProxyForParams(sampler, dstColorSpace, proxyColorSpace,
+ willBeMipped, nullptr);
// Check that no scaling occured and we returned a proxy of the same size as the producer.
SkASSERT(!result || (result->width() == this->width() && result->height() == this->height()));