Chromium Code Reviews| Index: src/effects/SkBlurMaskFilter.cpp |
| diff --git a/src/effects/SkBlurMaskFilter.cpp b/src/effects/SkBlurMaskFilter.cpp |
| index 402641c980403a4f5b752d66a332039be7b7ade7..dd04f8d77a85f281219ca3729882490a24db827d 100644 |
| --- a/src/effects/SkBlurMaskFilter.cpp |
| +++ b/src/effects/SkBlurMaskFilter.cpp |
| @@ -663,12 +663,7 @@ private: |
| class GrGLRectBlurEffect : public GrGLFragmentProcessor { |
| public: |
| GrGLRectBlurEffect(const GrProcessor&) {} |
| - virtual void emitCode(GrGLFPBuilder*, |
| - const GrFragmentProcessor&, |
| - const char* outputColor, |
| - const char* inputColor, |
| - const TransformedCoordsArray&, |
| - const TextureSamplerArray&) override; |
| + virtual void emitCode(EmitArgs&) override; |
| void setData(const GrGLProgramDataManager&, const GrProcessor&) override; |
| @@ -697,32 +692,27 @@ void OutputRectBlurProfileLookup(GrGLFragmentBuilder* fsBuilder, |
| fsBuilder->codeAppendf("\t\t}\n"); |
| } |
| -void GrGLRectBlurEffect::emitCode(GrGLFPBuilder* builder, |
| - const GrFragmentProcessor&, |
| - const char* outputColor, |
| - const char* inputColor, |
| - const TransformedCoordsArray& coords, |
| - const TextureSamplerArray& samplers) { |
| +void GrGLRectBlurEffect::emitCode(EmitArgs& args) { |
| const char *rectName; |
| const char *profileSizeName; |
| - fProxyRectUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
| + fProxyRectUniform = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
| kVec4f_GrSLType, |
| kDefault_GrSLPrecision, |
| "proxyRect", |
| &rectName); |
| - fProfileSizeUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
| + fProfileSizeUniform = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
| kFloat_GrSLType, |
| kDefault_GrSLPrecision, |
| "profileSize", |
| &profileSizeName); |
| - GrGLFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); |
| + GrGLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder(); |
| const char *fragmentPos = fsBuilder->fragmentPosition(); |
| - if (inputColor) { |
| - fsBuilder->codeAppendf("\tvec4 src=%s;\n", inputColor); |
| + if (args.fInputColor) { |
| + fsBuilder->codeAppendf("\tvec4 src=%s;\n", args.fInputColor); |
| } else { |
| fsBuilder->codeAppendf("\tvec4 src=vec4(1)\n;"); |
| } |
| @@ -735,11 +725,11 @@ void GrGLRectBlurEffect::emitCode(GrGLFPBuilder* builder, |
| fsBuilder->codeAppendf("\tfloat center = 2.0 * floor(%s/2.0 + .25) - 1.0;\n", profileSizeName); |
| fsBuilder->codeAppendf("\tvec2 wh = smallDims - vec2(center,center);\n"); |
| - OutputRectBlurProfileLookup(fsBuilder, samplers[0], "horiz_lookup", profileSizeName, "translatedPos.x", "width", "wh.x"); |
| - OutputRectBlurProfileLookup(fsBuilder, samplers[0], "vert_lookup", profileSizeName, "translatedPos.y", "height", "wh.y"); |
| + OutputRectBlurProfileLookup(fsBuilder, args.fSamplers[0], "horiz_lookup", profileSizeName, "translatedPos.x", "width", "wh.x"); |
|
joshualitt
2015/07/22 19:34:04
line wrap @100
|
| + OutputRectBlurProfileLookup(fsBuilder, args.fSamplers[0], "vert_lookup", profileSizeName, "translatedPos.y", "height", "wh.y"); |
|
joshualitt
2015/07/22 19:34:04
line wrap @100
|
| fsBuilder->codeAppendf("\tfloat final = horiz_lookup * vert_lookup;\n"); |
| - fsBuilder->codeAppendf("\t%s = src * final;\n", outputColor ); |
| + fsBuilder->codeAppendf("\t%s = src * final;\n", args.fOutputColor ); |
| } |
| void GrGLRectBlurEffect::setData(const GrGLProgramDataManager& pdman, |
| @@ -1022,12 +1012,7 @@ class GrGLRRectBlurEffect : public GrGLFragmentProcessor { |
| public: |
| GrGLRRectBlurEffect(const GrProcessor&) {} |
| - virtual void emitCode(GrGLFPBuilder*, |
| - const GrFragmentProcessor&, |
| - const char* outputColor, |
| - const char* inputColor, |
| - const TransformedCoordsArray&, |
| - const TextureSamplerArray&) override; |
| + virtual void emitCode(EmitArgs&) override; |
| void setData(const GrGLProgramDataManager&, const GrProcessor&) override; |
| @@ -1038,12 +1023,7 @@ private: |
| typedef GrGLFragmentProcessor INHERITED; |
| }; |
| -void GrGLRRectBlurEffect::emitCode(GrGLFPBuilder* builder, |
| - const GrFragmentProcessor&, |
| - const char* outputColor, |
| - const char* inputColor, |
| - const TransformedCoordsArray&, |
| - const TextureSamplerArray& samplers) { |
| +void GrGLRRectBlurEffect::emitCode(EmitArgs& args) { |
| const char *rectName; |
| const char *cornerRadiusName; |
| const char *blurRadiusName; |
| @@ -1051,23 +1031,23 @@ void GrGLRRectBlurEffect::emitCode(GrGLFPBuilder* builder, |
| // The proxy rect has left, top, right, and bottom edges correspond to |
| // components x, y, z, and w, respectively. |
| - fProxyRectUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
| + fProxyRectUniform = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
| kVec4f_GrSLType, |
| kDefault_GrSLPrecision, |
| "proxyRect", |
| &rectName); |
| - fCornerRadiusUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
| + fCornerRadiusUniform = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
| kFloat_GrSLType, |
| kDefault_GrSLPrecision, |
| "cornerRadius", |
| &cornerRadiusName); |
| - fBlurRadiusUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
| + fBlurRadiusUniform = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
| kFloat_GrSLType, |
| kDefault_GrSLPrecision, |
| "blurRadius", |
| &blurRadiusName); |
| - GrGLFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); |
| + GrGLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder(); |
| const char* fragmentPos = fsBuilder->fragmentPosition(); |
| // warp the fragment position to the appropriate part of the 9patch blur texture |
| @@ -1092,8 +1072,8 @@ void GrGLRRectBlurEffect::emitCode(GrGLFPBuilder* builder, |
| fsBuilder->codeAppendf("\t\tvec2 proxyDims = vec2(2.0*threshold+1.0);\n"); |
| fsBuilder->codeAppendf("\t\tvec2 texCoord = translatedFragPos / proxyDims;\n"); |
| - fsBuilder->codeAppendf("\t%s = ", outputColor); |
| - fsBuilder->appendTextureLookupAndModulate(inputColor, samplers[0], "texCoord"); |
| + fsBuilder->codeAppendf("\t%s = ", args.fOutputColor); |
| + fsBuilder->appendTextureLookupAndModulate(args.fInputColor, args.fSamplers[0], "texCoord"); |
| fsBuilder->codeAppend(";\n"); |
| } |