aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/gpu/GrDefaultGeoProcFactory.cpp3
-rw-r--r--src/gpu/GrOvalRenderer.cpp12
-rw-r--r--src/gpu/batches/GrAAConvexPathRenderer.cpp3
-rw-r--r--src/gpu/batches/GrAnalyticRectBatch.cpp3
-rw-r--r--src/gpu/batches/GrMSAAPathRenderer.cpp8
-rw-r--r--src/gpu/batches/GrPLSPathRenderer.cpp9
-rw-r--r--src/gpu/effects/GrBezierEffect.cpp6
-rw-r--r--src/gpu/effects/GrBitmapTextGeoProc.cpp3
-rw-r--r--src/gpu/effects/GrDashingEffect.cpp6
-rw-r--r--src/gpu/glsl/GrGLSLGeometryProcessor.h35
10 files changed, 39 insertions, 49 deletions
diff --git a/src/gpu/GrDefaultGeoProcFactory.cpp b/src/gpu/GrDefaultGeoProcFactory.cpp
index 9efd9eb718..f76acc6907 100644
--- a/src/gpu/GrDefaultGeoProcFactory.cpp
+++ b/src/gpu/GrDefaultGeoProcFactory.cpp
@@ -186,7 +186,8 @@ public:
const GrGLSLProgramDataManager& pdman,
int index,
const SkTArray<const GrCoordTransform*, true>& transforms) override {
- this->setTransformDataHelper<DefaultGeoProc>(primProc, pdman, index, transforms);
+ this->setTransformDataHelper(primProc.cast<DefaultGeoProc>().fLocalMatrix, pdman, index,
+ transforms);
}
private:
diff --git a/src/gpu/GrOvalRenderer.cpp b/src/gpu/GrOvalRenderer.cpp
index 9311f5ba9f..1b8124f122 100644
--- a/src/gpu/GrOvalRenderer.cpp
+++ b/src/gpu/GrOvalRenderer.cpp
@@ -91,8 +91,6 @@ public:
bool implementsDistanceVector() const override { return true; };
- const SkMatrix& localMatrix() const { return fLocalMatrix; }
-
virtual ~CircleGeometryProcessor() {}
const char* name() const override { return "CircleEdge"; }
@@ -184,8 +182,8 @@ private:
const GrGLSLProgramDataManager& pdman,
int index,
const SkTArray<const GrCoordTransform*, true>& transforms) override {
- this->setTransformDataHelper<CircleGeometryProcessor>(primProc, pdman, index,
- transforms);
+ this->setTransformDataHelper(primProc.cast<CircleGeometryProcessor>().fLocalMatrix,
+ pdman, index, transforms);
}
private:
@@ -238,8 +236,6 @@ public:
const char* name() const override { return "EllipseEdge"; }
- const SkMatrix& localMatrix() const { return fLocalMatrix; }
-
void getGLSLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyBuilder* b) const override {
GLSLProcessor::GenKey(*this, caps, b);
}
@@ -331,8 +327,8 @@ private:
const GrGLSLProgramDataManager& pdman,
int index,
const SkTArray<const GrCoordTransform*, true>& transforms) override {
- this->setTransformDataHelper<EllipseGeometryProcessor>(primProc, pdman, index,
- transforms);
+ this->setTransformDataHelper(primProc.cast<EllipseGeometryProcessor>().fLocalMatrix,
+ pdman, index, transforms);
}
private:
diff --git a/src/gpu/batches/GrAAConvexPathRenderer.cpp b/src/gpu/batches/GrAAConvexPathRenderer.cpp
index b0ddaeb65c..1ce0083cf2 100644
--- a/src/gpu/batches/GrAAConvexPathRenderer.cpp
+++ b/src/gpu/batches/GrAAConvexPathRenderer.cpp
@@ -628,7 +628,8 @@ public:
const GrGLSLProgramDataManager& pdman,
int index,
const SkTArray<const GrCoordTransform*, true>& transforms) override {
- this->setTransformDataHelper<QuadEdgeEffect>(primProc, pdman, index, transforms);
+ this->setTransformDataHelper(primProc.cast<QuadEdgeEffect>().fLocalMatrix, pdman, index,
+ transforms);
}
private:
diff --git a/src/gpu/batches/GrAnalyticRectBatch.cpp b/src/gpu/batches/GrAnalyticRectBatch.cpp
index b13ea77a66..4d75d91a50 100644
--- a/src/gpu/batches/GrAnalyticRectBatch.cpp
+++ b/src/gpu/batches/GrAnalyticRectBatch.cpp
@@ -202,7 +202,8 @@ public:
const GrGLSLProgramDataManager& pdman,
int index,
const SkTArray<const GrCoordTransform*, true>& transforms) override {
- this->setTransformDataHelper<RectGeometryProcessor>(primProc, pdman, index, transforms);
+ this->setTransformDataHelper(primProc.cast<RectGeometryProcessor>().fLocalMatrix, pdman,
+ index, transforms);
}
private:
diff --git a/src/gpu/batches/GrMSAAPathRenderer.cpp b/src/gpu/batches/GrMSAAPathRenderer.cpp
index ec54f320de..324a976513 100644
--- a/src/gpu/batches/GrMSAAPathRenderer.cpp
+++ b/src/gpu/batches/GrMSAAPathRenderer.cpp
@@ -122,7 +122,6 @@ public:
const Attribute* inUV() const { return fInUV; }
const Attribute* inColor() const { return fInColor; }
const SkMatrix& viewMatrix() const { return fViewMatrix; }
- const SkMatrix& localMatrix() const { return SkMatrix::I(); }
class GLSLProcessor : public GrGLSLGeometryProcessor {
public:
@@ -177,13 +176,6 @@ public:
}
}
- void setTransformData(const GrPrimitiveProcessor& primProc,
- const GrGLSLProgramDataManager& pdman,
- int index,
- const SkTArray<const GrCoordTransform*, true>& transforms) override {
- this->setTransformDataHelper<MSAAQuadProcessor>(primProc, pdman, index, transforms);
- }
-
private:
typedef GrGLSLGeometryProcessor INHERITED;
diff --git a/src/gpu/batches/GrPLSPathRenderer.cpp b/src/gpu/batches/GrPLSPathRenderer.cpp
index c022e1642c..fa0bd90ca9 100644
--- a/src/gpu/batches/GrPLSPathRenderer.cpp
+++ b/src/gpu/batches/GrPLSPathRenderer.cpp
@@ -399,7 +399,8 @@ public:
const GrGLSLProgramDataManager& pdman,
int index,
const SkTArray<const GrCoordTransform*, true>& transforms) override {
- this->setTransformDataHelper<PLSAATriangleEffect>(primProc, pdman, index, transforms);
+ this->setTransformDataHelper(primProc.cast<PLSAATriangleEffect>().fLocalMatrix, pdman,
+ index, transforms);
}
private:
@@ -588,7 +589,8 @@ public:
const GrGLSLProgramDataManager& pdman,
int index,
const SkTArray<const GrCoordTransform*, true>& transforms) override {
- this->setTransformDataHelper<PLSQuadEdgeEffect>(primProc, pdman, index, transforms);
+ this->setTransformDataHelper(primProc.cast<PLSQuadEdgeEffect>().fLocalMatrix, pdman,
+ index, transforms);
}
private:
@@ -731,7 +733,8 @@ public:
const GrGLSLProgramDataManager& pdman,
int index,
const SkTArray<const GrCoordTransform*, true>& transforms) override {
- this->setTransformDataHelper<PLSFinishEffect>(primProc, pdman, index, transforms);
+ this->setTransformDataHelper(primProc.cast<PLSFinishEffect>().fLocalMatrix, pdman,
+ index, transforms);
}
private:
diff --git a/src/gpu/effects/GrBezierEffect.cpp b/src/gpu/effects/GrBezierEffect.cpp
index 9d3e8eec4f..1904b203df 100644
--- a/src/gpu/effects/GrBezierEffect.cpp
+++ b/src/gpu/effects/GrBezierEffect.cpp
@@ -53,7 +53,8 @@ public:
const GrGLSLProgramDataManager& pdman,
int index,
const SkTArray<const GrCoordTransform*, true>& transforms) override {
- this->setTransformDataHelper<GrConicEffect>(primProc, pdman, index, transforms);
+ this->setTransformDataHelper(primProc.cast<GrConicEffect>().localMatrix(), pdman, index,
+ transforms);
}
private:
@@ -327,7 +328,8 @@ public:
const GrGLSLProgramDataManager& pdman,
int index,
const SkTArray<const GrCoordTransform*, true>& transforms) override {
- this->setTransformDataHelper<GrQuadEffect>(primProc, pdman, index, transforms);
+ this->setTransformDataHelper(primProc.cast<GrQuadEffect>().localMatrix(), pdman, index,
+ transforms);
}
private:
diff --git a/src/gpu/effects/GrBitmapTextGeoProc.cpp b/src/gpu/effects/GrBitmapTextGeoProc.cpp
index 633a8806ef..e0ec49c271 100644
--- a/src/gpu/effects/GrBitmapTextGeoProc.cpp
+++ b/src/gpu/effects/GrBitmapTextGeoProc.cpp
@@ -98,7 +98,8 @@ public:
const GrGLSLProgramDataManager& pdman,
int index,
const SkTArray<const GrCoordTransform*, true>& transforms) override {
- this->setTransformDataHelper<GrBitmapTextGeoProc>(primProc, pdman, index, transforms);
+ this->setTransformDataHelper(primProc.cast<GrBitmapTextGeoProc>().localMatrix(), pdman,
+ index, transforms);
}
static inline void GenKey(const GrGeometryProcessor& proc,
diff --git a/src/gpu/effects/GrDashingEffect.cpp b/src/gpu/effects/GrDashingEffect.cpp
index 5949f1f8f2..1848c18dce 100644
--- a/src/gpu/effects/GrDashingEffect.cpp
+++ b/src/gpu/effects/GrDashingEffect.cpp
@@ -823,7 +823,8 @@ public:
const GrGLSLProgramDataManager& pdman,
int index,
const SkTArray<const GrCoordTransform*, true>& transforms) override {
- this->setTransformDataHelper<DashingCircleEffect>(primProc, pdman, index, transforms);
+ this->setTransformDataHelper(primProc.cast<DashingCircleEffect>().localMatrix(), pdman,
+ index, transforms);
}
private:
@@ -1043,7 +1044,8 @@ public:
const GrGLSLProgramDataManager& pdman,
int index,
const SkTArray<const GrCoordTransform*, true>& transforms) override {
- this->setTransformDataHelper<DashingLineEffect>(primProc, pdman, index, transforms);
+ this->setTransformDataHelper(primProc.cast<DashingLineEffect>().localMatrix(), pdman, index,
+ transforms);
}
private:
diff --git a/src/gpu/glsl/GrGLSLGeometryProcessor.h b/src/gpu/glsl/GrGLSLGeometryProcessor.h
index 72f00f1509..00652a5b99 100644
--- a/src/gpu/glsl/GrGLSLGeometryProcessor.h
+++ b/src/gpu/glsl/GrGLSLGeometryProcessor.h
@@ -27,18 +27,25 @@ public:
const GrGLSLProgramDataManager& pdman,
int index,
const SkTArray<const GrCoordTransform*, true>& transforms) override {
- this->setTransformDataMatrix(SkMatrix::I(), pdman, index, transforms);
+ this->setTransformDataHelper(SkMatrix::I(), pdman, index, transforms);
}
protected:
- // A helper which subclasses can use if needed
- template <class GeometryProcessor>
- void setTransformDataHelper(const GrPrimitiveProcessor& primProc,
+ // A helper which subclasses can use if needed and used above in the default setTransformData().
+ void setTransformDataHelper(const SkMatrix& localMatrix,
const GrGLSLProgramDataManager& pdman,
int index,
const SkTArray<const GrCoordTransform*, true>& transforms) {
- const GeometryProcessor& gp = primProc.cast<GeometryProcessor>();
- this->setTransformDataMatrix(gp.localMatrix(), pdman, index, transforms);
+ SkSTArray<2, UniformTransform, true>& procTransforms = fInstalledTransforms[index];
+ int numTransforms = transforms.count();
+ for (int t = 0; t < numTransforms; ++t) {
+ SkASSERT(procTransforms[t].fHandle.isValid());
+ const SkMatrix& transform = GetTransformMatrix(localMatrix, *transforms[t]);
+ if (!procTransforms[t].fCurrentValue.cheapEqualTo(transform)) {
+ pdman.setSkMatrix(procTransforms[t].fHandle.toIndex(), transform);
+ procTransforms[t].fCurrentValue = transform;
+ }
+ }
}
// Emit a uniform matrix for each coord transform.
@@ -96,22 +103,6 @@ protected:
}
private:
- void setTransformDataMatrix(const SkMatrix& localMatrix,
- const GrGLSLProgramDataManager& pdman,
- int index,
- const SkTArray<const GrCoordTransform*, true>& transforms) {
- SkSTArray<2, UniformTransform, true>& procTransforms = fInstalledTransforms[index];
- int numTransforms = transforms.count();
- for (int t = 0; t < numTransforms; ++t) {
- SkASSERT(procTransforms[t].fHandle.isValid());
- const SkMatrix& transform = GetTransformMatrix(localMatrix, *transforms[t]);
- if (!procTransforms[t].fCurrentValue.cheapEqualTo(transform)) {
- pdman.setSkMatrix(procTransforms[t].fHandle.toIndex(), transform);
- procTransforms[t].fCurrentValue = transform;
- }
- }
- }
-
virtual void onEmitCode(EmitArgs&, GrGPArgs*) = 0;
struct UniformTransform : public Transform {