Index: src/gpu/GrDrawState.cpp |
diff --git a/src/gpu/GrDrawState.cpp b/src/gpu/GrDrawState.cpp |
index 7538cdb34004dca67f8e7f40ce47a90e54969650..ff58c4899acc7ad7f54871faec86d380c8b1a971 100644 |
--- a/src/gpu/GrDrawState.cpp |
+++ b/src/gpu/GrDrawState.cpp |
@@ -28,9 +28,6 @@ bool GrDrawState::isEqual(const GrDrawState& that) const { |
this->fDstBlend != that.fDstBlend || |
this->fBlendConstant != that.fBlendConstant || |
this->fFlagBits != that.fFlagBits || |
- this->fVACount != that.fVACount || |
- this->fVAStride != that.fVAStride || |
- memcmp(this->fVAPtr, that.fVAPtr, this->fVACount * sizeof(GrVertexAttrib)) || |
this->fStencilSettings != that.fStencilSettings || |
this->fDrawFace != that.fDrawFace) { |
return false; |
@@ -65,10 +62,6 @@ bool GrDrawState::isEqual(const GrDrawState& that) const { |
} |
} |
- SkASSERT(0 == memcmp(this->fFixedFunctionVertexAttribIndices, |
- that.fFixedFunctionVertexAttribIndices, |
- sizeof(this->fFixedFunctionVertexAttribIndices))); |
- |
return true; |
} |
@@ -95,9 +88,6 @@ GrDrawState& GrDrawState::operator=(const GrDrawState& that) { |
fDstBlend = that.fDstBlend; |
fBlendConstant = that.fBlendConstant; |
fFlagBits = that.fFlagBits; |
- fVACount = that.fVACount; |
- fVAPtr = that.fVAPtr; |
- fVAStride = that.fVAStride; |
fStencilSettings = that.fStencilSettings; |
fCoverage = that.fCoverage; |
fDrawFace = that.fDrawFace; |
@@ -115,10 +105,6 @@ GrDrawState& GrDrawState::operator=(const GrDrawState& that) { |
if (fCoverageProcInfoValid) { |
fCoverageProcInfo = that.fCoverageProcInfo; |
} |
- |
- memcpy(fFixedFunctionVertexAttribIndices, |
- that.fFixedFunctionVertexAttribIndices, |
- sizeof(fFixedFunctionVertexAttribIndices)); |
return *this; |
} |
@@ -130,9 +116,6 @@ void GrDrawState::onReset(const SkMatrix* initialViewMatrix) { |
fColorStages.reset(); |
fCoverageStages.reset(); |
- |
- this->setDefaultVertexAttribs(); |
- |
fColor = 0xffffffff; |
if (NULL == initialViewMatrix) { |
fViewMatrix.reset(); |
@@ -212,126 +195,6 @@ void GrDrawState::setFromPaint(const GrPaint& paint, const SkMatrix& vm, GrRende |
//////////////////////////////////////////////////////////////////////////////// |
-bool GrDrawState::validateVertexAttribs() const { |
- // check consistency of effects and attributes |
- GrSLType slTypes[kMaxVertexAttribCnt]; |
- for (int i = 0; i < kMaxVertexAttribCnt; ++i) { |
- slTypes[i] = static_cast<GrSLType>(-1); |
- } |
- |
- if (this->hasGeometryProcessor()) { |
- const GrGeometryProcessor* gp = this->getGeometryProcessor(); |
- // make sure that any attribute indices have the correct binding type, that the attrib |
- // type and effect's shader lang type are compatible, and that attributes shared by |
- // multiple effects use the same shader lang type. |
- const GrGeometryProcessor::VertexAttribArray& s = gp->getVertexAttribs(); |
- |
- int effectIndex = 0; |
- for (int index = 0; index < fVACount; index++) { |
- if (kGeometryProcessor_GrVertexAttribBinding != fVAPtr[index].fBinding) { |
- // we only care about effect bindings |
- continue; |
- } |
- SkASSERT(effectIndex < s.count()); |
- GrSLType effectSLType = s[effectIndex].getType(); |
- GrVertexAttribType attribType = fVAPtr[index].fType; |
- int slVecCount = GrSLTypeVectorCount(effectSLType); |
- int attribVecCount = GrVertexAttribTypeVectorCount(attribType); |
- if (slVecCount != attribVecCount || |
- (static_cast<GrSLType>(-1) != slTypes[index] && slTypes[index] != effectSLType)) { |
- return false; |
- } |
- slTypes[index] = effectSLType; |
- effectIndex++; |
- } |
- // Make sure all attributes are consumed and we were able to find everything |
- SkASSERT(s.count() == effectIndex); |
- } |
- |
- return true; |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
- |
-static void validate_vertex_attribs(const GrVertexAttrib* attribs, int count, size_t stride) { |
- // this works as long as we're 4 byte-aligned |
-#ifdef SK_DEBUG |
- uint32_t overlapCheck = 0; |
- SkASSERT(count <= GrDrawState::kMaxVertexAttribCnt); |
- for (int index = 0; index < count; ++index) { |
- size_t attribSize = GrVertexAttribTypeSize(attribs[index].fType); |
- size_t attribOffset = attribs[index].fOffset; |
- SkASSERT(attribOffset + attribSize <= stride); |
- size_t dwordCount = attribSize >> 2; |
- uint32_t mask = (1 << dwordCount)-1; |
- size_t offsetShift = attribOffset >> 2; |
- SkASSERT(!(overlapCheck & (mask << offsetShift))); |
- overlapCheck |= (mask << offsetShift); |
- } |
-#endif |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
- |
-void GrDrawState::internalSetVertexAttribs(const GrVertexAttrib* attribs, int count, |
- size_t stride) { |
- SkASSERT(count <= kMaxVertexAttribCnt); |
- |
- fVAPtr = attribs; |
- fVACount = count; |
- fVAStride = stride; |
- validate_vertex_attribs(fVAPtr, fVACount, fVAStride); |
- |
- // Set all the indices to -1 |
- memset(fFixedFunctionVertexAttribIndices, |
- 0xff, |
- sizeof(fFixedFunctionVertexAttribIndices)); |
-#ifdef SK_DEBUG |
- uint32_t overlapCheck = 0; |
-#endif |
- for (int i = 0; i < count; ++i) { |
- if (attribs[i].fBinding < kGrFixedFunctionVertexAttribBindingCnt) { |
- // The fixed function attribs can only be specified once |
- SkASSERT(-1 == fFixedFunctionVertexAttribIndices[attribs[i].fBinding]); |
- SkASSERT(GrFixedFunctionVertexAttribVectorCount(attribs[i].fBinding) == |
- GrVertexAttribTypeVectorCount(attribs[i].fType)); |
- fFixedFunctionVertexAttribIndices[attribs[i].fBinding] = i; |
- } |
-#ifdef SK_DEBUG |
- size_t dwordCount = GrVertexAttribTypeSize(attribs[i].fType) >> 2; |
- uint32_t mask = (1 << dwordCount)-1; |
- size_t offsetShift = attribs[i].fOffset >> 2; |
- SkASSERT(!(overlapCheck & (mask << offsetShift))); |
- overlapCheck |= (mask << offsetShift); |
-#endif |
- } |
- fColorProcInfoValid = false; |
- fCoverageProcInfoValid = false; |
- // Positions must be specified. |
- SkASSERT(-1 != fFixedFunctionVertexAttribIndices[kPosition_GrVertexAttribBinding]); |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
- |
-void GrDrawState::setDefaultVertexAttribs() { |
- static const GrVertexAttrib kPositionAttrib = |
- {kVec2f_GrVertexAttribType, 0, kPosition_GrVertexAttribBinding}; |
- |
- fVAPtr = &kPositionAttrib; |
- fVACount = 1; |
- fVAStride = GrVertexAttribTypeSize(kVec2f_GrVertexAttribType); |
- |
- // set all the fixed function indices to -1 except position. |
- memset(fFixedFunctionVertexAttribIndices, |
- 0xff, |
- sizeof(fFixedFunctionVertexAttribIndices)); |
- fFixedFunctionVertexAttribIndices[kPosition_GrVertexAttribBinding] = 0; |
- fColorProcInfoValid = false; |
- fCoverageProcInfoValid = false; |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
- |
bool GrDrawState::couldApplyCoverage(const GrDrawTargetCaps& caps) const { |
if (caps.dualSourceBlendingSupport()) { |
return true; |
@@ -361,17 +224,6 @@ bool GrDrawState::hasSolidCoverage() const { |
return fCoverageProcInfo.isSolidWhite(); |
} |
-////////////////////////////////////////////////////////////////////////////// |
- |
-GrDrawState::AutoVertexAttribRestore::AutoVertexAttribRestore(GrDrawState* drawState) { |
- SkASSERT(drawState); |
- fDrawState = drawState; |
- fVAPtr = drawState->fVAPtr; |
- fVACount = drawState->fVACount; |
- fVAStride = drawState->fVAStride; |
- fDrawState->setDefaultVertexAttribs(); |
-} |
- |
//////////////////////////////////////////////////////////////////////////////s |
bool GrDrawState::willEffectReadDstColor() const { |