Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(243)

Unified Diff: src/gpu/GrOptDrawState.h

Issue 504203004: Attach GrOptDrawState into shader building pipeline (Closed) Base URL: https://skia.googlesource.com/skia.git@opt2
Patch Set: Remove BlendOpt Cache Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/gpu/GrOptDrawState.h
diff --git a/src/gpu/GrOptDrawState.h b/src/gpu/GrOptDrawState.h
index a4edc01c8a465cdf3a510dc10af7b2811fddb8c7..d1ba45280a92f2f8c32ca98331ae349a472ae44c 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);
+ GrOptDrawState(const GrDrawState& drawState, BlendOptFlags blendOptFlags,
+ GrBlendCoeff optSrcCoeff, GrBlendCoeff optDstCoeff);
- bool operator== (const GrOptDrawState& that) const;
-
-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,30 @@ 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();
+
+ /**
+ * Set the VAIndexMap to basically return the idenity of the VA's that were passed in from the
+ * DrawState.
+ */
+ void initializeVAIndexMap();
+
+ /**
+ * Loop over the various effect stages and remap any non-fixed function VA's to have the corret
+ * index based off of fVAIndexMap
+ */
+ void remapEffectStagesVAIndices();
// These flags are needed to protect the code from creating an unused uniform color/coverage
// which will cause shader compiler errors.
@@ -60,7 +79,11 @@ private:
bool fInputCoverageIsUsed;
SkAutoSTArray<4, GrVertexAttrib> fOptVA;
+ SkAutoSTArray<4, int> fVAIndexMap;
+
+ BlendOptFlags fBlendOptFlags;
+ friend GrOptDrawState* GrDrawState::createOptState() const;
bsalomon 2014/09/15 14:04:34 Is it possible that GrOptState's cons just take a
egdaniel 2014/09/15 17:51:35 In order to keep all the blendOpt flag stuff priva
typedef GrRODrawState INHERITED;
};
« no previous file with comments | « src/gpu/GrDrawState.cpp ('k') | src/gpu/GrOptDrawState.cpp » ('j') | src/gpu/GrRODrawState.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698