| Index: src/gpu/effects/GrConvolutionEffect.cpp
|
| ===================================================================
|
| --- src/gpu/effects/GrConvolutionEffect.cpp (revision 8005)
|
| +++ src/gpu/effects/GrConvolutionEffect.cpp (working copy)
|
| @@ -65,15 +65,14 @@
|
| kVec2f_GrSLType, "ImageIncrement");
|
| fKernelUni = builder->addUniformArray(GrGLShaderBuilder::kFragment_ShaderType,
|
| kFloat_GrSLType, "Kernel", this->width());
|
| - SkString* code = &builder->fFSCode;
|
|
|
| - code->appendf("\t\t%s = vec4(0, 0, 0, 0);\n", outputColor);
|
| + builder->fsCodeAppendf("\t\t%s = vec4(0, 0, 0, 0);\n", outputColor);
|
|
|
| int width = this ->width();
|
| const GrGLShaderVar& kernel = builder->getUniformVariable(fKernelUni);
|
| const char* imgInc = builder->getUniformCStr(fImageIncrementUni);
|
|
|
| - code->appendf("\t\tvec2 coord = %s - %d.0 * %s;\n", coords, fRadius, imgInc);
|
| + builder->fsCodeAppendf("\t\tvec2 coord = %s - %d.0 * %s;\n", coords, fRadius, imgInc);
|
|
|
| // Manually unroll loop because some drivers don't; yields 20-30% speedup.
|
| for (int i = 0; i < width; i++) {
|
| @@ -81,12 +80,14 @@
|
| SkString kernelIndex;
|
| index.appendS32(i);
|
| kernel.appendArrayAccess(index.c_str(), &kernelIndex);
|
| - code->appendf("\t\t%s += ", outputColor);
|
| - builder->appendTextureLookup(&builder->fFSCode, samplers[0], "coord");
|
| - code->appendf(" * %s;\n", kernelIndex.c_str());
|
| - code->appendf("\t\tcoord += %s;\n", imgInc);
|
| + builder->fsCodeAppendf("\t\t%s += ", outputColor);
|
| + builder->appendTextureLookup(GrGLShaderBuilder::kFragment_ShaderType, samplers[0], "coord");
|
| + builder->fsCodeAppendf(" * %s;\n", kernelIndex.c_str());
|
| + builder->fsCodeAppendf("\t\tcoord += %s;\n", imgInc);
|
| }
|
| - GrGLSLMulVarBy4f(&builder->fFSCode, 2, outputColor, inputColor);
|
| + SkString modulate;
|
| + GrGLSLMulVarBy4f(&modulate, 2, outputColor, inputColor);
|
| + builder->fsCodeAppend(modulate.c_str());
|
| }
|
|
|
| void GrGLConvolutionEffect::setData(const GrGLUniformManager& uman, const GrEffectStage& stage) {
|
|
|