| Index: src/gpu/glsl/GrGLSLProgramBuilder.cpp
|
| diff --git a/src/gpu/glsl/GrGLSLProgramBuilder.cpp b/src/gpu/glsl/GrGLSLProgramBuilder.cpp
|
| index 64bc0640b9d92547aa18f1d883424a14ceb1944a..1f28f19bb99088054125c838ec037c267c39bc03 100644
|
| --- a/src/gpu/glsl/GrGLSLProgramBuilder.cpp
|
| +++ b/src/gpu/glsl/GrGLSLProgramBuilder.cpp
|
| @@ -87,6 +87,13 @@ void GrGLSLProgramBuilder::emitAndInstallPrimProc(const GrPrimitiveProcessor& pr
|
| this->nameExpression(outputColor, "outputColor");
|
| this->nameExpression(outputCoverage, "outputCoverage");
|
|
|
| + const char* distanceVectorName = nullptr;
|
| + if (this->fPipeline.usesDistanceVectorField() && proc.implementsDistanceVector()) {
|
| + distanceVectorName = fFS.distanceVectorName();
|
| + fFS.codeAppend( "// Un-normalized vector to the closed geometric edge (in source space)\n");
|
| + fFS.codeAppendf("vec2 %s;", distanceVectorName);
|
| + }
|
| +
|
| // Enclose custom code in a block to avoid namespace conflicts
|
| SkString openBrace;
|
| openBrace.printf("{ // Stage %d, %s\n", fStageIndex, proc.name());
|
| @@ -108,6 +115,7 @@ void GrGLSLProgramBuilder::emitAndInstallPrimProc(const GrPrimitiveProcessor& pr
|
| proc,
|
| outputColor->c_str(),
|
| outputCoverage->c_str(),
|
| + distanceVectorName,
|
| texSamplers.begin(),
|
| bufferSamplers.begin(),
|
| fCoordTransforms,
|
| @@ -161,7 +169,9 @@ void GrGLSLProgramBuilder::emitAndInstallFragProc(const GrFragmentProcessor& fp,
|
| input.isOnes() ? nullptr : input.c_str(),
|
| fOutCoords[index],
|
| texSamplers.begin(),
|
| - bufferSamplers.begin());
|
| + bufferSamplers.begin(),
|
| + this->primitiveProcessor().implementsDistanceVector());
|
| +
|
| fragProc->emitCode(args);
|
|
|
| // We have to check that effects and the code they emit are consistent, ie if an effect
|
|
|