| Index: src/gpu/GrDrawState.h
|
| diff --git a/src/gpu/GrDrawState.h b/src/gpu/GrDrawState.h
|
| index a4db89d643d95acb4d77cc02eecf06c0dfda93d9..90bdc64507dc544356d9cb2d8860f1fe8142a953 100644
|
| --- a/src/gpu/GrDrawState.h
|
| +++ b/src/gpu/GrDrawState.h
|
| @@ -267,38 +267,6 @@ public:
|
| this->setColor((a << 24) | (a << 16) | (a << 8) | a);
|
| }
|
|
|
| - /**
|
| - * Constructor sets the color to be 'color' which is undone by the destructor.
|
| - */
|
| - class AutoColorRestore : public ::SkNoncopyable {
|
| - public:
|
| - AutoColorRestore() : fDrawState(NULL), fOldColor(0) {}
|
| -
|
| - AutoColorRestore(GrDrawState* drawState, GrColor color) {
|
| - fDrawState = NULL;
|
| - this->set(drawState, color);
|
| - }
|
| -
|
| - void reset() {
|
| - if (NULL != fDrawState) {
|
| - fDrawState->setColor(fOldColor);
|
| - fDrawState = NULL;
|
| - }
|
| - }
|
| -
|
| - void set(GrDrawState* drawState, GrColor color) {
|
| - this->reset();
|
| - fDrawState = drawState;
|
| - fOldColor = fDrawState->getColor();
|
| - fDrawState->setColor(color);
|
| - }
|
| -
|
| - ~AutoColorRestore() { this->reset(); }
|
| - private:
|
| - GrDrawState* fDrawState;
|
| - GrColor fOldColor;
|
| - };
|
| -
|
| /// @}
|
|
|
| ///////////////////////////////////////////////////////////////////////////
|
| @@ -893,10 +861,14 @@ public:
|
| if draws can be batched. The return value indicates whether combining is possible and, if
|
| so, which of the two inputs should be used. */
|
| static CombinedState CombineIfPossible(const GrDrawState& a, const GrDrawState& b) {
|
| + bool usingVertexColors = a.hasColorVertexAttribute();
|
| + if (!usingVertexColors && a.fColor != b.fColor) {
|
| + return kIncompatible_CombinedState;
|
| + }
|
| +
|
| if (a.fRenderTarget.get() != b.fRenderTarget.get() ||
|
| a.fColorStages.count() != b.fColorStages.count() ||
|
| a.fCoverageStages.count() != b.fCoverageStages.count() ||
|
| - a.fColor != b.fColor ||
|
| !a.fViewMatrix.cheapEqualTo(b.fViewMatrix) ||
|
| a.fSrcBlend != b.fSrcBlend ||
|
| a.fDstBlend != b.fDstBlend ||
|
| @@ -905,11 +877,15 @@ public:
|
| a.fVACount != b.fVACount ||
|
| memcmp(a.fVAPtr, b.fVAPtr, a.fVACount * sizeof(GrVertexAttrib)) ||
|
| a.fStencilSettings != b.fStencilSettings ||
|
| - a.fCoverage != b.fCoverage ||
|
| a.fDrawFace != b.fDrawFace) {
|
| return kIncompatible_CombinedState;
|
| }
|
|
|
| + bool usingVertexCoverage = a.hasCoverageVertexAttribute();
|
| + if (!usingVertexCoverage && a.fCoverage != b.fCoverage) {
|
| + return kIncompatible_CombinedState;
|
| + }
|
| +
|
| bool explicitLocalCoords = a.hasLocalCoordAttribute();
|
| for (int i = 0; i < a.fColorStages.count(); i++) {
|
| if (!GrEffectStage::AreCompatible(a.fColorStages[i], b.fColorStages[i],
|
|
|