Index: src/gpu/GrOptDrawState.h |
diff --git a/src/gpu/GrOptDrawState.h b/src/gpu/GrOptDrawState.h |
index a4edc01c8a465cdf3a510dc10af7b2811fddb8c7..457f0354239fc8eb96d4cbc2196f103ca4dd9a88 100644 |
--- a/src/gpu/GrOptDrawState.h |
+++ b/src/gpu/GrOptDrawState.h |
@@ -8,10 +8,9 @@ |
#ifndef GrOptDrawState_DEFINED |
#define GrOptDrawState_DEFINED |
+#include "GrDrawState.h" |
#include "GrRODrawState.h" |
-class GrDrawState; |
- |
/** |
* Subclass of GrRODrawState that holds an optimized version of a GrDrawState. Like it's parent |
* it is meant to be an immutable class, and simply adds a few helpful data members not in the |
@@ -19,15 +18,19 @@ class GrDrawState; |
*/ |
class GrOptDrawState : public GrRODrawState { |
public: |
+ bool operator== (const GrOptDrawState& that) const; |
+ |
+ bool inputColorIsUsed() const { return fInputColorIsUsed; } |
+ bool inputCoverageIsUsed() const { return fInputCoverageIsUsed; } |
+ |
+private: |
/** |
* Constructs and optimized drawState out of a GrRODrawState. |
*/ |
- explicit GrOptDrawState(const GrDrawState& drawState); |
- |
- bool operator== (const GrOptDrawState& that) const; |
+ GrOptDrawState(const GrDrawState& drawState, BlendOptFlags blendOptFlags, |
+ GrBlendCoeff optSrcCoeff, GrBlendCoeff optDstCoeff); |
-private: |
- /* |
+ /** |
* Loops through all the color stage effects to check if the stage will ignore color input or |
* always output a constant color. In the ignore color input case we can ignore all previous |
* stages. In the constant color case, we can ignore all previous stages and |
@@ -37,7 +40,7 @@ private: |
*/ |
void copyEffectiveColorStages(const GrDrawState& ds); |
- /* |
+ /** |
* Loops through all the coverage stage effects to check if the stage will ignore color input. |
* If a coverage stage will ignore input, then we can ignore all coverage stages before it. We |
* loop to determine the first effective coverage stage, and then copy all of our effective |
@@ -45,14 +48,18 @@ private: |
*/ |
void copyEffectiveCoverageStages(const GrDrawState& ds); |
- /* |
+ /** |
* This function takes in a flag and removes the corresponding fixed function vertex attributes. |
* The flags are in the same order as GrVertexAttribBinding array. If bit i of removeVAFlags is |
* set, then vertex attributes with binding (GrVertexAttribute)i will be removed. |
*/ |
void removeFixedFunctionVertexAttribs(uint8_t removeVAFlags); |
- void removeColorVertexAttrib(); |
+ /** |
+ * Alter the OptDrawState (adjusting stages, vertex attribs, flags, etc.) based on the |
+ * BlendOptFlags. |
+ */ |
+ void adjustFromBlendOpts(); |
// These flags are needed to protect the code from creating an unused uniform color/coverage |
// which will cause shader compiler errors. |
@@ -61,6 +68,9 @@ private: |
SkAutoSTArray<4, GrVertexAttrib> fOptVA; |
+ BlendOptFlags fBlendOptFlags; |
+ |
+ friend GrOptDrawState* GrDrawState::createOptState() const; |
typedef GrRODrawState INHERITED; |
}; |