ccpr: Combine GS triangle hulls and edges into a single draw
Updates the geometry shader backend to match the vertex backend and draw
triangle rasters together with their their edges in a single draw call.
This gives a performance boost as well as cleaning up some API
awkwardness.
This is one step toward the final goal of drawing ccpr primitives in a single
pass.
Bug: skia:
Change-Id: I2723692d02b9e39ca5dc5d9e022b528a051988ab
Reviewed-on: https://skia-review.googlesource.com/112104
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/ccpr/GrCCTriangleShader.cpp b/src/gpu/ccpr/GrCCTriangleShader.cpp
index f371b03..e086201 100644
--- a/src/gpu/ccpr/GrCCTriangleShader.cpp
+++ b/src/gpu/ccpr/GrCCTriangleShader.cpp
@@ -16,15 +16,10 @@
GrGLSLVarying::Scope scope, SkString* code,
const char* /*position*/, const char* inputCoverage,
const char* wind) {
+ SkASSERT(inputCoverage);
fCoverageTimesWind.reset(kHalf_GrSLType, scope);
- if (!inputCoverage) {
- varyingHandler->addVarying("wind", &fCoverageTimesWind,
- GrGLSLVaryingHandler::Interpolation::kCanBeFlat);
- code->appendf("%s = %s;", OutName(fCoverageTimesWind), wind);
- } else {
- varyingHandler->addVarying("coverage_times_wind", &fCoverageTimesWind);
- code->appendf("%s = %s * %s;", OutName(fCoverageTimesWind), inputCoverage, wind);
- }
+ varyingHandler->addVarying("coverage_times_wind", &fCoverageTimesWind);
+ code->appendf("%s = %s * %s;", OutName(fCoverageTimesWind), inputCoverage, wind);
}
void GrCCTriangleShader::onEmitFragmentCode(GrGLSLFPFragmentBuilder* f,