diff options
author | Chris Dalton <csmartdalton@google.com> | 2018-01-30 16:42:37 -0700 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-02-01 16:33:23 +0000 |
commit | f510e26a070ba3553b4cce3831cc9cd97b58a6bb (patch) | |
tree | 0a8140a326a9d7988880c2c871b18f7c1ba99e2f /src/gpu/ccpr/GrCCTriangleShader.cpp | |
parent | d2bc6207ba80c3babdb115bee7a9bbcf3c91be2e (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.cpp | 30 |
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()); } |