aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/ccpr/GrCCTriangleShader.cpp
diff options
context:
space:
mode:
authorGravatar Chris Dalton <csmartdalton@google.com>2018-01-30 16:42:37 -0700
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-02-01 16:33:23 +0000
commitf510e26a070ba3553b4cce3831cc9cd97b58a6bb (patch)
tree0a8140a326a9d7988880c2c871b18f7c1ba99e2f /src/gpu/ccpr/GrCCTriangleShader.cpp
parentd2bc6207ba80c3babdb115bee7a9bbcf3c91be2e (diff)
ccpr: Pack wind into existing varyings
Bug: skia: Change-Id: I189a22a6779af5d3fa7671992da50ede36eaaa8f Reviewed-on: https://skia-review.googlesource.com/102067 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
Diffstat (limited to 'src/gpu/ccpr/GrCCTriangleShader.cpp')
-rw-r--r--src/gpu/ccpr/GrCCTriangleShader.cpp30
1 files changed, 15 insertions, 15 deletions
diff --git a/src/gpu/ccpr/GrCCTriangleShader.cpp b/src/gpu/ccpr/GrCCTriangleShader.cpp
index b507b3747c..6e9b13ef69 100644
--- a/src/gpu/ccpr/GrCCTriangleShader.cpp
+++ b/src/gpu/ccpr/GrCCTriangleShader.cpp
@@ -12,19 +12,18 @@
using Shader = GrCCCoverageProcessor::Shader;
-Shader::WindHandling GrCCTriangleShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandler,
- GrGLSLVarying::Scope scope,
- SkString* code, const char* /*position*/,
- const char* coverage, const char* wind) {
+void GrCCTriangleShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandler,
+ GrGLSLVarying::Scope scope, SkString* code,
+ const char* /*position*/, const char* inputCoverage,
+ const char* wind) {
fCoverageTimesWind.reset(kHalf_GrSLType, scope);
- if (!coverage) {
+ if (!inputCoverage) {
varyingHandler->addFlatVarying("wind", &fCoverageTimesWind);
code->appendf("%s = %s;", OutName(fCoverageTimesWind), wind);
} else {
varyingHandler->addVarying("coverage_times_wind", &fCoverageTimesWind);
- code->appendf("%s = %s * %s;", OutName(fCoverageTimesWind), coverage, wind);
+ code->appendf("%s = %s * %s;", OutName(fCoverageTimesWind), inputCoverage, wind);
}
- return WindHandling::kHandled;
}
void GrCCTriangleShader::onEmitFragmentCode(GrGLSLPPFragmentBuilder* f,
@@ -86,12 +85,11 @@ void GrCCTriangleCornerShader::emitSetupCode(GrGLSLVertexGeoBuilder* s, const ch
s->codeAppend ("}");
}
-Shader::WindHandling
-GrCCTriangleCornerShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandler,
- GrGLSLVarying::Scope scope, SkString* code,
- const char* position, const char* coverage,
- const char* /*wind*/) {
- SkASSERT(!coverage);
+void GrCCTriangleCornerShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandler,
+ GrGLSLVarying::Scope scope, SkString* code,
+ const char* position, const char* inputCoverage,
+ const char* wind) {
+ SkASSERT(!inputCoverage);
fCornerLocationInAABoxes.reset(kFloat2x2_GrSLType, scope);
varyingHandler->addVarying("corner_location_in_aa_boxes", &fCornerLocationInAABoxes);
@@ -106,7 +104,9 @@ GrCCTriangleCornerShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandler,
code->appendf( "%s[i] = %s[i];", OutName(fBisectInAABoxes), fGeoShaderBisects.c_str());
code->appendf("}");
- return WindHandling::kNotHandled;
+ fWindTimesHalf.reset(kHalf_GrSLType, scope);
+ varyingHandler->addFlatVarying("wind_times_half", &fWindTimesHalf);
+ code->appendf("%s = %s * .5;", OutName(fWindTimesHalf), wind);
}
void GrCCTriangleCornerShader::onEmitFragmentCode(GrGLSLPPFragmentBuilder* f,
@@ -148,5 +148,5 @@ void GrCCTriangleCornerShader::onEmitFragmentCode(GrGLSLPPFragmentBuilder* f,
f->codeAppendf( "%s += (corner.x - 1) * exit.y;", outputCoverage);
f->codeAppendf("}");
- f->codeAppendf("%s *= .5;", outputCoverage);
+ f->codeAppendf("%s *= %s;", outputCoverage, fWindTimesHalf.fsIn());
}