Made isEqual in GrFragmentProcessor recursive
Added comment about how computeInvariantOutput() is non-recursive in GrFragmentProcessor
Made isEqual() recursive in GrFragmentProcessor
BUG=skia:4182
Review URL: https://codereview.chromium.org/1287343005
diff --git a/include/gpu/GrFragmentProcessor.h b/include/gpu/GrFragmentProcessor.h
index 4b2f96d..1b8a818 100644
--- a/include/gpu/GrFragmentProcessor.h
+++ b/include/gpu/GrFragmentProcessor.h
@@ -74,20 +74,7 @@
A return value of true from isEqual() should not be used to test whether the processor would
generate the same shader code. To test for identical code generation use getGLProcessorKey*/
- bool isEqual(const GrFragmentProcessor& that, bool ignoreCoordTransforms) const {
- if (this->classID() != that.classID() ||
- !this->hasSameTextureAccesses(that)) {
- return false;
- }
- if (ignoreCoordTransforms) {
- if (this->numTransforms() != that.numTransforms()) {
- return false;
- }
- } else if (!this->hasSameTransforms(that)) {
- return false;
- }
- return this->onIsEqual(that);
- }
+ bool isEqual(const GrFragmentProcessor& that, bool ignoreCoordTransforms) const;
/**
* This function is used to perform optimizations. When called the invarientOuput param
@@ -131,6 +118,9 @@
/**
* Subclass implements this to support getConstantColorComponents(...).
+ *
+ * Note: it's up to the subclass implementation to do any recursive call to compute the child
+ * procs' output invariants; computeInvariantOutput will not be recursive.
*/
virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const = 0;