aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar Florin Malita <fmalita@chromium.org>2017-08-08 15:47:35 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-08-08 20:18:33 +0000
commit3b30c4f188ac674b92332a45f682f94cb91f61db (patch)
treefe72f899646860579914ffe7a47a9bd683734e6b /tests
parent26308e1757d46fe553c46e2b2b19689a60ecc7c5 (diff)
Relocate gradient negative fract() workaround to GLSLCodeGenerator
Change-Id: If5aba5b266f86f677b6e63b0f79792f1d3213336 Reviewed-on: https://skia-review.googlesource.com/32202 Reviewed-by: Ethan Nicholas <ethannicholas@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/SkSLGLSLTest.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/SkSLGLSLTest.cpp b/tests/SkSLGLSLTest.cpp
index 80727d9804..c1bf2bbbce 100644
--- a/tests/SkSLGLSLTest.cpp
+++ b/tests/SkSLGLSLTest.cpp
@@ -360,6 +360,29 @@ DEF_TEST(SkSLMinAbs, r) {
"}\n");
}
+DEF_TEST(SkSLFractNegative, r) {
+ static constexpr char input[] =
+ "void main() {"
+ "float x = -42.0;"
+ "sk_FragColor.r = fract(x);"
+ "}";
+ static constexpr char output_default[] =
+ "#version 400\n"
+ "out vec4 sk_FragColor;\n"
+ "void main() {\n"
+ " sk_FragColor.x = fract(-42.0);\n"
+ "}\n";
+ static constexpr char output_workaround[] =
+ "#version 400\n"
+ "out vec4 sk_FragColor;\n"
+ "void main() {\n"
+ " sk_FragColor.x = (0.5 - sign(-42.0) * (0.5 - fract(abs(-42.0))));\n"
+ "}\n";
+
+ test(r, input, *SkSL::ShaderCapsFactory::Default(), output_default);
+ test(r, input, *SkSL::ShaderCapsFactory::CannotUseFractForNegativeValues(), output_workaround);
+}
+
DEF_TEST(SkSLNegatedAtan, r) {
test(r,
"void main() { float2 x = float2(sqrt(2)); sk_FragColor.r = atan(x.x, -x.y); }",