diff options
author | 2017-01-27 10:59:27 -0500 | |
---|---|---|
committer | 2017-01-27 16:43:38 +0000 | |
commit | 587e08f361ee3e775a6bbc6dca761dbba82e422c (patch) | |
tree | 9f64e10d50fab820419d29dea30a6c978c86c8c9 /src/core | |
parent | 4d3adb6b0dea1c9f74fc00b007dfb1af425fc727 (diff) |
Revert "Revert "Start of rewrite of GrFragmentProcessor optimizations.""
This reverts commit 052fd5158f7f85e478a9f87c45fecaacf7d0f5f3.
Disables the test (of unused code) until platform-specific issues are addressed.
Change-Id: I7aa23a07954fccf382aa07d28afcbffb0bebcd6d
Reviewed-on: https://skia-review.googlesource.com/7656
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkColorMatrixFilterRowMajor255.cpp | 5 | ||||
-rw-r--r-- | src/core/SkLightingShader.cpp | 6 | ||||
-rw-r--r-- | src/core/SkNormalBevelSource.cpp | 11 | ||||
-rw-r--r-- | src/core/SkNormalFlatSource.cpp | 15 | ||||
-rw-r--r-- | src/core/SkNormalMapSource.cpp | 4 |
5 files changed, 26 insertions, 15 deletions
diff --git a/src/core/SkColorMatrixFilterRowMajor255.cpp b/src/core/SkColorMatrixFilterRowMajor255.cpp index 2bcc79e4cc..167fd21b38 100644 --- a/src/core/SkColorMatrixFilterRowMajor255.cpp +++ b/src/core/SkColorMatrixFilterRowMajor255.cpp @@ -345,9 +345,10 @@ public: typedef GrGLSLFragmentProcessor INHERITED; }; - private: - ColorMatrixEffect(const SkScalar matrix[20]) { + // We could implement the constant input->constant output optimization but haven't. Other + // optimizations would be matrix-dependent. + ColorMatrixEffect(const SkScalar matrix[20]) : INHERITED(kNone_OptimizationFlags) { memcpy(fMatrix, matrix, sizeof(SkScalar) * 20); this->initClassID<ColorMatrixEffect>(); } diff --git a/src/core/SkLightingShader.cpp b/src/core/SkLightingShader.cpp index bb2828a13e..4ed0057682 100644 --- a/src/core/SkLightingShader.cpp +++ b/src/core/SkLightingShader.cpp @@ -117,8 +117,8 @@ private: // premul'd. class LightingFP : public GrFragmentProcessor { public: - LightingFP(sk_sp<GrFragmentProcessor> normalFP, sk_sp<SkLights> lights) { - + LightingFP(sk_sp<GrFragmentProcessor> normalFP, sk_sp<SkLights> lights) + : INHERITED(kPreservesOpaqueInput_OptimizationFlag) { // fuse all ambient lights into a single one fAmbientColor = lights->ambientLightColor(); for (int i = 0; i < lights->numLights(); ++i) { @@ -263,6 +263,8 @@ private: SkTArray<SkLights::Light> fDirectionalLights; SkColor3f fAmbientColor; + + typedef GrFragmentProcessor INHERITED; }; //////////////////////////////////////////////////////////////////////////// diff --git a/src/core/SkNormalBevelSource.cpp b/src/core/SkNormalBevelSource.cpp index bcdb999c15..5d49253b01 100644 --- a/src/core/SkNormalBevelSource.cpp +++ b/src/core/SkNormalBevelSource.cpp @@ -30,12 +30,13 @@ class NormalBevelFP : public GrFragmentProcessor { public: NormalBevelFP(SkNormalSource::BevelType bevelType, SkScalar bevelWidth, SkScalar bevelHeight) - : fBevelType(bevelType) - , fBevelWidth(bevelWidth) - , fBevelHeight(bevelHeight) { + : INHERITED(kNone_OptimizationFlags) + , fBevelType(bevelType) + , fBevelWidth(bevelWidth) + , fBevelHeight(bevelHeight) { this->initClassID<NormalBevelFP>(); - fUsesDistanceVectorField = true; + this->setWillUseDistanceVectorField(); } class GLSLNormalBevelFP : public GLSLNormalFP { @@ -239,6 +240,8 @@ private: SkNormalSource::BevelType fBevelType; SkScalar fBevelWidth; SkScalar fBevelHeight; + + typedef GrFragmentProcessor INHERITED; }; sk_sp<GrFragmentProcessor> SkNormalBevelSourceImpl::asFragmentProcessor( diff --git a/src/core/SkNormalFlatSource.cpp b/src/core/SkNormalFlatSource.cpp index 4fca57c1f3..b4ed977285 100644 --- a/src/core/SkNormalFlatSource.cpp +++ b/src/core/SkNormalFlatSource.cpp @@ -20,7 +20,7 @@ class NormalFlatFP : public GrFragmentProcessor { public: - NormalFlatFP() { + NormalFlatFP() : INHERITED(kConstantOutputForConstantInput_OptimizationFlag) { this->initClassID<NormalFlatFP>(); } @@ -43,20 +43,23 @@ public: const GrProcessor& proc) override {} }; + const char* name() const override { return "NormalFlatFP"; } + +private: void onGetGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const override { GLSLNormalFlatFP::GenKey(*this, caps, b); } - - const char* name() const override { return "NormalFlatFP"; } - void onComputeInvariantOutput(GrInvariantOutput* inout) const override { inout->setToUnknown(); } - -private: + GrColor4f constantOutputForConstantInput(GrColor4f) const override { + return GrColor4f(0, 0, 1, 0); + } GrGLSLFragmentProcessor* onCreateGLSLInstance() const override { return new GLSLNormalFlatFP; } bool onIsEqual(const GrFragmentProcessor&) const override { return true; } + + typedef GrFragmentProcessor INHERITED; }; sk_sp<GrFragmentProcessor> SkNormalFlatSourceImpl::asFragmentProcessor( diff --git a/src/core/SkNormalMapSource.cpp b/src/core/SkNormalMapSource.cpp index 71e5565ac8..3a9f9cf76f 100644 --- a/src/core/SkNormalMapSource.cpp +++ b/src/core/SkNormalMapSource.cpp @@ -26,7 +26,7 @@ class NormalMapFP : public GrFragmentProcessor { public: NormalMapFP(sk_sp<GrFragmentProcessor> mapFP, const SkMatrix& invCTM) - : fInvCTM(invCTM) { + : INHERITED(kNone_OptimizationFlags), fInvCTM(invCTM) { this->registerChildProcessor(mapFP); this->initClassID<NormalMapFP>(); @@ -117,6 +117,8 @@ private: } SkMatrix fInvCTM; + + typedef GrFragmentProcessor INHERITED; }; sk_sp<GrFragmentProcessor> SkNormalMapSourceImpl::asFragmentProcessor( |