Index: src/gpu/GrOptDrawState.h |
diff --git a/src/gpu/GrOptDrawState.h b/src/gpu/GrOptDrawState.h |
index 542172fd642e032135ea6502de24e08d7f755790..4206ab296009a45358e27b9655704c2a51a83559 100644 |
--- a/src/gpu/GrOptDrawState.h |
+++ b/src/gpu/GrOptDrawState.h |
@@ -30,7 +30,7 @@ public: |
typedef GrClipMaskManager::ScissorState ScissorState; |
- GrOptDrawState(const GrDrawState& drawState, GrGpu*, const ScissorState&, |
+ GrOptDrawState(const GrDrawState& drawState, const GrDrawTargetCaps&, const ScissorState&, |
const GrDeviceCoordTexture* dstCopy, GrGpu::DrawType); |
bool operator== (const GrOptDrawState& that) const; |
@@ -177,9 +177,14 @@ public: |
/////////////////////////////////////////////////////////////////////////// |
+ GrGpu::DrawType drawType() const { return fDrawType; } |
+ |
const GrDeviceCoordTexture* getDstCopy() const { return fDstCopy.texture() ? &fDstCopy : NULL; } |
- const GrProgramDesc& programDesc() const { return fDesc; } |
+ // Finalize *MUST* be called before programDesc() |
+ void finalize(GrGpu*); |
+ |
+ const GrProgramDesc& programDesc() const { SkASSERT(fFinalized); return fDesc; } |
private: |
/** |
@@ -188,22 +193,20 @@ private: |
* stages. In the constant color case, we can ignore all previous stages and |
* the current one and set the state color to the constant color. |
*/ |
- void computeEffectiveColorStages(const GrDrawState& ds, GrProgramDesc::DescInfo*, |
- int* firstColorStageIdx, uint8_t* fixFunctionVAToRemove); |
+ void computeEffectiveColorStages(const GrDrawState& ds, int* firstColorStageIdx, |
egdaniel
2014/12/03 19:42:59
This function and the one for coverage are never u
|
+ uint8_t* fixFunctionVAToRemove); |
/** |
* 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. |
*/ |
- void computeEffectiveCoverageStages(const GrDrawState& ds, GrProgramDesc::DescInfo* descInfo, |
- int* firstCoverageStageIdx); |
+ void computeEffectiveCoverageStages(const GrDrawState& ds, int* firstCoverageStageIdx); |
/** |
* Alter the program desc and inputs (attribs and processors) based on the blend optimization. |
*/ |
void adjustProgramForBlendOpt(const GrDrawState& ds, GrDrawState::BlendOpt, |
- GrProgramDesc::DescInfo*, |
int* firstColorStageIdx, int* firstCoverageStageIdx); |
/** |
@@ -211,15 +214,14 @@ private: |
* shaders they require. |
*/ |
void getStageStats(const GrDrawState& ds, int firstColorStageIdx, int firstCoverageStageIdx, |
- bool hasLocalCoords, GrProgramDesc::DescInfo*); |
+ bool hasLocalCoords); |
/** |
* Calculates the primary and secondary output types of the shader. For certain output types |
* the function may adjust the blend coefficients. After this function is called the src and dst |
* blend coeffs will represent those used by backend API. |
*/ |
- void setOutputStateInfo(const GrDrawState& ds, GrDrawState::BlendOpt, const GrDrawTargetCaps&, |
- GrProgramDesc::DescInfo*); |
+ void setOutputStateInfo(const GrDrawState& ds, GrDrawState::BlendOpt, const GrDrawTargetCaps&); |
enum Flags { |
kDither_Flag = 0x1, |
@@ -244,6 +246,9 @@ private: |
uint32_t fFlags; |
ProgramGeometryProcessor fGeometryProcessor; |
FragmentStageArray fFragmentStages; |
+ GrGpu::DrawType fDrawType; |
+ GrProgramDesc::DescInfo fDescInfo; |
+ bool fFinalized; |
// This function is equivalent to the offset into fFragmentStages where coverage stages begin. |
int fNumColorStages; |