diff options
author | Ben Widawsky <benjamin.widawsky@intel.com> | 2014-10-29 18:49:22 -0700 |
---|---|---|
committer | Ben Widawsky <benjamin.widawsky@intel.com> | 2014-11-01 17:00:10 -0700 |
commit | 291a1ab25fb0ebb08cce40f052667a848a5cfc32 (patch) | |
tree | 0f32ec359c2d2ff23a01e4e60e6de59189c29f99 | |
parent | d7a22200716b27d68556060e563dd33938d9c04f (diff) |
HACKS
-rw-r--r-- | t.shader_test | 52 | ||||
-rw-r--r-- | tests/spec/ext_transform_feedback/pipeline-basic-primgen.c | 56 |
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); |