From: Ian Romanick <[email protected]>

These tests are similar to the previous tests except the uniforms are
initialized using a variable declared as const.  Since any
compile-time constant expression can be used to initialize a uniform,
this should also work.

Signed-off-by: Ian Romanick <[email protected]>
---
 generated_tests/CMakeLists.txt                     |    2 +
 generated_tests/gen_uniform_initializer_tests.py   |    1 +
 .../fs-initializer-from-const.template             |   42 ++++++++++++++++++++
 .../vs-initializer-from-const.template             |   42 ++++++++++++++++++++
 4 files changed, 87 insertions(+), 0 deletions(-)
 create mode 100644 
generated_tests/uniform-initializer-templates/fs-initializer-from-const.template
 create mode 100644 
generated_tests/uniform-initializer-templates/vs-initializer-from-const.template

diff --git a/generated_tests/CMakeLists.txt b/generated_tests/CMakeLists.txt
index 84d648b..33be413 100644
--- a/generated_tests/CMakeLists.txt
+++ b/generated_tests/CMakeLists.txt
@@ -38,6 +38,8 @@ piglit_make_generated_tests(
        gen_uniform_initializer_tests.py
        uniform-initializer-templates/fs-initializer.template
        uniform-initializer-templates/vs-initializer.template
+       uniform-initializer-templates/fs-initializer-from-const.template
+       uniform-initializer-templates/vs-initializer-from-const.template
        )
 
 # Add a "gen-tests" target that can be used to generate all the
diff --git a/generated_tests/gen_uniform_initializer_tests.py 
b/generated_tests/gen_uniform_initializer_tests.py
index 87d7068..81f41bd 100644
--- a/generated_tests/gen_uniform_initializer_tests.py
+++ b/generated_tests/gen_uniform_initializer_tests.py
@@ -169,6 +169,7 @@ random_numbers = (0.78685, 0.89828, 0.36590, 0.92504, 
0.48998, 0.27989,
                   0.72414, 0.88036, 0.54498, 0.32668, 0.02967, 0.12643)
 
 all_templates = ("",
+                 "-from-const",
                  )
 
 bool_types =  [("bool", 1), ("bvec2", 2), ("bvec3", 3), ("bvec4", 4)]
diff --git 
a/generated_tests/uniform-initializer-templates/fs-initializer-from-const.template
 
b/generated_tests/uniform-initializer-templates/fs-initializer-from-const.template
new file mode 100644
index 0000000..dc2a63e
--- /dev/null
+++ 
b/generated_tests/uniform-initializer-templates/fs-initializer-from-const.template
@@ -0,0 +1,42 @@
+<%!
+def name(type, base):
+    return "{}{}{}".format(base, type[0], type[-1])
+
+%>[require]
+GLSL >= ${"{}.{}".format(major, minor)}
+
+[vertex shader]
+#version ${"{}{}".format(major, minor)}
+
+void main()
+{
+  gl_Position = gl_Vertex;
+}
+
+[fragment shader]
+#version ${"{}{}".format(major, minor)}
+
+% for (type, name, value) in type_list:
+const ${type} ${"".join(["c", name])} = ${value};
+% endfor
+
+% for (type, name, value) in type_list:
+uniform ${type} ${name} = ${"".join(["c", name])};
+% endfor
+
+void main()
+{
+  if ((${type_list[0][1]} == ${type_list[0][2]})
+% for (type, name, value) in type_list[1:-1]:
+      && (${name} == ${value})
+% endfor
+      && (${type_list[-1][1]} == ${type_list[-1][2]})) {
+    gl_FragColor = vec4(0, 1, 0, 1);
+  } else {
+    gl_FragColor = vec4(1, 0, 0, 1);
+  }
+}
+
+[test]
+draw rect -1 -1 2 2
+probe all rgb 0 1 0
diff --git 
a/generated_tests/uniform-initializer-templates/vs-initializer-from-const.template
 
b/generated_tests/uniform-initializer-templates/vs-initializer-from-const.template
new file mode 100644
index 0000000..4c32edb
--- /dev/null
+++ 
b/generated_tests/uniform-initializer-templates/vs-initializer-from-const.template
@@ -0,0 +1,42 @@
+[require]
+GLSL >= ${"{}.{}".format(major, minor)}
+
+[vertex shader]
+#version ${"{}{}".format(major, minor)}
+varying vec4 color;
+
+% for (type, name, value) in type_list:
+const ${type} ${"".join(["c", name])} = ${value};
+% endfor
+
+% for (type, name, value) in type_list:
+uniform ${type} ${name} = ${"".join(["c", name])};
+% endfor
+
+void main()
+{
+  if ((${type_list[0][1]} == ${type_list[0][2]})
+% for (type, name, value) in type_list[1:-1]:
+      && (${name} == ${value})
+% endfor
+      && (${type_list[-1][1]} == ${type_list[-1][2]})) {
+    color = vec4(0, 1, 0, 1);
+  } else {
+    color = vec4(1, 0, 0, 1);
+  }
+
+  gl_Position = gl_Vertex;
+}
+
+[fragment shader]
+#version ${"{}{}".format(major, minor)}
+varying vec4 color;
+
+void main()
+{
+  gl_FragColor = color;
+}
+
+[test]
+draw rect -1 -1 2 2
+probe all rgb 0 1 0
-- 
1.7.6.5

_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to