| Index: src/gpu/GrPrimitiveProcessor.h
 | 
| diff --git a/src/gpu/GrPrimitiveProcessor.h b/src/gpu/GrPrimitiveProcessor.h
 | 
| index 54d7d8dde6e20180a623bf94ca0bb4cd79356709..2d1feb9fa4dd9ed5479ba02dd4ef0686e674625f 100644
 | 
| --- a/src/gpu/GrPrimitiveProcessor.h
 | 
| +++ b/src/gpu/GrPrimitiveProcessor.h
 | 
| @@ -73,32 +73,38 @@ struct GrInitInvariantOutput;
 | 
|  
 | 
|  /*
 | 
|   * This class allows the GrPipeline to communicate information about the pipeline to a
 | 
| - * GrPrimitiveProcessor that will be used in conjunction with the GrPipeline.
 | 
| + * GrBatch which should be forwarded to the GrPrimitiveProcessor(s) created by the batch.
 | 
| + * These are not properly part of the pipeline because they assume the specific inputs
 | 
| + * that the batch provided when it created the pipeline. Identical pipelines may be
 | 
| + * created by different batches with different input assumptions and therefore different
 | 
| + * computed optimizations. It is the batch-specific optimizations that allow the pipelines
 | 
| + * to be equal.
 | 
|   */
 | 
| -class GrPipelineInfo {
 | 
| +class GrPipelineOptimizations {
 | 
|  public:
 | 
|      /** Does the pipeline require the GrPrimitiveProcessor's color? */
 | 
| -    bool readsColor() const { return SkToBool(kReadsColor_GrPipelineInfoFlag & fFlags); }
 | 
| +    bool readsColor() const { return SkToBool(kReadsColor_GrPipelineOptimizationsFlag & fFlags); }
 | 
|  
 | 
|      /** Does the pipeline require the GrPrimitiveProcessor's coverage? */
 | 
| -    bool readsCoverage() const { return SkToBool(kReadsCoverage_GrPipelineInfoFlag & fFlags); }
 | 
| +    bool readsCoverage() const { return
 | 
| +        SkToBool(kReadsCoverage_GrPipelineOptimizationsFlag & fFlags); }
 | 
|  
 | 
|      /** Does the pipeline require access to (implicit or explicit) local coordinates? */
 | 
|      bool readsLocalCoords() const {
 | 
| -        return SkToBool(kReadsLocalCoords_GrPipelineInfoFlag & fFlags);
 | 
| +        return SkToBool(kReadsLocalCoords_GrPipelineOptimizationsFlag & fFlags);
 | 
|      }
 | 
|  
 | 
|      /** Does the pipeline allow the GrPrimitiveProcessor to combine color and coverage into one
 | 
|          color output ? */
 | 
|      bool canTweakAlphaForCoverage() const {
 | 
| -        return SkToBool(kCanTweakAlphaForCoverage_GrPipelineInfoFlag & fFlags);
 | 
| +        return SkToBool(kCanTweakAlphaForCoverage_GrPipelineOptimizationsFlag & fFlags);
 | 
|      }
 | 
|  
 | 
|      /** Does the pipeline require the GrPrimitiveProcessor to specify a specific color (and if
 | 
|          so get the color)? */
 | 
|      bool getOverrideColorIfSet(GrColor* overrideColor) const {
 | 
| -        if (SkToBool(kUseOverrideColor_GrPipelineInfoFlag & fFlags)) {
 | 
| -            SkASSERT(SkToBool(kReadsColor_GrPipelineInfoFlag & fFlags));
 | 
| +        if (SkToBool(kUseOverrideColor_GrPipelineOptimizationsFlag & fFlags)) {
 | 
| +            SkASSERT(SkToBool(kReadsColor_GrPipelineOptimizationsFlag & fFlags));
 | 
|              if (overrideColor) {
 | 
|                  *overrideColor = fOverrideColor;
 | 
|              }
 | 
| @@ -110,21 +116,21 @@ public:
 | 
|  private:
 | 
|      enum {
 | 
|          // If this is not set the primitive processor need not produce a color output
 | 
| -        kReadsColor_GrPipelineInfoFlag                  = 0x1,
 | 
| +        kReadsColor_GrPipelineOptimizationsFlag                  = 0x1,
 | 
|  
 | 
|          // If this is not set the primitive processor need not produce a coverage output
 | 
| -        kReadsCoverage_GrPipelineInfoFlag               = 0x2,
 | 
| +        kReadsCoverage_GrPipelineOptimizationsFlag               = 0x2,
 | 
|  
 | 
|          // If this is not set the primitive processor need not produce local coordinates
 | 
| -        kReadsLocalCoords_GrPipelineInfoFlag            = 0x4,
 | 
| +        kReadsLocalCoords_GrPipelineOptimizationsFlag            = 0x4,
 | 
|  
 | 
|          // If this flag is set then the primitive processor may produce color*coverage as
 | 
|          // its color output (and not output a separate coverage).
 | 
| -        kCanTweakAlphaForCoverage_GrPipelineInfoFlag    = 0x8,
 | 
| +        kCanTweakAlphaForCoverage_GrPipelineOptimizationsFlag    = 0x8,
 | 
|  
 | 
|          // If this flag is set the GrPrimitiveProcessor must produce fOverrideColor as its
 | 
|          // output color. If not set fOverrideColor is to be ignored.
 | 
| -        kUseOverrideColor_GrPipelineInfoFlag            = 0x10,
 | 
| +        kUseOverrideColor_GrPipelineOptimizationsFlag            = 0x10,
 | 
|      };
 | 
|  
 | 
|      uint32_t    fFlags;
 | 
| @@ -151,7 +157,7 @@ enum GrGPInput {
 | 
|   */
 | 
|  class GrPrimitiveProcessor : public GrProcessor {
 | 
|  public:
 | 
| -    virtual void initBatchTracker(GrBatchTracker*, const GrPipelineInfo&) const = 0;
 | 
| +    virtual void initBatchTracker(GrBatchTracker*, const GrPipelineOptimizations&) const = 0;
 | 
|  
 | 
|      virtual bool canMakeEqual(const GrBatchTracker& mine,
 | 
|                                const GrPrimitiveProcessor& that,
 | 
| 
 |