Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "GrDrawState.h" | 8 #include "GrDrawState.h" |
| 9 #include "GrPaint.h" | 9 #include "GrPaint.h" |
| 10 #include "GrDrawTargetCaps.h" | 10 #include "GrDrawTargetCaps.h" |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 21 | 21 |
| 22 if (a.fRenderTarget.get() != b.fRenderTarget.get() || | 22 if (a.fRenderTarget.get() != b.fRenderTarget.get() || |
| 23 a.fColorStages.count() != b.fColorStages.count() || | 23 a.fColorStages.count() != b.fColorStages.count() || |
| 24 a.fCoverageStages.count() != b.fCoverageStages.count() || | 24 a.fCoverageStages.count() != b.fCoverageStages.count() || |
| 25 !a.fViewMatrix.cheapEqualTo(b.fViewMatrix) || | 25 !a.fViewMatrix.cheapEqualTo(b.fViewMatrix) || |
| 26 a.fSrcBlend != b.fSrcBlend || | 26 a.fSrcBlend != b.fSrcBlend || |
| 27 a.fDstBlend != b.fDstBlend || | 27 a.fDstBlend != b.fDstBlend || |
| 28 a.fBlendConstant != b.fBlendConstant || | 28 a.fBlendConstant != b.fBlendConstant || |
| 29 a.fFlagBits != b.fFlagBits || | 29 a.fFlagBits != b.fFlagBits || |
| 30 a.fVACount != b.fVACount || | 30 a.fVACount != b.fVACount || |
| 31 a.fVertexSize != b.fVertexSize || | |
|
bsalomon
2014/08/21 19:28:30
Do we need this? Or is this making the current cod
egdaniel
2014/08/21 21:30:30
It is not necessary for the current drawstate. Giv
| |
| 31 memcmp(a.fVAPtr, b.fVAPtr, a.fVACount * sizeof(GrVertexAttrib)) || | 32 memcmp(a.fVAPtr, b.fVAPtr, a.fVACount * sizeof(GrVertexAttrib)) || |
| 32 a.fStencilSettings != b.fStencilSettings || | 33 a.fStencilSettings != b.fStencilSettings || |
| 33 a.fDrawFace != b.fDrawFace) { | 34 a.fDrawFace != b.fDrawFace) { |
| 34 return kIncompatible_CombinedState; | 35 return kIncompatible_CombinedState; |
| 35 } | 36 } |
| 36 | 37 |
| 37 bool usingVertexCoverage = a.hasCoverageVertexAttribute(); | 38 bool usingVertexCoverage = a.hasCoverageVertexAttribute(); |
| 38 if (!usingVertexCoverage && a.fCoverage != b.fCoverage) { | 39 if (!usingVertexCoverage && a.fCoverage != b.fCoverage) { |
| 39 return kIncompatible_CombinedState; | 40 return kIncompatible_CombinedState; |
| 40 } | 41 } |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 105 SkASSERT(0 == fBlockEffectRemovalCnt || 0 == this->numTotalStages()); | 106 SkASSERT(0 == fBlockEffectRemovalCnt || 0 == this->numTotalStages()); |
| 106 this->setRenderTarget(that.fRenderTarget.get()); | 107 this->setRenderTarget(that.fRenderTarget.get()); |
| 107 fColor = that.fColor; | 108 fColor = that.fColor; |
| 108 fViewMatrix = that.fViewMatrix; | 109 fViewMatrix = that.fViewMatrix; |
| 109 fSrcBlend = that.fSrcBlend; | 110 fSrcBlend = that.fSrcBlend; |
| 110 fDstBlend = that.fDstBlend; | 111 fDstBlend = that.fDstBlend; |
| 111 fBlendConstant = that.fBlendConstant; | 112 fBlendConstant = that.fBlendConstant; |
| 112 fFlagBits = that.fFlagBits; | 113 fFlagBits = that.fFlagBits; |
| 113 fVACount = that.fVACount; | 114 fVACount = that.fVACount; |
| 114 fVAPtr = that.fVAPtr; | 115 fVAPtr = that.fVAPtr; |
| 116 fVertexSize = that.fVertexSize; | |
| 115 fStencilSettings = that.fStencilSettings; | 117 fStencilSettings = that.fStencilSettings; |
| 116 fCoverage = that.fCoverage; | 118 fCoverage = that.fCoverage; |
| 117 fDrawFace = that.fDrawFace; | 119 fDrawFace = that.fDrawFace; |
| 118 fColorStages = that.fColorStages; | 120 fColorStages = that.fColorStages; |
| 119 fCoverageStages = that.fCoverageStages; | 121 fCoverageStages = that.fCoverageStages; |
| 120 fOptSrcBlend = that.fOptSrcBlend; | 122 fOptSrcBlend = that.fOptSrcBlend; |
| 121 fOptDstBlend = that.fOptDstBlend; | 123 fOptDstBlend = that.fOptDstBlend; |
| 122 fBlendOptFlags = that.fBlendOptFlags; | 124 fBlendOptFlags = that.fBlendOptFlags; |
| 123 | 125 |
| 124 fHints = that.fHints; | 126 fHints = that.fHints; |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 229 uint32_t mask = (1 << dwordCount)-1; | 231 uint32_t mask = (1 << dwordCount)-1; |
| 230 size_t offsetShift = attribs[index].fOffset >> 2; | 232 size_t offsetShift = attribs[index].fOffset >> 2; |
| 231 SkASSERT(!(overlapCheck & (mask << offsetShift))); | 233 SkASSERT(!(overlapCheck & (mask << offsetShift))); |
| 232 overlapCheck |= (mask << offsetShift); | 234 overlapCheck |= (mask << offsetShift); |
| 233 #endif | 235 #endif |
| 234 } | 236 } |
| 235 return size; | 237 return size; |
| 236 } | 238 } |
| 237 | 239 |
| 238 size_t GrDrawState::getVertexSize() const { | 240 size_t GrDrawState::getVertexSize() const { |
| 239 return vertex_size(fVAPtr, fVACount); | 241 return fVertexSize; |
| 240 } | 242 } |
| 241 | 243 |
| 242 //////////////////////////////////////////////////////////////////////////////// | 244 //////////////////////////////////////////////////////////////////////////////// |
| 243 | 245 |
| 244 void GrDrawState::setVertexAttribs(const GrVertexAttrib* attribs, int count) { | 246 void GrDrawState::setVertexAttribs(const GrVertexAttrib* attribs, int count) { |
| 245 SkASSERT(count <= kMaxVertexAttribCnt); | 247 SkASSERT(count <= kMaxVertexAttribCnt); |
| 246 | 248 |
| 247 fVAPtr = attribs; | 249 fVAPtr = attribs; |
| 248 fVACount = count; | 250 fVACount = count; |
| 251 fVertexSize = vertex_size(fVAPtr, fVACount); | |
| 249 | 252 |
| 250 // Set all the indices to -1 | 253 // Set all the indices to -1 |
| 251 memset(fFixedFunctionVertexAttribIndices, | 254 memset(fFixedFunctionVertexAttribIndices, |
| 252 0xff, | 255 0xff, |
| 253 sizeof(fFixedFunctionVertexAttribIndices)); | 256 sizeof(fFixedFunctionVertexAttribIndices)); |
| 254 #ifdef SK_DEBUG | 257 #ifdef SK_DEBUG |
| 255 uint32_t overlapCheck = 0; | 258 uint32_t overlapCheck = 0; |
| 256 #endif | 259 #endif |
| 257 for (int i = 0; i < count; ++i) { | 260 for (int i = 0; i < count; ++i) { |
| 258 if (attribs[i].fBinding < kGrFixedFunctionVertexAttribBindingCnt) { | 261 if (attribs[i].fBinding < kGrFixedFunctionVertexAttribBindingCnt) { |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 276 } | 279 } |
| 277 | 280 |
| 278 //////////////////////////////////////////////////////////////////////////////// | 281 //////////////////////////////////////////////////////////////////////////////// |
| 279 | 282 |
| 280 void GrDrawState::setDefaultVertexAttribs() { | 283 void GrDrawState::setDefaultVertexAttribs() { |
| 281 static const GrVertexAttrib kPositionAttrib = | 284 static const GrVertexAttrib kPositionAttrib = |
| 282 {kVec2f_GrVertexAttribType, 0, kPosition_GrVertexAttribBinding}; | 285 {kVec2f_GrVertexAttribType, 0, kPosition_GrVertexAttribBinding}; |
| 283 | 286 |
| 284 fVAPtr = &kPositionAttrib; | 287 fVAPtr = &kPositionAttrib; |
| 285 fVACount = 1; | 288 fVACount = 1; |
| 289 fVertexSize = GrVertexAttribTypeSize(kVec2f_GrVertexAttribType); | |
| 286 | 290 |
| 287 // set all the fixed function indices to -1 except position. | 291 // set all the fixed function indices to -1 except position. |
| 288 memset(fFixedFunctionVertexAttribIndices, | 292 memset(fFixedFunctionVertexAttribIndices, |
| 289 0xff, | 293 0xff, |
| 290 sizeof(fFixedFunctionVertexAttribIndices)); | 294 sizeof(fFixedFunctionVertexAttribIndices)); |
| 291 fFixedFunctionVertexAttribIndices[kPosition_GrVertexAttribBinding] = 0; | 295 fFixedFunctionVertexAttribIndices[kPosition_GrVertexAttribBinding] = 0; |
| 292 this->invalidateBlendOptFlags(); | 296 this->invalidateBlendOptFlags(); |
| 293 } | 297 } |
| 294 | 298 |
| 295 //////////////////////////////////////////////////////////////////////////////// | 299 //////////////////////////////////////////////////////////////////////////////// |
| (...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 699 fDrawState->getColorStage(s).saveCoordChange(&fSavedCoordChanges[i]); | 703 fDrawState->getColorStage(s).saveCoordChange(&fSavedCoordChanges[i]); |
| 700 fDrawState->fColorStages[s].localCoordChange(coordChangeMatrix); | 704 fDrawState->fColorStages[s].localCoordChange(coordChangeMatrix); |
| 701 } | 705 } |
| 702 | 706 |
| 703 int numCoverageStages = fDrawState->numCoverageStages(); | 707 int numCoverageStages = fDrawState->numCoverageStages(); |
| 704 for (int s = 0; s < numCoverageStages; ++s, ++i) { | 708 for (int s = 0; s < numCoverageStages; ++s, ++i) { |
| 705 fDrawState->getCoverageStage(s).saveCoordChange(&fSavedCoordChanges[i]); | 709 fDrawState->getCoverageStage(s).saveCoordChange(&fSavedCoordChanges[i]); |
| 706 fDrawState->fCoverageStages[s].localCoordChange(coordChangeMatrix); | 710 fDrawState->fCoverageStages[s].localCoordChange(coordChangeMatrix); |
| 707 } | 711 } |
| 708 } | 712 } |
| OLD | NEW |