| Index: src/gpu/effects/GrBitmapTextGeoProc.cpp
|
| diff --git a/src/gpu/effects/GrBitmapTextGeoProc.cpp b/src/gpu/effects/GrBitmapTextGeoProc.cpp
|
| index 3958ad6fe88759b47ec4db6984f6a0392e447ee7..28c6f0ffc482a5b3e84e9331bd059c699b528d87 100644
|
| --- a/src/gpu/effects/GrBitmapTextGeoProc.cpp
|
| +++ b/src/gpu/effects/GrBitmapTextGeoProc.cpp
|
| @@ -22,10 +22,10 @@ public:
|
| const GrBitmapTextGeoProc& cte = args.fGP.cast<GrBitmapTextGeoProc>();
|
|
|
| GrGLSLGPBuilder* pb = args.fPB;
|
| - GrGLSLVertexBuilder* vsBuilder = pb->getVertexShaderBuilder();
|
| + GrGLSLVertexBuilder* vertBuilder = args.fVertBuilder;
|
|
|
| // emit attributes
|
| - vsBuilder->emitAttributes(cte);
|
| + vertBuilder->emitAttributes(cte);
|
|
|
| // compute numbers to be hardcoded to convert texture coordinates from int to float
|
| SkASSERT(cte.numTextures() == 1);
|
| @@ -36,45 +36,50 @@ public:
|
|
|
| GrGLSLVertToFrag v(kVec2f_GrSLType);
|
| pb->addVarying("TextureCoords", &v);
|
| - vsBuilder->codeAppendf("%s = vec2(%.*f, %.*f) * %s;", v.vsOut(),
|
| - GR_SIGNIFICANT_POW2_DECIMAL_DIG, recipWidth,
|
| - GR_SIGNIFICANT_POW2_DECIMAL_DIG, recipHeight,
|
| - cte.inTextureCoords()->fName);
|
| + vertBuilder->codeAppendf("%s = vec2(%.*f, %.*f) * %s;", v.vsOut(),
|
| + GR_SIGNIFICANT_POW2_DECIMAL_DIG, recipWidth,
|
| + GR_SIGNIFICANT_POW2_DECIMAL_DIG, recipHeight,
|
| + cte.inTextureCoords()->fName);
|
|
|
| + GrGLSLFragmentBuilder* fragBuilder = args.fFragBuilder;
|
| // Setup pass through color
|
| if (!cte.colorIgnored()) {
|
| if (cte.hasVertexColor()) {
|
| pb->addPassThroughAttribute(cte.inColor(), args.fOutputColor);
|
| } else {
|
| - this->setupUniformColor(pb, args.fOutputColor, &fColorUniform);
|
| + this->setupUniformColor(pb, fragBuilder, args.fOutputColor, &fColorUniform);
|
| }
|
| }
|
|
|
| // Setup position
|
| - this->setupPosition(pb, gpArgs, cte.inPosition()->fName);
|
| + this->setupPosition(pb, vertBuilder, gpArgs, cte.inPosition()->fName);
|
|
|
| // emit transforms
|
| - this->emitTransforms(args.fPB, gpArgs->fPositionVar, cte.inPosition()->fName,
|
| - cte.localMatrix(), args.fTransformsIn, args.fTransformsOut);
|
| + this->emitTransforms(args.fPB,
|
| + vertBuilder,
|
| + gpArgs->fPositionVar,
|
| + cte.inPosition()->fName,
|
| + cte.localMatrix(),
|
| + args.fTransformsIn,
|
| + args.fTransformsOut);
|
|
|
| - GrGLSLFragmentBuilder* fsBuilder = pb->getFragmentShaderBuilder();
|
| if (cte.maskFormat() == kARGB_GrMaskFormat) {
|
| - fsBuilder->codeAppendf("%s = ", args.fOutputColor);
|
| - fsBuilder->appendTextureLookupAndModulate(args.fOutputColor,
|
| - args.fSamplers[0],
|
| - v.fsIn(),
|
| - kVec2f_GrSLType);
|
| - fsBuilder->codeAppend(";");
|
| - fsBuilder->codeAppendf("%s = vec4(1);", args.fOutputCoverage);
|
| + fragBuilder->codeAppendf("%s = ", args.fOutputColor);
|
| + fragBuilder->appendTextureLookupAndModulate(args.fOutputColor,
|
| + args.fSamplers[0],
|
| + v.fsIn(),
|
| + kVec2f_GrSLType);
|
| + fragBuilder->codeAppend(";");
|
| + fragBuilder->codeAppendf("%s = vec4(1);", args.fOutputCoverage);
|
| } else {
|
| - fsBuilder->codeAppendf("%s = ", args.fOutputCoverage);
|
| - fsBuilder->appendTextureLookup(args.fSamplers[0], v.fsIn(), kVec2f_GrSLType);
|
| - fsBuilder->codeAppend(";");
|
| + fragBuilder->codeAppendf("%s = ", args.fOutputCoverage);
|
| + fragBuilder->appendTextureLookup(args.fSamplers[0], v.fsIn(), kVec2f_GrSLType);
|
| + fragBuilder->codeAppend(";");
|
| if (cte.maskFormat() == kA565_GrMaskFormat) {
|
| // set alpha to be max of rgb coverage
|
| - fsBuilder->codeAppendf("%s.a = max(max(%s.r, %s.g), %s.b);",
|
| - args.fOutputCoverage, args.fOutputCoverage,
|
| - args.fOutputCoverage, args.fOutputCoverage);
|
| + fragBuilder->codeAppendf("%s.a = max(max(%s.r, %s.g), %s.b);",
|
| + args.fOutputCoverage, args.fOutputCoverage,
|
| + args.fOutputCoverage, args.fOutputCoverage);
|
| }
|
| }
|
| }
|
|
|