[Piglit] [PATCH 4/6] glsl-1.20 / glsl-1.30: Add tests for uniforms with initializers modified by GL API

Ian Romanick idr at freedesktop.org
Wed May 16 14:23:46 PDT 2012


From: Ian Romanick <ian.d.romanick at intel.com>

In these tests the uniforms are initialized with one set of values in
the shader source, but the values are changed using the GL API.  The
shaders expect the values set by the GL API.

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
---
 generated_tests/CMakeLists.txt                     |    2 +
 generated_tests/gen_uniform_initializer_tests.py   |    1 +
 .../fs-initializer-set-by-API.template             |   41 ++++++++++++++++++
 .../vs-initializer-set-by-API.template             |   45 ++++++++++++++++++++
 4 files changed, 89 insertions(+), 0 deletions(-)
 create mode 100644 generated_tests/uniform-initializer-templates/fs-initializer-set-by-API.template
 create mode 100644 generated_tests/uniform-initializer-templates/vs-initializer-set-by-API.template

diff --git a/generated_tests/CMakeLists.txt b/generated_tests/CMakeLists.txt
index f9e07a1..7b9e99a 100644
--- a/generated_tests/CMakeLists.txt
+++ b/generated_tests/CMakeLists.txt
@@ -40,6 +40,8 @@ piglit_make_generated_tests(
 	uniform-initializer-templates/vs-initializer.template
 	uniform-initializer-templates/fs-initializer-from-const.template
 	uniform-initializer-templates/vs-initializer-from-const.template
+	uniform-initializer-templates/fs-initializer-set-by-other-API.template
+	uniform-initializer-templates/vs-initializer-set-by-other-API.template
 	uniform-initializer-templates/fs-initializer-set-by-other-stage.template
 	uniform-initializer-templates/vs-initializer-set-by-other-stage.template
 	)
diff --git a/generated_tests/gen_uniform_initializer_tests.py b/generated_tests/gen_uniform_initializer_tests.py
index d9fedd2..9bfb7c5 100644
--- a/generated_tests/gen_uniform_initializer_tests.py
+++ b/generated_tests/gen_uniform_initializer_tests.py
@@ -170,6 +170,7 @@ random_numbers = (0.78685, 0.89828, 0.36590, 0.92504, 0.48998, 0.27989,
 
 all_templates = ("",
                  "-from-const",
+                 "-set-by-other-API",
                  "-set-by-other-stage",
                  )
 
diff --git a/generated_tests/uniform-initializer-templates/fs-initializer-set-by-API.template b/generated_tests/uniform-initializer-templates/fs-initializer-set-by-API.template
new file mode 100644
index 0000000..2754e36
--- /dev/null
+++ b/generated_tests/uniform-initializer-templates/fs-initializer-set-by-API.template
@@ -0,0 +1,41 @@
+<%!
+def constructor(type, values):
+    return "{}({})".format(type, ", ".join(values))
+
+%>[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:
+uniform ${type} ${name} = ${value};
+% endfor
+
+void main()
+{
+  if ((${type_list[0][1]} == ${constructor(type_list[0][0], api_types[0][2])})
+% for i in range(1, len(type_list) -1):
+      && (${type_list[i][1]} == ${constructor(type_list[i][0], api_types[i][2])})
+% endfor
+      && (${type_list[-1][1]} == ${constructor(type_list[-1][0], api_types[-1][2])})) {
+    gl_FragColor = vec4(0, 1, 0, 1);
+  } else {
+    gl_FragColor = vec4(1, 0, 0, 1);
+  }
+}
+
+[test]
+% for (api_type, name, values) in api_types:
+uniform ${api_type} ${name} ${" ".join(values)}
+% endfor
+draw rect -1 -1 2 2
+probe all rgb 0 1 0
diff --git a/generated_tests/uniform-initializer-templates/vs-initializer-set-by-API.template b/generated_tests/uniform-initializer-templates/vs-initializer-set-by-API.template
new file mode 100644
index 0000000..16ad937
--- /dev/null
+++ b/generated_tests/uniform-initializer-templates/vs-initializer-set-by-API.template
@@ -0,0 +1,45 @@
+<%!
+def constructor(type, values):
+    return "{}({})".format(type, ", ".join(values))
+
+%>[require]
+GLSL >= ${"{}.{}".format(major, minor)}
+
+[vertex shader]
+#version ${"{}{}".format(major, minor)}
+varying vec4 color;
+
+% for (type, name, value) in type_list:
+uniform ${type} ${name} = ${value};
+% endfor
+
+void main()
+{
+  if ((${type_list[0][1]} == ${constructor(type_list[0][0], api_types[0][2])})
+% for i in range(1, len(type_list) -1):
+      && (${type_list[i][1]} == ${constructor(type_list[i][0], api_types[i][2])})
+% endfor
+      && (${type_list[-1][1]} == ${constructor(type_list[-1][0], api_types[-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]
+% for (api_type, name, values) in api_types:
+uniform ${api_type} ${name} ${" ".join(values)}
+% endfor
+draw rect -1 -1 2 2
+probe all rgb 0 1 0
-- 
1.7.6.5



More information about the Piglit mailing list