Index: src/gpu/GrOptDrawState.cpp |
diff --git a/src/gpu/GrOptDrawState.cpp b/src/gpu/GrOptDrawState.cpp |
index 79eef0c02499153e642c084e62ea706db0ebcacb..7d8b06c129cbb570d45d8622dd4483fcd3a5f47c 100644 |
--- a/src/gpu/GrOptDrawState.cpp |
+++ b/src/gpu/GrOptDrawState.cpp |
@@ -11,6 +11,7 @@ |
#include "GrDrawState.h" |
#include "GrDrawTargetCaps.h" |
#include "GrGpu.h" |
+#include "GrInvariantOutput.h" |
GrOptDrawState::GrOptDrawState(const GrDrawState& drawState, |
BlendOptFlags blendOptFlags, |
@@ -223,37 +224,38 @@ void GrOptDrawState::computeEffectiveColorStages(const GrDrawState& ds, |
int* firstColorStageIdx, |
uint8_t* fixedFunctionVAToRemove) { |
// Set up color and flags for ConstantColorComponent checks |
- GrProcessor::InvariantOutput inout; |
- inout.fIsSingleComponent = false; |
+ GrColor color; |
+ GrColorComponentFlags flags; |
if (!descInfo->hasColorVertexAttribute()) { |
- inout.fColor = ds.getColor(); |
- inout.fValidFlags = kRGBA_GrColorComponentFlags; |
+ color = ds.getColor(); |
+ flags = kRGBA_GrColorComponentFlags; |
} else { |
if (ds.vertexColorsAreOpaque()) { |
- inout.fColor = 0xFF << GrColor_SHIFT_A; |
- inout.fValidFlags = kA_GrColorComponentFlag; |
+ color = 0xFF << GrColor_SHIFT_A; |
+ flags = kA_GrColorComponentFlag; |
} else { |
- inout.fValidFlags = 0; |
+ flags = static_cast<GrColorComponentFlags>(0); |
// not strictly necessary but we get false alarms from tools about uninit. |
- inout.fColor = 0; |
+ color = 0; |
} |
} |
+ GrInvariantOutput inout(color, flags, false); |
for (int i = 0; i < ds.numColorStages(); ++i) { |
const GrFragmentProcessor* fp = ds.getColorStage(i).getProcessor(); |
fp->computeInvariantOutput(&inout); |
- if (!inout.fWillUseInputColor) { |
+ if (!inout.willUseInputColor()) { |
*firstColorStageIdx = i; |
descInfo->fInputColorIsUsed = false; |
} |
- if (kRGBA_GrColorComponentFlags == inout.fValidFlags) { |
+ if (kRGBA_GrColorComponentFlags == inout.validFlags()) { |
*firstColorStageIdx = i + 1; |
- fColor = inout.fColor; |
+ fColor = inout.color(); |
descInfo->fInputColorIsUsed = true; |
*fixedFunctionVAToRemove |= 0x1 << kColor_GrVertexAttribBinding; |
// Since we are clearing all previous color stages we are in a state where we have found |
// zero stages that don't multiply the inputColor. |
- inout.fNonMulStageFound = false; |
+ inout.resetNonMulStageFound(); |
} |
} |
} |
@@ -268,7 +270,7 @@ void GrOptDrawState::computeEffectiveCoverageStages(const GrDrawState& ds, |
// Don't do any optimizations on coverage stages. It should not be the case where we do not use |
// input coverage in an effect |
#ifdef OptCoverageStages |
- GrProcessor::InvariantOutput inout; |
+ GrInvariantOutput inout; |
for (int i = 0; i < ds.numCoverageStages(); ++i) { |
const GrFragmentProcessor* fp = ds.getCoverageStage(i).getProcessor(); |
fp->computeInvariantOutput(&inout); |