Index: src/gpu/GrOptDrawState.cpp |
diff --git a/src/gpu/GrOptDrawState.cpp b/src/gpu/GrOptDrawState.cpp |
index 5f352966b8a3441d5faf603c6234788dc2e23db6..83546ba3b789aa556caefafd166baee52b38bef7 100644 |
--- a/src/gpu/GrOptDrawState.cpp |
+++ b/src/gpu/GrOptDrawState.cpp |
@@ -9,10 +9,7 @@ |
#include "GrDrawState.h" |
-GrOptDrawState::GrOptDrawState(const GrDrawState& drawState, |
- BlendOptFlags blendOptFlags, |
- GrBlendCoeff optSrcCoeff, |
- GrBlendCoeff optDstCoeff) : INHERITED(drawState) { |
+GrOptDrawState::GrOptDrawState(const GrDrawState& drawState) : INHERITED(drawState) { |
fColor = drawState.getColor(); |
fCoverage = drawState.getCoverage(); |
fViewMatrix = drawState.getViewMatrix(); |
@@ -23,14 +20,12 @@ |
fVAStride = drawState.getVertexStride(); |
fStencilSettings = drawState.getStencil(); |
fDrawFace = drawState.getDrawFace(); |
- fBlendOptFlags = blendOptFlags; |
- fSrcBlend = optSrcCoeff; |
- fDstBlend = optDstCoeff; |
+ |
+ fBlendOptFlags = drawState.getBlendOpts(false, &fSrcBlend, &fDstBlend); |
memcpy(fFixedFunctionVertexAttribIndices, |
drawState.getFixedFunctionVertexAttribIndices(), |
sizeof(fFixedFunctionVertexAttribIndices)); |
- |
fInputColorIsUsed = true; |
fInputCoverageIsUsed = true; |
@@ -43,39 +38,7 @@ |
this->copyEffectiveColorStages(drawState); |
this->copyEffectiveCoverageStages(drawState); |
- this->adjustFromBlendOpts(); |
}; |
- |
-void GrOptDrawState::adjustFromBlendOpts() { |
- |
- switch (fBlendOptFlags) { |
- case kNone_BlendOpt: |
- case kSkipDraw_BlendOptFlag: |
- break; |
- case kCoverageAsAlpha_BlendOptFlag: |
- fFlagBits |= kCoverageDrawing_StateBit; |
- break; |
- case kEmitCoverage_BlendOptFlag: |
- fColor = 0xffffffff; |
- fInputColorIsUsed = true; |
- fColorStages.reset(); |
- this->removeFixedFunctionVertexAttribs(0x1 << kColor_GrVertexAttribBinding); |
- break; |
- case kEmitTransBlack_BlendOptFlag: |
- fColor = 0; |
- fCoverage = 0xff; |
- fInputColorIsUsed = true; |
- fInputCoverageIsUsed = true; |
- fColorStages.reset(); |
- fCoverageStages.reset(); |
- this->removeFixedFunctionVertexAttribs(0x1 << kColor_GrVertexAttribBinding | |
- 0x1 << kCoverage_GrVertexAttribBinding); |
- break; |
- default: |
- SkFAIL("Unknown BlendOptFlag"); |
- |
- } |
-} |
void GrOptDrawState::removeFixedFunctionVertexAttribs(uint8_t removeVAFlag) { |
int numToRemove = 0; |
@@ -87,7 +50,6 @@ |
} |
maskCheck <<= 1; |
} |
- |
fOptVA.reset(fVACount - numToRemove); |
GrVertexAttrib* dst = fOptVA.get(); |
@@ -102,9 +64,9 @@ |
fFixedFunctionVertexAttribIndices[currAttrib.fBinding] = -1; |
continue; |
} |
- fFixedFunctionVertexAttribIndices[currAttrib.fBinding] = newIdx; |
} |
memcpy(dst, src, sizeof(GrVertexAttrib)); |
+ fFixedFunctionVertexAttribIndices[currAttrib.fBinding] = newIdx; |
++newIdx; |
++dst; |
} |