| 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;
|
| };
|
|
|
|
|