aboutsummaryrefslogtreecommitdiff
path: root/src/effects
diff options
context:
space:
mode:
authorMichael Ludwig <michaelludwig@google.com>2018-12-17 09:50:51 -0500
committerSkia Commit-Bot <skia-commit-bot@chromium.org>2018-12-17 15:30:48 +0000
commitbe315a27485ad34a2859e14d6b19abd420c6fe20 (patch)
tree38cd53894921e2f4c6ef667f788c1b5a68af7afd /src/effects
parent1be2d421ce09939ba54d1c3af2c660eab2546cf1 (diff)
downloadskqp-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')
-rw-r--r--src/effects/imagefilters/SkArithmeticImageFilter.cpp4
-rw-r--r--src/effects/imagefilters/SkDisplacementMapEffect.cpp9
-rw-r--r--src/effects/imagefilters/SkLightingImageFilter.cpp6
-rw-r--r--src/effects/imagefilters/SkXfermodeImageFilter.cpp10
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(),