diff options
Diffstat (limited to 'src/gpu/ccpr/GrCCPRCubicShader.cpp')
-rw-r--r-- | src/gpu/ccpr/GrCCPRCubicShader.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/gpu/ccpr/GrCCPRCubicShader.cpp b/src/gpu/ccpr/GrCCPRCubicShader.cpp index c9e546a74b..f2ef861fc2 100644 --- a/src/gpu/ccpr/GrCCPRCubicShader.cpp +++ b/src/gpu/ccpr/GrCCPRCubicShader.cpp @@ -76,25 +76,29 @@ void GrCCPRCubicShader::emitSetupCode(GrGLSLVertexGeoBuilder* s, const char* pts } Shader::WindHandling GrCCPRCubicShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandler, + GrGLSLVarying::Scope scope, SkString* code, const char* position, const char* coverage, const char* /*wind*/) { SkASSERT(!coverage); + fKLMD.reset(kFloat4_GrSLType, scope); varyingHandler->addVarying("klmd", &fKLMD); code->appendf("float3 klm = float3(%s, 1) * %s;", position, fKLMMatrix.c_str()); code->appendf("float d = dot(float3(%s, 1), %s);", position, fEdgeDistanceEquation.c_str()); - code->appendf("%s = float4(klm, d);", fKLMD.gsOut()); + code->appendf("%s = float4(klm, d);", OutName(fKLMD)); - this->onEmitVaryings(varyingHandler, code); + this->onEmitVaryings(varyingHandler, scope, code); return WindHandling::kNotHandled; } -void GrCCPRCubicHullShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandler, SkString* code) { - // "klm" was just defined by the base class. +void GrCCPRCubicHullShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandler, + GrGLSLVarying::Scope scope, SkString* code) { + fGradMatrix.reset(kFloat2x2_GrSLType, scope); varyingHandler->addVarying("grad_matrix", &fGradMatrix); - code->appendf("%s[0] = 3 * klm[0] * %s[0].xy;", fGradMatrix.gsOut(), fKLMMatrix.c_str()); + // "klm" was just defined by the base class. + code->appendf("%s[0] = 3 * klm[0] * %s[0].xy;", OutName(fGradMatrix), fKLMMatrix.c_str()); code->appendf("%s[1] = -klm[1] * %s[2].xy - klm[2] * %s[1].xy;", - fGradMatrix.gsOut(), fKLMMatrix.c_str(), fKLMMatrix.c_str()); + OutName(fGradMatrix), fKLMMatrix.c_str(), fKLMMatrix.c_str()); } void GrCCPRCubicHullShader::onEmitFragmentCode(GrGLSLPPFragmentBuilder* f, @@ -113,15 +117,18 @@ void GrCCPRCubicCornerShader::onEmitSetupCode(GrGLSLVertexGeoBuilder* s, const c vars->fCornerVars.fPoint = "corner"; } -void GrCCPRCubicCornerShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandler, SkString* code) { +void GrCCPRCubicCornerShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandler, + GrGLSLVarying::Scope scope, SkString* code) { + fdKLMDdx.reset(kFloat4_GrSLType, scope); varyingHandler->addFlatVarying("dklmddx", &fdKLMDdx); code->appendf("%s = float4(%s[0].x, %s[1].x, %s[2].x, %s.x);", - fdKLMDdx.gsOut(), fKLMMatrix.c_str(), fKLMMatrix.c_str(), + OutName(fdKLMDdx), fKLMMatrix.c_str(), fKLMMatrix.c_str(), fKLMMatrix.c_str(), fEdgeDistanceEquation.c_str()); + fdKLMDdy.reset(kFloat4_GrSLType, scope); varyingHandler->addFlatVarying("dklmddy", &fdKLMDdy); code->appendf("%s = float4(%s[0].y, %s[1].y, %s[2].y, %s.y);", - fdKLMDdy.gsOut(), fKLMMatrix.c_str(), fKLMMatrix.c_str(), + OutName(fdKLMDdy), fKLMMatrix.c_str(), fKLMMatrix.c_str(), fKLMMatrix.c_str(), fEdgeDistanceEquation.c_str()); } |