From e4f2461113806e3080aeb8bc5637e82d1b3d8295 Mon Sep 17 00:00:00 2001 From: bsalomon Date: Wed, 17 Aug 2016 10:30:17 -0700 Subject: [PATCH] Detemplatize GrGLSLGeometryProcessor::setTransformDataHelper() Instead take a local matrix parameter. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2250563004 Review-Url: https://codereview.chromium.org/2250563004 --- src/gpu/GrDefaultGeoProcFactory.cpp | 3 ++- src/gpu/GrOvalRenderer.cpp | 12 ++++------ src/gpu/batches/GrAAConvexPathRenderer.cpp | 3 ++- src/gpu/batches/GrAnalyticRectBatch.cpp | 3 ++- src/gpu/batches/GrMSAAPathRenderer.cpp | 8 ------- src/gpu/batches/GrPLSPathRenderer.cpp | 9 +++++--- src/gpu/effects/GrBezierEffect.cpp | 6 +++-- src/gpu/effects/GrBitmapTextGeoProc.cpp | 3 ++- src/gpu/effects/GrDashingEffect.cpp | 6 +++-- 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 9efd9eb..f76acc6 100644 --- a/src/gpu/GrDefaultGeoProcFactory.cpp +++ b/src/gpu/GrDefaultGeoProcFactory.cpp @@ -186,7 +186,8 @@ public: const GrGLSLProgramDataManager& pdman, int index, const SkTArray& transforms) override { - this->setTransformDataHelper(primProc, pdman, index, transforms); + this->setTransformDataHelper(primProc.cast().fLocalMatrix, pdman, index, + transforms); } private: diff --git a/src/gpu/GrOvalRenderer.cpp b/src/gpu/GrOvalRenderer.cpp index 9311f5b..1b8124f 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& transforms) override { - this->setTransformDataHelper(primProc, pdman, index, - transforms); + this->setTransformDataHelper(primProc.cast().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& transforms) override { - this->setTransformDataHelper(primProc, pdman, index, - transforms); + this->setTransformDataHelper(primProc.cast().fLocalMatrix, + pdman, index, transforms); } private: diff --git a/src/gpu/batches/GrAAConvexPathRenderer.cpp b/src/gpu/batches/GrAAConvexPathRenderer.cpp index b0ddaeb..1ce0083 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& transforms) override { - this->setTransformDataHelper(primProc, pdman, index, transforms); + this->setTransformDataHelper(primProc.cast().fLocalMatrix, pdman, index, + transforms); } private: diff --git a/src/gpu/batches/GrAnalyticRectBatch.cpp b/src/gpu/batches/GrAnalyticRectBatch.cpp index b13ea77..4d75d91 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& transforms) override { - this->setTransformDataHelper(primProc, pdman, index, transforms); + this->setTransformDataHelper(primProc.cast().fLocalMatrix, pdman, + index, transforms); } private: diff --git a/src/gpu/batches/GrMSAAPathRenderer.cpp b/src/gpu/batches/GrMSAAPathRenderer.cpp index ec54f32..324a976 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& transforms) override { - this->setTransformDataHelper(primProc, pdman, index, transforms); - } - private: typedef GrGLSLGeometryProcessor INHERITED; diff --git a/src/gpu/batches/GrPLSPathRenderer.cpp b/src/gpu/batches/GrPLSPathRenderer.cpp index c022e16..fa0bd90 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& transforms) override { - this->setTransformDataHelper(primProc, pdman, index, transforms); + this->setTransformDataHelper(primProc.cast().fLocalMatrix, pdman, + index, transforms); } private: @@ -588,7 +589,8 @@ public: const GrGLSLProgramDataManager& pdman, int index, const SkTArray& transforms) override { - this->setTransformDataHelper(primProc, pdman, index, transforms); + this->setTransformDataHelper(primProc.cast().fLocalMatrix, pdman, + index, transforms); } private: @@ -731,7 +733,8 @@ public: const GrGLSLProgramDataManager& pdman, int index, const SkTArray& transforms) override { - this->setTransformDataHelper(primProc, pdman, index, transforms); + this->setTransformDataHelper(primProc.cast().fLocalMatrix, pdman, + index, transforms); } private: diff --git a/src/gpu/effects/GrBezierEffect.cpp b/src/gpu/effects/GrBezierEffect.cpp index 9d3e8ee..1904b20 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& transforms) override { - this->setTransformDataHelper(primProc, pdman, index, transforms); + this->setTransformDataHelper(primProc.cast().localMatrix(), pdman, index, + transforms); } private: @@ -327,7 +328,8 @@ public: const GrGLSLProgramDataManager& pdman, int index, const SkTArray& transforms) override { - this->setTransformDataHelper(primProc, pdman, index, transforms); + this->setTransformDataHelper(primProc.cast().localMatrix(), pdman, index, + transforms); } private: diff --git a/src/gpu/effects/GrBitmapTextGeoProc.cpp b/src/gpu/effects/GrBitmapTextGeoProc.cpp index 633a880..e0ec49c 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& transforms) override { - this->setTransformDataHelper(primProc, pdman, index, transforms); + this->setTransformDataHelper(primProc.cast().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 5949f1f..1848c18 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& transforms) override { - this->setTransformDataHelper(primProc, pdman, index, transforms); + this->setTransformDataHelper(primProc.cast().localMatrix(), pdman, + index, transforms); } private: @@ -1043,7 +1044,8 @@ public: const GrGLSLProgramDataManager& pdman, int index, const SkTArray& transforms) override { - this->setTransformDataHelper(primProc, pdman, index, transforms); + this->setTransformDataHelper(primProc.cast().localMatrix(), pdman, index, + transforms); } private: diff --git a/src/gpu/glsl/GrGLSLGeometryProcessor.h b/src/gpu/glsl/GrGLSLGeometryProcessor.h index 72f00f1..00652a5 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& 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 - 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& transforms) { - const GeometryProcessor& gp = primProc.cast(); - 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& 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 { -- 2.7.4