aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gpu/GrDefaultGeoProcFactory.cpp12
-rw-r--r--src/gpu/GrGeometryProcessor.h8
-rw-r--r--src/gpu/effects/GrBezierEffect.cpp36
-rw-r--r--src/gpu/effects/GrBitmapTextGeoProc.cpp2
-rw-r--r--src/gpu/effects/GrDistanceFieldGeoProc.cpp36
-rw-r--r--src/gpu/effects/GrShadowGeoProc.cpp2
-rw-r--r--src/gpu/glsl/GrGLSLGeometryProcessor.cpp18
-rw-r--r--src/gpu/glsl/GrGLSLGeometryProcessor.h32
-rw-r--r--src/gpu/ops/GrAAConvexPathRenderer.cpp2
-rw-r--r--src/gpu/ops/GrDashOp.cpp4
-rw-r--r--src/gpu/ops/GrMSAAPathRenderer.cpp4
-rw-r--r--src/gpu/ops/GrOvalOpFactory.cpp16
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,