summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Widawsky <benjamin.widawsky@intel.com>2014-10-29 18:49:22 -0700
committerBen Widawsky <benjamin.widawsky@intel.com>2014-11-01 17:00:10 -0700
commit291a1ab25fb0ebb08cce40f052667a848a5cfc32 (patch)
tree0f32ec359c2d2ff23a01e4e60e6de59189c29f99
parentd7a22200716b27d68556060e563dd33938d9c04f (diff)
HACKS
-rw-r--r--t.shader_test52
-rw-r--r--tests/spec/ext_transform_feedback/pipeline-basic-primgen.c56
2 files changed, 94 insertions, 14 deletions
diff --git a/t.shader_test b/t.shader_test
new file mode 100644
index 000000000..fc26f53bd
--- /dev/null
+++ b/t.shader_test
@@ -0,0 +1,52 @@
+[require]
+GL >= 3.1
+GLSL >= 1.50
+
+[vertex shader]
+#version 150
+
+in vec4 piglit_vertex;
+out vec4 vertex_to_gs;
+
+void main()
+{
+ vertex_to_gs = piglit_vertex;
+}
+
+[geometry shader]
+#version 150
+
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 3) out;
+
+in vec4 vertex_to_gs[3];
+out vec4 foo;
+out vec4 bar;
+out vec4 quux;
+void main()
+{
+ for (int i = 0; i < 3; i++) {
+ gl_Position = vertex_to_gs[i];
+ foo = vertex_to_gs[i];
+ bar = vertex_to_gs[i];
+ quux = vertex_to_gs[i];
+ EmitVertex();
+ }
+}
+
+[fragment shader]
+#version 150
+
+out vec4 color;
+in vec4 foo;
+in vec4 bar;
+in vec4 quux;
+
+void main()
+{
+ color = vec4(0.0, 1.0, 0.0, 1.0) + foo - bar + quux - foo;
+}
+
+[test]
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
diff --git a/tests/spec/ext_transform_feedback/pipeline-basic-primgen.c b/tests/spec/ext_transform_feedback/pipeline-basic-primgen.c
index 4db1636e9..39dba3da2 100644
--- a/tests/spec/ext_transform_feedback/pipeline-basic-primgen.c
+++ b/tests/spec/ext_transform_feedback/pipeline-basic-primgen.c
@@ -32,13 +32,36 @@
#include "piglit-util-gl-common.h"
PIGLIT_GL_TEST_CONFIG_BEGIN
-
- config.supports_gl_compat_version = 10;
+ config.supports_gl_compat_version = 32;
+ config.supports_gl_core_version = 32;
config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | PIGLIT_GL_VISUAL_RGBA;
-
PIGLIT_GL_TEST_CONFIG_END
-static const char *vstext = "void main() { gl_Position = gl_Vertex; }";
+static const char *vstext = "#version 140\nin vec4 piglit_vertex; void main() { gl_Position = piglit_vertex; }";
+
+const char *vsgstext = {
+ "#version 150\n"
+ "in vec4 piglit_vertex;\n"
+ "out vec4 vertex_to_gs;\n"
+ "void main()\n"
+ "{\n"
+ " vertex_to_gs = piglit_vertex;\n"
+ "}\n"
+};
+
+const char *gstext = {
+ "#version 150\n"
+ "layout(triangles) in;\n"
+ "layout(triangle_strip, max_vertices = 3) out;\n"
+ "in vec4 vertex_to_gs[3];\n"
+ "void main()\n"
+ "{\n"
+ " for (int i = 0; i < 3; i++) {\n"
+ " gl_Position = vertex_to_gs[i];\n"
+ " EmitVertex();\n"
+ " }\n"
+ "}\n"
+};
GLuint prog;
GLuint q;
@@ -47,27 +70,32 @@ void piglit_init(int argc, char **argv)
{
unsigned qresult;
int expected = 2;
- GLuint vs;
-
- /* Check the driver. */
- piglit_require_gl_version(15);
- piglit_require_GLSL();
- piglit_require_transform_feedback();
+ GLuint vs, gs;
+ const int use_gs = argc > 1;
glGenQueries(1, &q);
- glEnable(GL_RASTERIZER_DISCARD);
+// glEnable(GL_RASTERIZER_DISCARD);
- /* Create shaders. */
- vs = piglit_compile_shader_text(GL_VERTEX_SHADER, vstext);
prog = glCreateProgram();
+
+ /* Create shaders. */
+ if (use_gs) {
+ vs = piglit_compile_shader_text(GL_VERTEX_SHADER, vsgstext);
+ gs = piglit_compile_shader_text(GL_GEOMETRY_SHADER, gstext);
+ glAttachShader(prog, gs);
+ printf("Using GS\n");
+ } else
+ vs = piglit_compile_shader_text(GL_VERTEX_SHADER, vstext);
+
glAttachShader(prog, vs);
glLinkProgram(prog);
if (!piglit_link_check_status(prog)) {
glDeleteProgram(prog);
piglit_report_result(PIGLIT_FAIL);
}
- glUseProgram(prog);
+
+ glUseProgram(prog);
glBeginQuery(GL_PRIMITIVES_GENERATED, q);
piglit_draw_rect(-1, -1, 2, 2);