diff options
author | 2018-04-26 09:19:52 -0600 | |
---|---|---|
committer | 2018-04-26 16:53:24 +0000 | |
commit | ba37e5b1c9bd24a86584a3e80347a82175a2403a (patch) | |
tree | c0c6caead96db48f3985c541819b023785b263b5 /src/gpu/ccpr | |
parent | e7950e3923deb9064384b474ea09306a5b8147c2 (diff) |
ccpr: Don't use varying matrices
Bug: skia:7869
Change-Id: Ie6071fd49d0eb32b2f5dfdf6413f99a9a8d41637
Reviewed-on: https://skia-review.googlesource.com/123908
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Diffstat (limited to 'src/gpu/ccpr')
-rw-r--r-- | src/gpu/ccpr/GrCCCubicShader.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/gpu/ccpr/GrCCCubicShader.cpp b/src/gpu/ccpr/GrCCCubicShader.cpp index 9a57c1cd44..f869c73ae2 100644 --- a/src/gpu/ccpr/GrCCCubicShader.cpp +++ b/src/gpu/ccpr/GrCCCubicShader.cpp @@ -102,11 +102,11 @@ void GrCCCubicShader::onEmitVaryings(GrGLSLVaryingHandler* varyingHandler, code->appendf("%s.w = dot(float3(%s, 1), %s);", // Flat edge opposite the curve. OutName(fKLM_fEdge), position, fEdgeDistanceEquation.c_str()); - fGradMatrix.reset(kFloat2x2_GrSLType, scope); + fGradMatrix.reset(kFloat4_GrSLType, scope); varyingHandler->addVarying("grad_matrix", &fGradMatrix); - code->appendf("%s[0] = 2*bloat * 3 * klm[0] * %s[0].xy;", + code->appendf("%s.xy = 2*bloat * 3 * klm[0] * %s[0].xy;", OutName(fGradMatrix), fKLMMatrix.c_str()); - code->appendf("%s[1] = -2*bloat * (klm[1] * %s[2].xy + klm[2] * %s[1].xy);", + code->appendf("%s.zw = -2*bloat * (klm[1] * %s[2].xy + klm[2] * %s[1].xy);", OutName(fGradMatrix), fKLMMatrix.c_str(), fKLMMatrix.c_str()); if (cornerCoverage) { @@ -142,7 +142,7 @@ void GrCCCubicShader::calcHullCoverage(SkString* code, const char* klmAndEdge, const char* gradMatrix, const char* outputCoverage) const { code->appendf("float k = %s.x, l = %s.y, m = %s.z;", klmAndEdge, klmAndEdge, klmAndEdge); code->append ("float f = k*k*k - l*m;"); - code->appendf("float2 grad = %s * float2(k, 1);", gradMatrix); + code->appendf("float2 grad = %s.xy * k + %s.zw;", gradMatrix, gradMatrix); code->append ("float fwidth = abs(grad.x) + abs(grad.y);"); code->appendf("%s = min(0.5 - f/fwidth, 1);", outputCoverage); // Curve coverage. code->appendf("half d = min(%s.w, 0);", klmAndEdge); // Flat edge opposite the curve. |