GrRRectBlurEffect uses child for nine patch
Bug: skia:10139
Change-Id: Ic306775bb8d1f5d8b29cc38c116d0f8c3e0d55a2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/297193
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/effects/generated/GrRRectBlurEffect.cpp b/src/gpu/effects/generated/GrRRectBlurEffect.cpp
index cf3b74c..7067c8a 100644
--- a/src/gpu/effects/generated/GrRRectBlurEffect.cpp
+++ b/src/gpu/effects/generated/GrRRectBlurEffect.cpp
@@ -41,15 +41,15 @@
return nullptr;
}
- GrSurfaceProxyView mask =
- find_or_create_rrect_blur_mask(context, rrectToDraw, dimensions, xformedSigma);
- if (!mask) {
+ std::unique_ptr<GrFragmentProcessor> maskFP =
+ find_or_create_rrect_blur_mask_fp(context, rrectToDraw, dimensions, xformedSigma);
+ if (!maskFP) {
return nullptr;
}
return std::unique_ptr<GrFragmentProcessor>(
new GrRRectBlurEffect(std::move(inputFP), xformedSigma, devRRect.getBounds(),
- SkRRectPriv::GetSimpleRadii(devRRect).fX, std::move(mask)));
+ SkRRectPriv::GetSimpleRadii(devRRect).fX, std::move(maskFP)));
}
#include "src/gpu/GrTexture.h"
#include "src/gpu/glsl/GrGLSLFragmentProcessor.h"
@@ -91,21 +91,19 @@
args.fUniformHandler->getUniformCStr(blurRadiusVar),
args.fUniformHandler->getUniformCStr(cornerRadiusVar));
fragBuilder->codeAppendf("nslatedFragPos / proxyDims;");
- SkString _input8931 = SkStringPrintf("%s", args.fInputColor);
- SkString _sample8931;
+ SkString _input9604 = SkStringPrintf("%s", args.fInputColor);
+ SkString _sample9604;
if (_outer.inputFP_index >= 0) {
- _sample8931 = this->invokeChild(_outer.inputFP_index, _input8931.c_str(), args);
+ _sample9604 = this->invokeChild(_outer.inputFP_index, _input9604.c_str(), args);
} else {
- _sample8931 = _input8931;
+ _sample9604 = _input9604;
}
- fragBuilder->codeAppendf(
- "\nhalf4 inputColor = %s;\n%s = inputColor * sample(%s, float2(texCoord)).%s;\n",
- _sample8931.c_str(), args.fOutputColor,
- fragBuilder->getProgramBuilder()->samplerVariable(args.fTexSamplers[0]),
- fragBuilder->getProgramBuilder()
- ->samplerSwizzle(args.fTexSamplers[0])
- .asString()
- .c_str());
+ fragBuilder->codeAppendf("\nhalf4 inputColor = %s;", _sample9604.c_str());
+ SkString _sample9664;
+ SkString _coords9664("float2(texCoord)");
+ _sample9664 = this->invokeChild(_outer.ninePatchFP_index, args, _coords9664.c_str());
+ fragBuilder->codeAppendf("\n%s = inputColor * %s;\n", args.fOutputColor,
+ _sample9664.c_str());
}
private:
@@ -119,9 +117,6 @@
(void)rect;
UniformHandle& cornerRadius = cornerRadiusVar;
(void)cornerRadius;
- const GrSurfaceProxyView& ninePatchSamplerView = _outer.textureSampler(0).view();
- GrTexture& ninePatchSampler = *ninePatchSamplerView.proxy()->peekTexture();
- (void)ninePatchSampler;
UniformHandle& proxyRect = proxyRectVar;
(void)proxyRect;
UniformHandle& blurRadius = blurRadiusVar;
@@ -149,26 +144,24 @@
if (sigma != that.sigma) return false;
if (rect != that.rect) return false;
if (cornerRadius != that.cornerRadius) return false;
- if (ninePatchSampler != that.ninePatchSampler) return false;
return true;
}
GrRRectBlurEffect::GrRRectBlurEffect(const GrRRectBlurEffect& src)
: INHERITED(kGrRRectBlurEffect_ClassID, src.optimizationFlags())
, sigma(src.sigma)
, rect(src.rect)
- , cornerRadius(src.cornerRadius)
- , ninePatchSampler(src.ninePatchSampler) {
+ , cornerRadius(src.cornerRadius) {
if (src.inputFP_index >= 0) {
inputFP_index = this->cloneAndRegisterChildProcessor(src.childProcessor(src.inputFP_index));
}
- this->setTextureSamplerCnt(1);
+ {
+ ninePatchFP_index =
+ this->cloneAndRegisterChildProcessor(src.childProcessor(src.ninePatchFP_index));
+ }
}
std::unique_ptr<GrFragmentProcessor> GrRRectBlurEffect::clone() const {
return std::unique_ptr<GrFragmentProcessor>(new GrRRectBlurEffect(*this));
}
-const GrFragmentProcessor::TextureSampler& GrRRectBlurEffect::onTextureSampler(int index) const {
- return IthTextureSampler(index, ninePatchSampler);
-}
GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrRRectBlurEffect);
#if GR_TEST_UTILS
std::unique_ptr<GrFragmentProcessor> GrRRectBlurEffect::TestCreate(GrProcessorTestData* d) {