Calculate stage stats in GrOptDrawState
BUG=skia:
R=bsalomon@google.com
Author: egdaniel@google.com
Review URL: https://codereview.chromium.org/545693004
diff --git a/src/gpu/GrOptDrawState.h b/src/gpu/GrOptDrawState.h
index 457f035..9c9bf94 100644
--- a/src/gpu/GrOptDrawState.h
+++ b/src/gpu/GrOptDrawState.h
@@ -23,6 +23,11 @@
bool inputColorIsUsed() const { return fInputColorIsUsed; }
bool inputCoverageIsUsed() const { return fInputCoverageIsUsed; }
+ bool readsDst() const { return fReadsDst; }
+ bool readsFragPosition() const { return fReadsFragPosition; }
+ bool requiresVertexShader() const { return fRequiresVertexShader; }
+ bool requiresLocalCoordAttrib() const { return fRequiresLocalCoordAttrib; }
+
private:
/**
* Constructs and optimized drawState out of a GrRODrawState.
@@ -61,11 +66,23 @@
*/
void adjustFromBlendOpts();
+ /**
+ * Loop over the effect stages to determine various info like what data they will read and what
+ * shaders they require.
+ */
+ void getStageStats();
+
// These flags are needed to protect the code from creating an unused uniform color/coverage
// which will cause shader compiler errors.
bool fInputColorIsUsed;
bool fInputCoverageIsUsed;
+ // These flags give aggregated info on the effect stages that are used when building programs.
+ bool fReadsDst;
+ bool fReadsFragPosition;
+ bool fRequiresVertexShader;
+ bool fRequiresLocalCoordAttrib;
+
SkAutoSTArray<4, GrVertexAttrib> fOptVA;
BlendOptFlags fBlendOptFlags;