Chromium Code Reviews| 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; |