Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(292)

Unified Diff: src/gpu/GrDrawState.cpp

Issue 608253002: Add isSingleComponent bool to getConstantColorComponent (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix isSolidWhite Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/GrAARectRenderer.cpp ('k') | src/gpu/GrOptDrawState.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/GrDrawState.cpp
diff --git a/src/gpu/GrDrawState.cpp b/src/gpu/GrDrawState.cpp
index 872d20a1ab48cb0c9ae6b0e93fb066a4a3e9fa7c..b4cf9c8b4106228fc45d57a72e8ec5e7a7a8b9dd 100644
--- a/src/gpu/GrDrawState.cpp
+++ b/src/gpu/GrDrawState.cpp
@@ -421,26 +421,26 @@ bool GrDrawState::hasSolidCoverage() const {
return true;
}
- GrColor coverage;
- uint32_t validComponentFlags;
+ GrProcessor::InvariantOutput inout;
+ inout.fIsSingleComponent = false;
// Initialize to an unknown starting coverage if per-vertex coverage is specified.
if (this->hasCoverageVertexAttribute()) {
- validComponentFlags = 0;
+ inout.fValidFlags = 0;
} else {
- coverage = fCoverage;
- validComponentFlags = kRGBA_GrColorComponentFlags;
+ inout.fColor = fCoverage;
+ inout.fValidFlags = kRGBA_GrColorComponentFlags;
}
// Run through the coverage stages and see if the coverage will be all ones at the end.
if (this->hasGeometryProcessor()) {
const GrGeometryProcessor* gp = fGeometryProcessor->getGeometryProcessor();
- gp->getConstantColorComponents(&coverage, &validComponentFlags);
+ gp->computeInvariantOutput(&inout);
}
for (int s = 0; s < this->numCoverageStages(); ++s) {
const GrProcessor* processor = this->getCoverageStage(s).getProcessor();
- processor->getConstantColorComponents(&coverage, &validComponentFlags);
+ processor->computeInvariantOutput(&inout);
}
- return (kRGBA_GrColorComponentFlags == validComponentFlags) && (0xffffffff == coverage);
+ return inout.isSolidWhite();
}
//////////////////////////////////////////////////////////////////////////////
@@ -755,55 +755,54 @@ GrDrawState::BlendOptFlags GrDrawState::getBlendOpts(bool forceCoverage,
bool GrDrawState::srcAlphaWillBeOne() const {
- uint32_t validComponentFlags;
- GrColor color;
+ GrProcessor::InvariantOutput inoutColor;
+ inoutColor.fIsSingleComponent = false;
// Check if per-vertex or constant color may have partial alpha
if (this->hasColorVertexAttribute()) {
if (fHints & kVertexColorsAreOpaque_Hint) {
- validComponentFlags = kA_GrColorComponentFlag;
- color = 0xFF << GrColor_SHIFT_A;
+ inoutColor.fValidFlags = kA_GrColorComponentFlag;
+ inoutColor.fColor = 0xFF << GrColor_SHIFT_A;
} else {
- validComponentFlags = 0;
- color = 0; // not strictly necessary but we get false alarms from tools about uninit.
+ inoutColor.fValidFlags = 0;
+ // not strictly necessary but we get false alarms from tools about uninit.
+ inoutColor.fColor = 0;
}
} else {
- validComponentFlags = kRGBA_GrColorComponentFlags;
- color = this->getColor();
+ inoutColor.fValidFlags = kRGBA_GrColorComponentFlags;
+ inoutColor.fColor = this->getColor();
}
// Run through the color stages
for (int s = 0; s < this->numColorStages(); ++s) {
const GrProcessor* processor = this->getColorStage(s).getProcessor();
- processor->getConstantColorComponents(&color, &validComponentFlags);
+ processor->computeInvariantOutput(&inoutColor);
}
// Check whether coverage is treated as color. If so we run through the coverage computation.
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.
- GrColor coverage;
- uint32_t coverageComponentFlags;
+ GrProcessor::InvariantOutput inoutCoverage;
+ inoutCoverage.fIsSingleComponent = false;
if (this->hasCoverageVertexAttribute()) {
- coverageComponentFlags = 0;
- coverage = 0; // suppresses any warnings.
+ inoutCoverage.fValidFlags = 0;
+ inoutCoverage.fColor = 0; // suppresses any warnings.
} else {
- coverageComponentFlags = kRGBA_GrColorComponentFlags;
- coverage = this->getCoverageColor();
+ inoutCoverage.fValidFlags = kRGBA_GrColorComponentFlags;
+ inoutCoverage.fColor = this->getCoverageColor();
}
// Run through the coverage stages
for (int s = 0; s < this->numCoverageStages(); ++s) {
const GrProcessor* processor = this->getCoverageStage(s).getProcessor();
- processor->getConstantColorComponents(&coverage, &coverageComponentFlags);
+ processor->computeInvariantOutput(&inoutCoverage);
}
// Since the shader will multiply coverage and color, the only way the final A==1 is if
// coverage and color both have A==1.
- return (kA_GrColorComponentFlag & validComponentFlags & coverageComponentFlags) &&
- 0xFF == GrColorUnpackA(color) && 0xFF == GrColorUnpackA(coverage);
-
+ return (inoutColor.isOpaque() && inoutCoverage.isOpaque());
}
- return (kA_GrColorComponentFlag & validComponentFlags) && 0xFF == GrColorUnpackA(color);
+ return inoutColor.isOpaque();
}
« no previous file with comments | « src/gpu/GrAARectRenderer.cpp ('k') | src/gpu/GrOptDrawState.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698