aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/ccpr
diff options
context:
space:
mode:
authorGravatar Chris Dalton <csmartdalton@google.com>2018-04-26 09:19:52 -0600
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-04-26 16:53:24 +0000
commitba37e5b1c9bd24a86584a3e80347a82175a2403a (patch)
treec0c6caead96db48f3985c541819b023785b263b5 /src/gpu/ccpr
parente7950e3923deb9064384b474ea09306a5b8147c2 (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.cpp8
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.