diff options
author | Greg Daniel <egdaniel@google.com> | 2018-07-19 21:33:11 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-07-19 21:33:16 +0000 |
commit | c861eee3a6f1f93ad3df27b8be94f44b245bd128 (patch) | |
tree | 1c4f0307a456002c784d6428e77c45b9032b7576 /src | |
parent | 6a3957c1f9cbeca9107708462150fb766993ac0a (diff) |
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>
Diffstat (limited to 'src')
-rw-r--r-- | src/gpu/GrTextureAdjuster.cpp | 6 | ||||
-rw-r--r-- | src/gpu/GrTextureAdjuster.h | 2 | ||||
-rw-r--r-- | src/gpu/GrTextureMaker.cpp | 6 | ||||
-rw-r--r-- | src/gpu/GrTextureMaker.h | 6 | ||||
-rw-r--r-- | src/gpu/GrTextureProducer.cpp | 25 | ||||
-rw-r--r-- | src/gpu/GrTextureProducer.h | 8 | ||||
-rw-r--r-- | src/gpu/vk/GrVkGpuCommandBuffer.cpp | 3 |
7 files changed, 19 insertions, 37 deletions
diff --git a/src/gpu/GrTextureAdjuster.cpp b/src/gpu/GrTextureAdjuster.cpp index b2fc0584ba..d016896c3f 100644 --- a/src/gpu/GrTextureAdjuster.cpp +++ b/src/gpu/GrTextureAdjuster.cpp @@ -17,8 +17,9 @@ GrTextureAdjuster::GrTextureAdjuster(GrContext* context, sk_sp<GrTextureProxy> o SkAlphaType alphaType, uint32_t uniqueID, SkColorSpace* cs) - : INHERITED(context, original->width(), original->height(), + : INHERITED(original->width(), original->height(), GrPixelConfigIsAlphaOnly(original->config())) + , fContext(context) , fOriginal(std::move(original)) , fAlphaType(alphaType) , fColorSpace(cs) @@ -76,7 +77,6 @@ sk_sp<GrTextureProxy> GrTextureAdjuster::onRefTextureProxyForParams( const GrSamplerState& params, SkColorSpace* dstColorSpace, sk_sp<SkColorSpace>* texColorSpace, - bool willBeMipped, SkScalar scaleAdjust[2]) { sk_sp<GrTextureProxy> proxy = this->originalProxyRef(); CopyParams copyParams; @@ -105,6 +105,8 @@ sk_sp<GrTextureProxy> GrTextureAdjuster::onRefTextureProxyForParams( } } + bool willBeMipped = GrSamplerState::Filter::kMipMap == params.filter() && + fContext->contextPriv().caps()->mipMapSupport(); sk_sp<GrTextureProxy> result = this->refTextureProxyCopy(copyParams, willBeMipped); if (!result && needsCopyForMipsOnly) { // If we were unable to make a copy and we only needed a copy for mips, then we will return diff --git a/src/gpu/GrTextureAdjuster.h b/src/gpu/GrTextureAdjuster.h index ad02ae06c8..e43e87b1dc 100644 --- a/src/gpu/GrTextureAdjuster.h +++ b/src/gpu/GrTextureAdjuster.h @@ -46,11 +46,11 @@ private: sk_sp<GrTextureProxy> onRefTextureProxyForParams(const GrSamplerState&, SkColorSpace* dstColorSpace, sk_sp<SkColorSpace>* proxyColorSpace, - bool willBeMipped, SkScalar scaleAdjust[2]) override; sk_sp<GrTextureProxy> refTextureProxyCopy(const CopyParams& copyParams, bool willBeMipped); + GrContext* fContext; sk_sp<GrTextureProxy> fOriginal; SkAlphaType fAlphaType; SkColorSpace* fColorSpace; diff --git a/src/gpu/GrTextureMaker.cpp b/src/gpu/GrTextureMaker.cpp index 820e47ab7c..22870cc7c8 100644 --- a/src/gpu/GrTextureMaker.cpp +++ b/src/gpu/GrTextureMaker.cpp @@ -16,7 +16,6 @@ sk_sp<GrTextureProxy> GrTextureMaker::onRefTextureProxyForParams(const GrSamplerState& params, SkColorSpace* dstColorSpace, sk_sp<SkColorSpace>* texColorSpace, - bool willBeMipped, SkScalar scaleAdjust[2]) { if (this->width() > fContext->contextPriv().caps()->maxTextureSize() || this->height() > fContext->contextPriv().caps()->maxTextureSize()) { @@ -24,6 +23,11 @@ sk_sp<GrTextureProxy> GrTextureMaker::onRefTextureProxyForParams(const GrSampler } CopyParams copyParams; + bool willBeMipped = params.filter() == GrSamplerState::Filter::kMipMap; + + if (!fContext->contextPriv().caps()->mipMapSupport()) { + willBeMipped = false; + } if (texColorSpace) { *texColorSpace = this->getColorSpace(dstColorSpace); diff --git a/src/gpu/GrTextureMaker.h b/src/gpu/GrTextureMaker.h index e2dd3c852a..a365b50444 100644 --- a/src/gpu/GrTextureMaker.h +++ b/src/gpu/GrTextureMaker.h @@ -28,7 +28,8 @@ public: protected: GrTextureMaker(GrContext* context, int width, int height, bool isAlphaOnly) - : INHERITED(context, width, height, isAlphaOnly) {} + : INHERITED(width, height, isAlphaOnly) + , fContext(context) {} /** * Return the maker's "original" texture. It is the responsibility of the maker to handle any @@ -53,9 +54,10 @@ private: sk_sp<GrTextureProxy> onRefTextureProxyForParams(const GrSamplerState&, SkColorSpace* dstColorSpace, sk_sp<SkColorSpace>* proxyColorSpace, - bool willBeMipped, SkScalar scaleAdjust[2]) override; + GrContext* fContext; + typedef GrTextureProducer INHERITED; }; diff --git a/src/gpu/GrTextureProducer.cpp b/src/gpu/GrTextureProducer.cpp index cdf2a476e3..59962c55b1 100644 --- a/src/gpu/GrTextureProducer.cpp +++ b/src/gpu/GrTextureProducer.cpp @@ -11,7 +11,6 @@ #include "GrRenderTargetContext.h" #include "GrTextureProxy.h" #include "SkGr.h" -#include "SkMipMap.h" #include "SkRectPriv.h" #include "effects/GrBicubicEffect.h" #include "effects/GrSimpleTextureEffect.h" @@ -227,18 +226,8 @@ 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, willBeMipped, - scaleAdjust); - - // Check to make sure that if we say the texture willBeMipped that the returned texture has mip - // maps. - SkASSERT(!result || !willBeMipped || result->mipMapped() == GrMipMapped::kYes); + this->onRefTextureProxyForParams(sampler, dstColorSpace, proxyColorSpace, scaleAdjust); // Check that the "no scaling expected" case always returns a proxy of the same size as the // producer. @@ -254,18 +243,8 @@ 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, - willBeMipped, nullptr); - - // Check to make sure that if we say the texture willBeMipped that the returned texture has mip - // maps. - SkASSERT(!result || !willBeMipped || result->mipMapped() == GrMipMapped::kYes); + this->onRefTextureProxyForParams(sampler, dstColorSpace, proxyColorSpace, 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())); diff --git a/src/gpu/GrTextureProducer.h b/src/gpu/GrTextureProducer.h index 66adb6fa4e..b42bbcfc9a 100644 --- a/src/gpu/GrTextureProducer.h +++ b/src/gpu/GrTextureProducer.h @@ -124,9 +124,8 @@ public: protected: friend class GrTextureProducer_TestAccess; - GrTextureProducer(GrContext* context, int width, int height, bool isAlphaOnly) - : fContext(context) - , fWidth(width) + GrTextureProducer(int width, int height, bool isAlphaOnly) + : fWidth(width) , fHeight(height) , fIsAlphaOnly(isAlphaOnly) {} @@ -186,13 +185,10 @@ protected: const SkRect& domain, const GrSamplerState::Filter* filterOrNullForBicubic); - GrContext* fContext; - private: virtual sk_sp<GrTextureProxy> onRefTextureProxyForParams(const GrSamplerState&, SkColorSpace* dstColorSpace, sk_sp<SkColorSpace>* proxyColorSpace, - bool willBeMipped, SkScalar scaleAdjust[2]) = 0; const int fWidth; diff --git a/src/gpu/vk/GrVkGpuCommandBuffer.cpp b/src/gpu/vk/GrVkGpuCommandBuffer.cpp index d58a8b5ff7..91adb5a778 100644 --- a/src/gpu/vk/GrVkGpuCommandBuffer.cpp +++ b/src/gpu/vk/GrVkGpuCommandBuffer.cpp @@ -622,8 +622,7 @@ static void prepare_sampled_images(const GrResourceIOProcessor& processor, } // Check if we need to regenerate any mip maps - if (GrSamplerState::Filter::kMipMap == sampler.samplerState().filter() && - (vkTexture->width() != 1 || vkTexture->height() != 1)) { + if (GrSamplerState::Filter::kMipMap == sampler.samplerState().filter()) { SkASSERT(vkTexture->texturePriv().mipMapped() == GrMipMapped::kYes); if (vkTexture->texturePriv().mipMapsAreDirty()) { gpu->regenerateMipMapLevels(vkTexture); |