Index: src/gpu/GrDrawState.cpp |
diff --git a/src/gpu/GrDrawState.cpp b/src/gpu/GrDrawState.cpp |
index 296893c158252c5369e74d6a7ad84f806a23f883..23ebea6afcfd9cbbb4f476edea789b46e21118d4 100644 |
--- a/src/gpu/GrDrawState.cpp |
+++ b/src/gpu/GrDrawState.cpp |
@@ -7,6 +7,7 @@ |
#include "GrDrawState.h" |
+#include "GrInvariantOutput.h" |
#include "GrOptDrawState.h" |
#include "GrPaint.h" |
@@ -382,15 +383,17 @@ bool GrDrawState::hasSolidCoverage() const { |
return false; |
} |
- GrProcessor::InvariantOutput inout; |
- inout.fIsSingleComponent = true; |
+ GrColor color; |
+ GrColorComponentFlags flags; |
// Initialize to an unknown starting coverage if per-vertex coverage is specified. |
if (this->hasCoverageVertexAttribute()) { |
- inout.fValidFlags = 0; |
+ color = 0; |
+ flags = static_cast<GrColorComponentFlags>(0); |
} else { |
- inout.fColor = this->getCoverageColor(); |
- inout.fValidFlags = kRGBA_GrColorComponentFlags; |
+ color = this->getCoverageColor(); |
+ flags = kRGBA_GrColorComponentFlags; |
} |
+ GrInvariantOutput inout(color, flags, true); |
// check the coverage output from the GP |
if (this->hasGeometryProcessor()) { |
@@ -687,22 +690,22 @@ GrDrawState::BlendOptFlags GrDrawState::getBlendOpts(bool forceCoverage, |
bool GrDrawState::srcAlphaWillBeOne() const { |
- GrProcessor::InvariantOutput inoutColor; |
- inoutColor.fIsSingleComponent = false; |
+ GrColor color; |
+ GrColorComponentFlags flags; |
// Check if per-vertex or constant color may have partial alpha |
if (this->hasColorVertexAttribute()) { |
if (fHints & kVertexColorsAreOpaque_Hint) { |
- inoutColor.fValidFlags = kA_GrColorComponentFlag; |
- inoutColor.fColor = 0xFF << GrColor_SHIFT_A; |
+ flags = kA_GrColorComponentFlag; |
+ color = 0xFF << GrColor_SHIFT_A; |
} else { |
- inoutColor.fValidFlags = 0; |
- // not strictly necessary but we get false alarms from tools about uninit. |
- inoutColor.fColor = 0; |
+ flags = static_cast<GrColorComponentFlags>(0); |
+ color = 0; |
} |
} else { |
- inoutColor.fValidFlags = kRGBA_GrColorComponentFlags; |
- inoutColor.fColor = this->getColor(); |
+ flags = kRGBA_GrColorComponentFlags; |
+ color = this->getColor(); |
} |
+ GrInvariantOutput inoutColor(color, flags, false); |
// Run through the color stages |
for (int s = 0; s < this->numColorStages(); ++s) { |
@@ -714,15 +717,14 @@ bool GrDrawState::srcAlphaWillBeOne() const { |
if (this->isCoverageDrawing()) { |
// The shader generated for coverage drawing runs the full coverage computation and then |
// makes the shader output be the multiplication of color and coverage. We mirror that here. |
- GrProcessor::InvariantOutput inoutCoverage; |
- inoutCoverage.fIsSingleComponent = true; |
if (this->hasCoverageVertexAttribute()) { |
- inoutCoverage.fValidFlags = 0; |
- inoutCoverage.fColor = 0; // suppresses any warnings. |
+ flags = static_cast<GrColorComponentFlags>(0); |
+ color = 0; |
} else { |
- inoutCoverage.fValidFlags = kRGBA_GrColorComponentFlags; |
- inoutCoverage.fColor = this->getCoverageColor(); |
+ flags = kRGBA_GrColorComponentFlags; |
+ color = this->getCoverageColor(); |
} |
+ GrInvariantOutput inoutCoverage(color, flags, true); |
if (this->hasGeometryProcessor()) { |
fGeometryProcessor->computeInvariantOutput(&inoutCoverage); |