diff options
author | 2014-11-12 08:35:25 -0800 | |
---|---|---|
committer | 2014-11-12 08:35:25 -0800 | |
commit | 605dd0fbce9dbb2a0d3313e13e161f2bd54870d7 (patch) | |
tree | ee19a010a90d3b29baebbf50f5b1221923d3371b /src/gpu/GrOptDrawState.cpp | |
parent | e4bf793120d3bfc9b003d11880a3fb73ff2b89e9 (diff) |
Move GrInvariantOutput out of GrProcessor and into its own class.
This will help with the ability to subclass, add to, etc. GrInvariantOutput. Also it was simply
getting a little too big to be a "supporting" subclass
BUG=skia:
Review URL: https://codereview.chromium.org/699943003
Diffstat (limited to 'src/gpu/GrOptDrawState.cpp')
-rw-r--r-- | src/gpu/GrOptDrawState.cpp | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/gpu/GrOptDrawState.cpp b/src/gpu/GrOptDrawState.cpp index 79eef0c024..7d8b06c129 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); |