aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar Ethan Nicholas <ethannicholas@google.com>2017-06-20 15:27:46 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-06-20 20:51:15 +0000
commitf66d28dfb25127ff073e2e9549c6985785a65afa (patch)
treece8098284ac595c879a4861d1d78a119027eef0f /tests
parent49b7b6f38fc9d6cbcfa5865db364ff79c3ed7bfe (diff)
Revert "Revert "implemented mustImplementGSInvocationsWithLoop workaround in sksl""
This reverts commit 8ea60736aaa92cf3cf24705fb356e9e09e85b1fd. Bug: skia: Change-Id: If77035e03430b469c2682788610b33ae0aefbe1f Reviewed-on: https://skia-review.googlesource.com/20053 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/SkSLGLSLTest.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/SkSLGLSLTest.cpp b/tests/SkSLGLSLTest.cpp
index 2ea6c7ec71..a4a3c0e04f 100644
--- a/tests/SkSLGLSLTest.cpp
+++ b/tests/SkSLGLSLTest.cpp
@@ -1393,4 +1393,39 @@ DEF_TEST(SkSLDeadLoopVar, r) {
);
}
+DEF_TEST(SkSLInvocations, r) {
+ test(r,
+ "layout(points) in;"
+ "layout(invocations = 2) in;"
+ "layout(line_strip, max_vertices = 2) out;"
+ "void test() {"
+ "gl_Position = sk_in[0].gl_Position + vec4(0.5, 0, 0, sk_InvocationID);"
+ "EmitVertex();"
+ "}"
+ "void main() {"
+ "gl_Position = sk_in[0].gl_Position + vec4(-0.5, 0, 0, sk_InvocationID);"
+ "EmitVertex();"
+ "}",
+ *SkSL::ShaderCapsFactory::MustImplementGSInvocationsWithLoop(),
+ "#version 400\n"
+ "int sk_InvocationID;\n"
+ "layout (points) in ;\n"
+ "layout (line_strip, max_vertices = 4) out ;\n"
+ "void test() {\n"
+ " gl_Position = gl_in[0].gl_Position + vec4(0.5, 0.0, 0.0, float(sk_InvocationID));\n"
+ " EmitVertex();\n"
+ "}\n"
+ "void _invoke() {\n"
+ " gl_Position = gl_in[0].gl_Position + vec4(-0.5, 0.0, 0.0, float(sk_InvocationID));\n"
+ " EmitVertex();\n"
+ "}\n"
+ "void main() {\n"
+ " for (sk_InvocationID = 0;sk_InvocationID < 2; sk_InvocationID++) {\n"
+ " _invoke();\n"
+ " EndPrimitive();\n"
+ " }\n"
+ "}\n",
+ SkSL::Program::kGeometry_Kind);
+}
+
#endif