diff options
author | Michael Ludwig <michaelludwig@google.com> | 2018-12-17 09:50:51 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-12-17 15:30:48 +0000 |
commit | be315a27485ad34a2859e14d6b19abd420c6fe20 (patch) | |
tree | 38cd53894921e2f4c6ef667f788c1b5a68af7afd /src/effects | |
parent | 1be2d421ce09939ba54d1c3af2c660eab2546cf1 (diff) | |
download | skqp-be315a27485ad34a2859e14d6b19abd420c6fe20.tar.gz |
Decal fallback for SkImageShader
Bug: skia:
Change-Id: Ib39f74886c0edc655ded8ba1075e5205361ae650
Reviewed-on: https://skia-review.googlesource.com/c/176225
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/effects')
4 files changed, 16 insertions, 13 deletions
diff --git a/src/effects/imagefilters/SkArithmeticImageFilter.cpp b/src/effects/imagefilters/SkArithmeticImageFilter.cpp index 5c69068116..8e8dabf916 100644 --- a/src/effects/imagefilters/SkArithmeticImageFilter.cpp +++ b/src/effects/imagefilters/SkArithmeticImageFilter.cpp @@ -314,7 +314,7 @@ sk_sp<SkSpecialImage> ArithmeticImageFilterImpl::filterImageGPU( SkIntToScalar(bgSubset.top() - backgroundOffset.fY)); bgFP = GrTextureDomainEffect::Make( std::move(backgroundProxy), backgroundMatrix, - GrTextureDomain::MakeTexelDomain(bgSubset), + GrTextureDomain::MakeTexelDomain(bgSubset, GrTextureDomain::kDecal_Mode), GrTextureDomain::kDecal_Mode, GrSamplerState::Filter::kNearest); bgFP = GrColorSpaceXformEffect::Make(std::move(bgFP), background->getColorSpace(), background->alphaType(), @@ -331,7 +331,7 @@ sk_sp<SkSpecialImage> ArithmeticImageFilterImpl::filterImageGPU( SkIntToScalar(fgSubset.top() - foregroundOffset.fY)); auto foregroundFP = GrTextureDomainEffect::Make( std::move(foregroundProxy), foregroundMatrix, - GrTextureDomain::MakeTexelDomain(fgSubset), + GrTextureDomain::MakeTexelDomain(fgSubset, GrTextureDomain::kDecal_Mode), GrTextureDomain::kDecal_Mode, GrSamplerState::Filter::kNearest); foregroundFP = GrColorSpaceXformEffect::Make(std::move(foregroundFP), foreground->getColorSpace(), diff --git a/src/effects/imagefilters/SkDisplacementMapEffect.cpp b/src/effects/imagefilters/SkDisplacementMapEffect.cpp index 3f42e7b86d..7dc6804108 100644 --- a/src/effects/imagefilters/SkDisplacementMapEffect.cpp +++ b/src/effects/imagefilters/SkDisplacementMapEffect.cpp @@ -448,8 +448,10 @@ GrDisplacementMapEffect::GrDisplacementMapEffect( , fDisplacementTransform(offsetMatrix, displacement.get()) , fDisplacementSampler(displacement) , fColorTransform(color.get()) - , fDomain(color.get(), GrTextureDomain::MakeTexelDomain(SkIRect::MakeSize(colorDimensions)), - GrTextureDomain::kDecal_Mode) + , fDomain(color.get(), + GrTextureDomain::MakeTexelDomain(SkIRect::MakeSize(colorDimensions), + GrTextureDomain::kDecal_Mode), + GrTextureDomain::kDecal_Mode, GrTextureDomain::kDecal_Mode) , fColorSampler(color) , fXChannelSelector(xChannelSelector) , fYChannelSelector(yChannelSelector) @@ -605,7 +607,8 @@ void GrGLDisplacementMapEffect::onSetData(const GrGLSLProgramDataManager& pdman, pdman.set2f(fScaleUni, SkScalarToFloat(scaleX), proxy->origin() == kTopLeft_GrSurfaceOrigin ? SkScalarToFloat(scaleY) : SkScalarToFloat(-scaleY)); - fGLDomain.setData(pdman, displacementMap.domain(), proxy); + fGLDomain.setData(pdman, displacementMap.domain(), proxy, + displacementMap.textureSampler(1).samplerState()); } void GrGLDisplacementMapEffect::GenKey(const GrProcessor& proc, diff --git a/src/effects/imagefilters/SkLightingImageFilter.cpp b/src/effects/imagefilters/SkLightingImageFilter.cpp index 92225a39f4..8e2357e5c7 100644 --- a/src/effects/imagefilters/SkLightingImageFilter.cpp +++ b/src/effects/imagefilters/SkLightingImageFilter.cpp @@ -1676,8 +1676,8 @@ private: static GrTextureDomain create_domain(GrTextureProxy* proxy, const SkIRect* srcBounds, GrTextureDomain::Mode mode) { if (srcBounds) { - SkRect texelDomain = GrTextureDomain::MakeTexelDomainForMode(*srcBounds, mode); - return GrTextureDomain(proxy, texelDomain, mode); + SkRect texelDomain = GrTextureDomain::MakeTexelDomain(*srcBounds, mode); + return GrTextureDomain(proxy, texelDomain, mode, mode); } else { return GrTextureDomain::IgnoredDomain(); } @@ -1926,7 +1926,7 @@ void GrGLLightingEffect::onSetData(const GrGLSLProgramDataManager& pdman, pdman.set1f(fSurfaceScaleUni, lighting.surfaceScale()); sk_sp<SkImageFilterLight> transformedLight( lighting.light()->transform(lighting.filterMatrix())); - fDomain.setData(pdman, lighting.domain(), proxy); + fDomain.setData(pdman, lighting.domain(), proxy, lighting.textureSampler(0).samplerState()); fLight->setData(pdman, transformedLight.get()); } diff --git a/src/effects/imagefilters/SkXfermodeImageFilter.cpp b/src/effects/imagefilters/SkXfermodeImageFilter.cpp index 08b24a6d0d..62147e393a 100644 --- a/src/effects/imagefilters/SkXfermodeImageFilter.cpp +++ b/src/effects/imagefilters/SkXfermodeImageFilter.cpp @@ -280,10 +280,10 @@ sk_sp<SkSpecialImage> SkXfermodeImageFilter_Base::filterImageGPU( SkMatrix bgMatrix = SkMatrix::MakeTrans( SkIntToScalar(bgSubset.left() - backgroundOffset.fX), SkIntToScalar(bgSubset.top() - backgroundOffset.fY)); - bgFP = GrTextureDomainEffect::Make(std::move(backgroundProxy), bgMatrix, - GrTextureDomain::MakeTexelDomain(bgSubset), - GrTextureDomain::kDecal_Mode, - GrSamplerState::Filter::kNearest); + bgFP = GrTextureDomainEffect::Make( + std::move(backgroundProxy), bgMatrix, + GrTextureDomain::MakeTexelDomain(bgSubset, GrTextureDomain::kDecal_Mode), + GrTextureDomain::kDecal_Mode, GrSamplerState::Filter::kNearest); bgFP = GrColorSpaceXformEffect::Make(std::move(bgFP), background->getColorSpace(), background->alphaType(), outputProperties.colorSpace()); @@ -299,7 +299,7 @@ sk_sp<SkSpecialImage> SkXfermodeImageFilter_Base::filterImageGPU( SkIntToScalar(fgSubset.top() - foregroundOffset.fY)); auto foregroundFP = GrTextureDomainEffect::Make( std::move(foregroundProxy), fgMatrix, - GrTextureDomain::MakeTexelDomain(fgSubset), + GrTextureDomain::MakeTexelDomain(fgSubset, GrTextureDomain::kDecal_Mode), GrTextureDomain::kDecal_Mode, GrSamplerState::Filter::kNearest); foregroundFP = GrColorSpaceXformEffect::Make(std::move(foregroundFP), foreground->getColorSpace(), |