Index: include/gpu/GrProcessor.h |
diff --git a/include/gpu/GrProcessor.h b/include/gpu/GrProcessor.h |
index 5350015d67567dde0f9c29bd5416b0ea514801f1..1eefca635a1d077a77b3d2aa867d9fa842940d99 100644 |
--- a/include/gpu/GrProcessor.h |
+++ b/include/gpu/GrProcessor.h |
@@ -38,7 +38,8 @@ public: |
virtual ~GrProcessor(); |
struct InvariantOutput{ |
- InvariantOutput() : fColor(0), fValidFlags(0), fIsSingleComponent(false) {} |
+ InvariantOutput() : fColor(0), fValidFlags(0), fIsSingleComponent(false), |
+ fNonMulStageFound(false) {} |
void mulByUnknownOpaqueColor() { |
if (this->isOpaque()) { |
@@ -53,15 +54,15 @@ public: |
void mulByUnknownColor() { |
if (this->hasZeroAlpha()) { |
- this->setToTransparentBlack(); |
+ this->internalSetToTransparentBlack(); |
} else { |
- this->setToUnknown(); |
+ this->internalSetToUnknown(); |
} |
} |
void mulByUnknownAlpha() { |
if (this->hasZeroAlpha()) { |
- this->setToTransparentBlack(); |
+ this->internalSetToTransparentBlack(); |
} else { |
// We don't need to change fIsSingleComponent in this case |
fValidFlags = 0; |
@@ -74,20 +75,20 @@ public: |
} |
void setToTransparentBlack() { |
- fValidFlags = kRGBA_GrColorComponentFlags; |
- fColor = 0; |
- fIsSingleComponent = true; |
+ this->internalSetToTransparentBlack(); |
+ fNonMulStageFound = true; |
} |
void setToOther(uint8_t validFlags, GrColor color) { |
fValidFlags = validFlags; |
fColor = color; |
fIsSingleComponent = false; |
+ fNonMulStageFound = true; |
} |
void setToUnknown() { |
- fValidFlags = 0; |
- fIsSingleComponent = false; |
+ this->internalSetToUnknown(); |
+ fNonMulStageFound= true; |
} |
bool isOpaque() const { |
@@ -108,6 +109,17 @@ public: |
SkDEBUGCODE(void validate() const;) |
private: |
+ void internalSetToTransparentBlack() { |
+ fValidFlags = kRGBA_GrColorComponentFlags; |
+ fColor = 0; |
+ fIsSingleComponent = true; |
+ } |
+ |
+ void internalSetToUnknown() { |
+ fValidFlags = 0; |
+ fIsSingleComponent = false; |
+ } |
+ |
bool hasZeroAlpha() const { |
return ((fValidFlags & kA_GrColorComponentFlag) && 0 == GrColorUnpackA(fColor)); |
} |
@@ -128,6 +140,7 @@ public: |
GrColor fColor; |
uint32_t fValidFlags; |
bool fIsSingleComponent; |
+ bool fNonMulStageFound; |
}; |
/** |