diff options
Diffstat (limited to 'src/gpu')
-rw-r--r-- | src/gpu/GrDefaultGeoProcFactory.cpp | 3 | ||||
-rw-r--r-- | src/gpu/GrOvalRenderer.cpp | 12 | ||||
-rw-r--r-- | src/gpu/batches/GrAAConvexPathRenderer.cpp | 3 | ||||
-rw-r--r-- | src/gpu/batches/GrAnalyticRectBatch.cpp | 3 | ||||
-rw-r--r-- | src/gpu/batches/GrMSAAPathRenderer.cpp | 8 | ||||
-rw-r--r-- | src/gpu/batches/GrPLSPathRenderer.cpp | 9 | ||||
-rw-r--r-- | src/gpu/effects/GrBezierEffect.cpp | 6 | ||||
-rw-r--r-- | src/gpu/effects/GrBitmapTextGeoProc.cpp | 3 | ||||
-rw-r--r-- | src/gpu/effects/GrDashingEffect.cpp | 6 | ||||
-rw-r--r-- | src/gpu/glsl/GrGLSLGeometryProcessor.h | 35 |
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 { |