On 16 August 2013 11:57, Ian Romanick <[email protected]> wrote: > Assuming we'll have tougher tests later, this test is > > Reviewed-by: Ian Romanick <[email protected]> > > On side comment below... > > > On 08/07/2013 10:15 AM, Paul Berry wrote: > >> --- >> tests/all.tests | 2 + >> .../spec/ext_transform_**feedback/CMakeLists.gl.txt | 1 + >> .../geometry-shaders-basic.c | 171 >> +++++++++++++++++++++ >> 3 files changed, 174 insertions(+) >> create mode 100644 tests/spec/ext_transform_** >> feedback/geometry-shaders-**basic.c >> >> diff --git a/tests/all.tests b/tests/all.tests >> index 2f32120..bf46ae1 100644 >> --- a/tests/all.tests >> +++ b/tests/all.tests >> @@ -2116,6 +2116,8 @@ for api_suffix, possible_options in [('', [[], >> ['interface']]), >> api_suffix, ' '.join(args)) >> ext_transform_feedback[test_**name] = >> concurrent_test( >> 'ext_transform_feedback-{0}'.** >> format(test_name)) >> +ext_transform_feedback['**geometry-shaders-basic'] = concurrent_test( >> + 'ext_transform_feedback-**geometry-shaders-basic') >> >> arb_transform_feedback2 = Group() >> spec['ARB_transform_feedback2'**] = arb_transform_feedback2 >> diff --git a/tests/spec/ext_transform_**feedback/CMakeLists.gl.txt >> b/tests/spec/ext_transform_**feedback/CMakeLists.gl.txt >> index e881033..1d03abd 100644 >> --- a/tests/spec/ext_transform_**feedback/CMakeLists.gl.txt >> +++ b/tests/spec/ext_transform_**feedback/CMakeLists.gl.txt >> @@ -21,6 +21,7 @@ piglit_add_executable >> (ext_transform_feedback-**discard-copypixels >> discard-copypix >> piglit_add_executable (ext_transform_feedback-**discard-drawarrays >> discard-drawarrays.c) >> piglit_add_executable (ext_transform_feedback-**discard-drawpixels >> discard-drawpixels.c) >> piglit_add_executable (ext_transform_feedback-**generatemipmap >> generatemipmap.c) >> +piglit_add_executable (ext_transform_feedback-**geometry-shaders-basic >> geometry-shaders-basic.c) >> piglit_add_executable (ext_transform_feedback-get-**buffer-state >> get-buffer-state.c) >> piglit_add_executable (ext_transform_feedback-**position position.c) >> piglit_add_executable (ext_transform_feedback-**immediate-reuse >> immediate-reuse.c) >> diff --git a/tests/spec/ext_transform_**feedback/geometry-shaders-**basic.c >> b/tests/spec/ext_transform_**feedback/geometry-shaders-**basic.c >> new file mode 100644 >> index 0000000..ad63dc1 >> --- /dev/null >> +++ b/tests/spec/ext_transform_**feedback/geometry-shaders-**basic.c >> @@ -0,0 +1,171 @@ >> +/* >> + * Copyright © 2013 Intel Corporation >> + * >> + * Permission is hereby granted, free of charge, to any person obtaining >> a >> + * copy of this software and associated documentation files (the >> "Software"), >> + * to deal in the Software without restriction, including without >> limitation >> + * the rights to use, copy, modify, merge, publish, distribute, >> sublicense, >> + * and/or sell copies of the Software, and to permit persons to whom the >> + * Software is furnished to do so, subject to the following conditions: >> + * >> + * The above copyright notice and this permission notice (including the >> next >> + * paragraph) shall be included in all copies or substantial portions of >> the >> + * Software. >> + * >> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, >> EXPRESS OR >> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF >> MERCHANTABILITY, >> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT >> SHALL >> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR >> OTHER >> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, >> ARISING >> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER >> + * DEALINGS IN THE SOFTWARE. >> + */ >> + >> +/** >> + * \file geometry-shaders-basic.c >> + * >> + * Verify basic functionality of transform feedback when a geometry >> + * shader is in use. >> + * >> + * This test checks that: >> + * >> + * - The number of primitives counted by GL_PRIMITIVES_GENERATED and >> + * GL_TRANSFORM_FEEDBACK_**PRIMITIVES_WRITTEN is based on the number >> + * of geometry shader output vertices (rather than the number of >> + * primitives sent down the pipeline). >> + * >> + * - Data output by the geometry shader is properly recorded in the >> + * transform feedback buffer. >> + */ >> + >> +#include "piglit-util-gl-common.h" >> + >> +#define GEOM_OUT_VERTS 10 >> + >> +PIGLIT_GL_TEST_CONFIG_BEGIN >> + config.supports_gl_compat_**version = 32; >> + config.supports_gl_core_**version = 32; >> +PIGLIT_GL_TEST_CONFIG_END >> + >> +static const char *vstext = >> + "#version 150\n" >> + "in int vertex_count;\n" >> + "out int vertex_count_to_gs;\n" >> + "\n" >> + "void main()\n" >> + "{\n" >> + " vertex_count_to_gs = vertex_count;\n" >> + "}\n"; >> + >> +static const char *gstext = >> + "#version 150\n" >> + "layout(points) in;\n" >> + "layout(points, max_vertices=10) out;\n" >> + "in int vertex_count_to_gs[1];\n" >> + "out int vertex_id;\n" >> + "\n" >> + "void main()\n" >> + "{\n" >> + " for (int i = 0; i < vertex_count_to_gs[0]; i++) {\n" >> + " vertex_id = i;\n" >> + " EmitVertex();\n" >> + " }\n" >> + "}\n"; >> + >> +static const char *varyings[] = { "vertex_id" }; >> + >> +void >> +piglit_init(int argc, char **argv) >> +{ >> + GLint vertex_data[1] = { GEOM_OUT_VERTS }; >> + bool pass = true; >> + GLuint vs, gs, prog, array_buf, query_result, xfb_buf, >> generated_query, >> + written_query, vao; >> + GLint vertex_count_loc; >> + const GLint *readback; >> + int i; >> + >> + vs = piglit_compile_shader_text(GL_**VERTEX_SHADER, vstext); >> + gs = piglit_compile_shader_text(GL_**GEOMETRY_SHADER, gstext); >> + prog = glCreateProgram(); >> + glAttachShader(prog, vs); >> + glAttachShader(prog, gs); >> + glTransformFeedbackVaryings(**prog, 1, varyings, >> GL_INTERLEAVED_ATTRIBS); >> + glLinkProgram(prog); >> + if (!piglit_link_check_status(**prog)) { >> + glDeleteProgram(prog); >> + piglit_report_result(PIGLIT_**FAIL); >> + } >> > > I have seen or written code like this lots of places in piglit. I think > we need a piglit_build_simple_program_**unlinked that does everything > upto the glLinkProgram call.
Yeah, that's a good point. I'll do that as a follow-up.
_______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
