diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gpu/GrDefaultGeoProcFactory.cpp | 12 | ||||
-rw-r--r-- | src/gpu/GrGeometryProcessor.h | 8 | ||||
-rw-r--r-- | src/gpu/effects/GrBezierEffect.cpp | 36 | ||||
-rw-r--r-- | src/gpu/effects/GrBitmapTextGeoProc.cpp | 2 | ||||
-rw-r--r-- | src/gpu/effects/GrDistanceFieldGeoProc.cpp | 36 | ||||
-rw-r--r-- | src/gpu/effects/GrShadowGeoProc.cpp | 2 | ||||
-rw-r--r-- | src/gpu/glsl/GrGLSLGeometryProcessor.cpp | 18 | ||||
-rw-r--r-- | src/gpu/glsl/GrGLSLGeometryProcessor.h | 32 | ||||
-rw-r--r-- | src/gpu/ops/GrAAConvexPathRenderer.cpp | 2 | ||||
-rw-r--r-- | src/gpu/ops/GrDashOp.cpp | 4 | ||||
-rw-r--r-- | src/gpu/ops/GrMSAAPathRenderer.cpp | 4 | ||||
-rw-r--r-- | src/gpu/ops/GrOvalOpFactory.cpp | 16 |
12 files changed, 88 insertions, 84 deletions
diff --git a/src/gpu/GrDefaultGeoProcFactory.cpp b/src/gpu/GrDefaultGeoProcFactory.cpp index c94c47aeb3..659d333899 100644 --- a/src/gpu/GrDefaultGeoProcFactory.cpp +++ b/src/gpu/GrDefaultGeoProcFactory.cpp @@ -132,12 +132,12 @@ public: } // Setup position - this->setupPosition(vertBuilder, - uniformHandler, - gpArgs, - gp.inPosition()->fName, - gp.viewMatrix(), - &fViewMatrixUniform); + this->writeOutputPosition(vertBuilder, + uniformHandler, + gpArgs, + gp.inPosition()->fName, + gp.viewMatrix(), + &fViewMatrixUniform); if (gp.hasExplicitLocalCoords()) { // emit transforms with explicit local coords diff --git a/src/gpu/GrGeometryProcessor.h b/src/gpu/GrGeometryProcessor.h index 086d9baa53..d8962c21ac 100644 --- a/src/gpu/GrGeometryProcessor.h +++ b/src/gpu/GrGeometryProcessor.h @@ -24,9 +24,9 @@ public: , fLocalCoordsType(kUnused_LocalCoordsType) , fSampleShading(0.0) {} - bool willUseGeoShader() const override { return fWillUseGeoShader; } + bool willUseGeoShader() const final { return fWillUseGeoShader; } - bool hasExplicitLocalCoords() const override { + bool hasExplicitLocalCoords() const final { return kHasExplicit_LocalCoordsType == fLocalCoordsType; } @@ -35,9 +35,7 @@ public: * instance, if sampleShading is 0.5 in MSAA16 mode, the fragment shader will run a minimum of * 8 times per pixel. The default value is zero. */ - float getSampleShading() const override { - return fSampleShading; - } + float getSampleShading() const final { return fSampleShading; } protected: void setWillUseGeoShader() { fWillUseGeoShader = true; } diff --git a/src/gpu/effects/GrBezierEffect.cpp b/src/gpu/effects/GrBezierEffect.cpp index 50c47e8d78..706353a08f 100644 --- a/src/gpu/effects/GrBezierEffect.cpp +++ b/src/gpu/effects/GrBezierEffect.cpp @@ -86,12 +86,12 @@ void GrGLConicEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform); // Setup position - this->setupPosition(vertBuilder, - uniformHandler, - gpArgs, - gp.inPosition()->fName, - gp.viewMatrix(), - &fViewMatrixUniform); + this->writeOutputPosition(vertBuilder, + uniformHandler, + gpArgs, + gp.inPosition()->fName, + gp.viewMatrix(), + &fViewMatrixUniform); // emit transforms with position this->emitTransforms(vertBuilder, @@ -347,12 +347,12 @@ void GrGLQuadEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform); // Setup position - this->setupPosition(vertBuilder, - uniformHandler, - gpArgs, - gp.inPosition()->fName, - gp.viewMatrix(), - &fViewMatrixUniform); + this->writeOutputPosition(vertBuilder, + uniformHandler, + gpArgs, + gp.inPosition()->fName, + gp.viewMatrix(), + &fViewMatrixUniform); // emit transforms with position this->emitTransforms(vertBuilder, @@ -552,12 +552,12 @@ void GrGLCubicEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { } // Setup position - this->setupPosition(vertBuilder, - uniformHandler, - gpArgs, - gp.inPosition()->fName, - gp.viewMatrix(), - &fViewMatrixUniform); + this->writeOutputPosition(vertBuilder, + uniformHandler, + gpArgs, + gp.inPosition()->fName, + gp.viewMatrix(), + &fViewMatrixUniform); // Setup KLM const char* devkLMMatrixName; diff --git a/src/gpu/effects/GrBitmapTextGeoProc.cpp b/src/gpu/effects/GrBitmapTextGeoProc.cpp index 8bba1d7237..a934ff10f7 100644 --- a/src/gpu/effects/GrBitmapTextGeoProc.cpp +++ b/src/gpu/effects/GrBitmapTextGeoProc.cpp @@ -49,7 +49,7 @@ public: } // Setup position - this->setupPosition(vertBuilder, gpArgs, cte.inPosition()->fName); + this->writeOutputPosition(vertBuilder, gpArgs, cte.inPosition()->fName); // emit transforms this->emitTransforms(vertBuilder, diff --git a/src/gpu/effects/GrDistanceFieldGeoProc.cpp b/src/gpu/effects/GrDistanceFieldGeoProc.cpp index 0dfb315960..8dd2fa617a 100644 --- a/src/gpu/effects/GrDistanceFieldGeoProc.cpp +++ b/src/gpu/effects/GrDistanceFieldGeoProc.cpp @@ -54,12 +54,12 @@ public: varyingHandler->addPassThroughAttribute(dfTexEffect.inColor(), args.fOutputColor); // Setup position - this->setupPosition(vertBuilder, - uniformHandler, - gpArgs, - dfTexEffect.inPosition()->fName, - dfTexEffect.viewMatrix(), - &fViewMatrixUniform); + this->writeOutputPosition(vertBuilder, + uniformHandler, + gpArgs, + dfTexEffect.inPosition()->fName, + dfTexEffect.viewMatrix(), + &fViewMatrixUniform); // emit transforms this->emitTransforms(vertBuilder, @@ -331,12 +331,12 @@ public: vertBuilder->codeAppendf("%s = %s;", v.vsOut(), dfTexEffect.inTextureCoords()->fName); // Setup position - this->setupPosition(vertBuilder, - uniformHandler, - gpArgs, - dfTexEffect.inPosition()->fName, - dfTexEffect.viewMatrix(), - &fViewMatrixUniform); + this->writeOutputPosition(vertBuilder, + uniformHandler, + gpArgs, + dfTexEffect.inPosition()->fName, + dfTexEffect.viewMatrix(), + &fViewMatrixUniform); // emit transforms this->emitTransforms(vertBuilder, @@ -568,12 +568,12 @@ public: varyingHandler->addPassThroughAttribute(dfTexEffect.inColor(), args.fOutputColor); // Setup position - this->setupPosition(vertBuilder, - uniformHandler, - gpArgs, - dfTexEffect.inPosition()->fName, - dfTexEffect.viewMatrix(), - &fViewMatrixUniform); + this->writeOutputPosition(vertBuilder, + uniformHandler, + gpArgs, + dfTexEffect.inPosition()->fName, + dfTexEffect.viewMatrix(), + &fViewMatrixUniform); // emit transforms this->emitTransforms(vertBuilder, diff --git a/src/gpu/effects/GrShadowGeoProc.cpp b/src/gpu/effects/GrShadowGeoProc.cpp index 046240cb1d..297dd50ada 100644 --- a/src/gpu/effects/GrShadowGeoProc.cpp +++ b/src/gpu/effects/GrShadowGeoProc.cpp @@ -33,7 +33,7 @@ public: varyingHandler->addPassThroughAttribute(rsgp.inColor(), args.fOutputColor); // Setup position - this->setupPosition(vertBuilder, gpArgs, rsgp.inPosition()->fName); + this->writeOutputPosition(vertBuilder, gpArgs, rsgp.inPosition()->fName); // emit transforms this->emitTransforms(vertBuilder, diff --git a/src/gpu/glsl/GrGLSLGeometryProcessor.cpp b/src/gpu/glsl/GrGLSLGeometryProcessor.cpp index 3ab5b68140..a390036fe2 100644 --- a/src/gpu/glsl/GrGLSLGeometryProcessor.cpp +++ b/src/gpu/glsl/GrGLSLGeometryProcessor.cpp @@ -85,19 +85,19 @@ void GrGLSLGeometryProcessor::setTransformDataHelper(const SkMatrix& localMatrix SkASSERT(i == fInstalledTransforms.count()); } -void GrGLSLGeometryProcessor::setupPosition(GrGLSLVertexBuilder* vertBuilder, - GrGPArgs* gpArgs, - const char* posName) { +void GrGLSLGeometryProcessor::writeOutputPosition(GrGLSLVertexBuilder* vertBuilder, + GrGPArgs* gpArgs, + const char* posName) { gpArgs->fPositionVar.set(kVec2f_GrSLType, "pos2"); vertBuilder->codeAppendf("float2 %s = %s;", gpArgs->fPositionVar.c_str(), posName); } -void GrGLSLGeometryProcessor::setupPosition(GrGLSLVertexBuilder* vertBuilder, - GrGLSLUniformHandler* uniformHandler, - GrGPArgs* gpArgs, - const char* posName, - const SkMatrix& mat, - UniformHandle* viewMatrixUniform) { +void GrGLSLGeometryProcessor::writeOutputPosition(GrGLSLVertexBuilder* vertBuilder, + GrGLSLUniformHandler* uniformHandler, + GrGPArgs* gpArgs, + const char* posName, + const SkMatrix& mat, + UniformHandle* viewMatrixUniform) { if (mat.isIdentity()) { gpArgs->fPositionVar.set(kVec2f_GrSLType, "pos2"); vertBuilder->codeAppendf("float2 %s = %s;", gpArgs->fPositionVar.c_str(), posName); diff --git a/src/gpu/glsl/GrGLSLGeometryProcessor.h b/src/gpu/glsl/GrGLSLGeometryProcessor.h index 10a4aa8a1c..17a67797d0 100644 --- a/src/gpu/glsl/GrGLSLGeometryProcessor.h +++ b/src/gpu/glsl/GrGLSLGeometryProcessor.h @@ -20,10 +20,10 @@ class GrGLSLGPBuilder; class GrGLSLGeometryProcessor : public GrGLSLPrimitiveProcessor { public: /* Any general emit code goes in the base class emitCode. Subclasses override onEmitCode */ - void emitCode(EmitArgs&) override; + void emitCode(EmitArgs&) final; protected: - // A helper which subclasses can use if needed and used above in the default setTransformData(). + // A helper which subclasses can use to upload coord transform matrices in setData(). void setTransformDataHelper(const SkMatrix& localMatrix, const GrGLSLProgramDataManager& pdman, FPCoordTransformIter*); @@ -39,7 +39,7 @@ protected: posVar, localCoords, SkMatrix::I(), handler); } - // Emit pre-transformed coords as a vertex attribute per coord-transform. + // Emit pre-transformed coords as a varying per coord-transform. void emitTransforms(GrGLSLVertexBuilder*, GrGLSLVaryingHandler*, GrGLSLUniformHandler*, @@ -49,19 +49,25 @@ protected: FPCoordTransformHandler*); struct GrGPArgs { - // The variable used by a GP to store its position. It can be - // either a float2 or a float3 depending on the presence of perspective. + // Used to specify the output variable used by the GP to store its device position. It can + // either be a float2 or a float3 (in order to handle perspective). The subclass sets this + // in its onEmitCode(). GrShaderVar fPositionVar; }; - // Create the correct type of position variable given the CTM - void setupPosition(GrGLSLVertexBuilder*, GrGPArgs*, const char* posName); - void setupPosition(GrGLSLVertexBuilder*, - GrGLSLUniformHandler* uniformHandler, - GrGPArgs*, - const char* posName, - const SkMatrix& mat, - UniformHandle* viewMatrixUniform); + // Helpers for adding code to write the transformed vertex position. The first simple version + // just writes a variable named by 'posName' into the position output variable with the + // assumption that the position is 2D. The second version transforms the input position by a + // view matrix and the output variable is 2D or 3D depending on whether the view matrix is + // perspective. Both versions declare the output position variable and will set + // GrGPArgs::fPositionVar. + void writeOutputPosition(GrGLSLVertexBuilder*, GrGPArgs*, const char* posName); + void writeOutputPosition(GrGLSLVertexBuilder*, + GrGLSLUniformHandler* uniformHandler, + GrGPArgs*, + const char* posName, + const SkMatrix& mat, + UniformHandle* viewMatrixUniform); static uint32_t ComputePosKey(const SkMatrix& mat) { if (mat.isIdentity()) { diff --git a/src/gpu/ops/GrAAConvexPathRenderer.cpp b/src/gpu/ops/GrAAConvexPathRenderer.cpp index af32a14bd5..cdb0c66e81 100644 --- a/src/gpu/ops/GrAAConvexPathRenderer.cpp +++ b/src/gpu/ops/GrAAConvexPathRenderer.cpp @@ -574,7 +574,7 @@ public: GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder; // Setup position - this->setupPosition(vertBuilder, gpArgs, qe.fInPosition->fName); + this->writeOutputPosition(vertBuilder, gpArgs, qe.fInPosition->fName); // emit transforms this->emitTransforms(vertBuilder, diff --git a/src/gpu/ops/GrDashOp.cpp b/src/gpu/ops/GrDashOp.cpp index b00f816840..14c15cb07a 100644 --- a/src/gpu/ops/GrDashOp.cpp +++ b/src/gpu/ops/GrDashOp.cpp @@ -896,7 +896,7 @@ void GLDashingCircleEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform); // Setup position - this->setupPosition(vertBuilder, gpArgs, dce.inPosition()->fName); + this->writeOutputPosition(vertBuilder, gpArgs, dce.inPosition()->fName); // emit transforms this->emitTransforms(vertBuilder, @@ -1100,7 +1100,7 @@ void GLDashingLineEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) { this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform); // Setup position - this->setupPosition(vertBuilder, gpArgs, de.inPosition()->fName); + this->writeOutputPosition(vertBuilder, gpArgs, de.inPosition()->fName); // emit transforms this->emitTransforms(vertBuilder, diff --git a/src/gpu/ops/GrMSAAPathRenderer.cpp b/src/gpu/ops/GrMSAAPathRenderer.cpp index 072692aa93..ef19367f61 100644 --- a/src/gpu/ops/GrMSAAPathRenderer.cpp +++ b/src/gpu/ops/GrMSAAPathRenderer.cpp @@ -145,8 +145,8 @@ public: vsBuilder->codeAppendf("%s = %s;", uv.vsOut(), qp.inUV()->fName); // Setup position - this->setupPosition(vsBuilder, uniformHandler, gpArgs, qp.inPosition()->fName, - qp.viewMatrix(), &fViewMatrixUniform); + this->writeOutputPosition(vsBuilder, uniformHandler, gpArgs, qp.inPosition()->fName, + qp.viewMatrix(), &fViewMatrixUniform); // emit transforms this->emitTransforms(vsBuilder, varyingHandler, uniformHandler, gpArgs->fPositionVar, diff --git a/src/gpu/ops/GrOvalOpFactory.cpp b/src/gpu/ops/GrOvalOpFactory.cpp index b175786177..247a4ea7bd 100644 --- a/src/gpu/ops/GrOvalOpFactory.cpp +++ b/src/gpu/ops/GrOvalOpFactory.cpp @@ -141,7 +141,7 @@ private: varyingHandler->addPassThroughAttribute(cgp.fInColor, args.fOutputColor); // Setup position - this->setupPosition(vertBuilder, gpArgs, cgp.fInPosition->fName); + this->writeOutputPosition(vertBuilder, gpArgs, cgp.fInPosition->fName); // emit transforms this->emitTransforms(vertBuilder, @@ -289,7 +289,7 @@ private: varyingHandler->addPassThroughAttribute(egp.fInColor, args.fOutputColor); // Setup position - this->setupPosition(vertBuilder, gpArgs, egp.fInPosition->fName); + this->writeOutputPosition(vertBuilder, gpArgs, egp.fInPosition->fName); // emit transforms this->emitTransforms(vertBuilder, @@ -429,12 +429,12 @@ private: varyingHandler->addPassThroughAttribute(diegp.fInColor, args.fOutputColor); // Setup position - this->setupPosition(vertBuilder, - uniformHandler, - gpArgs, - diegp.fInPosition->fName, - diegp.fViewMatrix, - &fViewMatrixUniform); + this->writeOutputPosition(vertBuilder, + uniformHandler, + gpArgs, + diegp.fInPosition->fName, + diegp.fViewMatrix, + &fViewMatrixUniform); // emit transforms this->emitTransforms(vertBuilder, |