diff options
Diffstat (limited to 'tests/spec/ext_transform_feedback')
13 files changed, 58 insertions, 20 deletions
diff --git a/tests/spec/ext_transform_feedback/api-errors.c b/tests/spec/ext_transform_feedback/api-errors.c index b5437776c..d74943712 100644 --- a/tests/spec/ext_transform_feedback/api-errors.c +++ b/tests/spec/ext_transform_feedback/api-errors.c @@ -411,6 +411,7 @@ do_test(const struct test_desc *test) break; } + glEndTransformFeedback(); return pass; } diff --git a/tests/spec/ext_transform_feedback/builtin-varyings.c b/tests/spec/ext_transform_feedback/builtin-varyings.c index 29d84fe96..aeee87057 100644 --- a/tests/spec/ext_transform_feedback/builtin-varyings.c +++ b/tests/spec/ext_transform_feedback/builtin-varyings.c @@ -433,6 +433,32 @@ struct test_desc { GL_FLOAT, /* expected_type */ 1, /* expected_size */ }, + { + "gl_CullDistance", /* name */ + 130, /* version */ + + "#version 130\n" /* vs */ + "#extension GL_ARB_cull_distance : enable\n" /* vs */ + "in vec4 vertex_pos;\n" + "in float vertex_num;\n" + "out float gl_CullDistance[8];\n" + "void main() {\n" + " gl_Position = vertex_pos;\n" + " float scale = 1.0/256.0;\n" + " for(int i = 0; i < 8; ++i)\n" + " gl_CullDistance[i] = (float(i) + 8.0 * vertex_num) * scale;\n" + "}\n", + + 8, /* num_varyings */ + {"gl_CullDistance[0]", "gl_CullDistance[1]", /* varyings */ + "gl_CullDistance[2]", "gl_CullDistance[3]", + "gl_CullDistance[4]", "gl_CullDistance[5]", + "gl_CullDistance[6]", "gl_CullDistance[7]"}, + + 8, /* expected_num_output_components */ + GL_FLOAT, /* expected_type */ + 1, /* expected_size */ + }, }; const struct test_desc *test_to_run; @@ -480,6 +506,9 @@ piglit_init(int argc, char **argv) /* Set up test */ piglit_require_vertex_shader(); piglit_require_GLSL_version(test_to_run->version); + if (strcmp("gl_CullDistance", test_to_run->name) == 0) { + piglit_require_extension("GL_ARB_cull_distance"); + } piglit_require_transform_feedback(); vs = piglit_compile_shader_text(GL_VERTEX_SHADER, test_to_run->vs); prog = glCreateProgram(); diff --git a/tests/spec/ext_transform_feedback/discard-bitmap.c b/tests/spec/ext_transform_feedback/discard-bitmap.c index 0f5db5018..428c87e06 100644 --- a/tests/spec/ext_transform_feedback/discard-bitmap.c +++ b/tests/spec/ext_transform_feedback/discard-bitmap.c @@ -32,7 +32,7 @@ * * "Primitives can be optionally discarded before rasterization by * calling Enable and Disable with RASTERIZER_DISCARD_EXT. When - * enabled, primitives are discared right before the + * enabled, primitives are discarded right before the * rasterization stage, but after the optional transform feedback * stage. When disabled, primitives are passed through to the * rasterization stage to be processed diff --git a/tests/spec/ext_transform_feedback/discard-clear.c b/tests/spec/ext_transform_feedback/discard-clear.c index d67aad5f2..9db26a9d5 100644 --- a/tests/spec/ext_transform_feedback/discard-clear.c +++ b/tests/spec/ext_transform_feedback/discard-clear.c @@ -32,7 +32,7 @@ * * "Primitives can be optionally discarded before rasterization by * calling Enable and Disable with RASTERIZER_DISCARD_EXT. When - * enabled, primitives are discared right before the + * enabled, primitives are discarded right before the * rasterization stage, but after the optional transform feedback * stage. When disabled, primitives are passed through to the * rasterization stage to be processed diff --git a/tests/spec/ext_transform_feedback/discard-copypixels.c b/tests/spec/ext_transform_feedback/discard-copypixels.c index cfd796b4e..b3c2f5fe9 100644 --- a/tests/spec/ext_transform_feedback/discard-copypixels.c +++ b/tests/spec/ext_transform_feedback/discard-copypixels.c @@ -32,7 +32,7 @@ * * "Primitives can be optionally discarded before rasterization by * calling Enable and Disable with RASTERIZER_DISCARD_EXT. When - * enabled, primitives are discared right before the + * enabled, primitives are discarded right before the * rasterization stage, but after the optional transform feedback * stage. When disabled, primitives are passed through to the * rasterization stage to be processed diff --git a/tests/spec/ext_transform_feedback/discard-drawarrays.c b/tests/spec/ext_transform_feedback/discard-drawarrays.c index ec47dd03d..f32807b72 100644 --- a/tests/spec/ext_transform_feedback/discard-drawarrays.c +++ b/tests/spec/ext_transform_feedback/discard-drawarrays.c @@ -33,7 +33,7 @@ * * "Primitives can be optionally discarded before rasterization by * calling Enable and Disable with RASTERIZER_DISCARD_EXT. When - * enabled, primitives are discared right before the + * enabled, primitives are discarded right before the * rasterization stage, but after the optional transform feedback * stage. When disabled, primitives are passed through to the * rasterization stage to be processed diff --git a/tests/spec/ext_transform_feedback/discard-drawpixels.c b/tests/spec/ext_transform_feedback/discard-drawpixels.c index a7958c9e4..94a643412 100644 --- a/tests/spec/ext_transform_feedback/discard-drawpixels.c +++ b/tests/spec/ext_transform_feedback/discard-drawpixels.c @@ -32,7 +32,7 @@ * * "Primitives can be optionally discarded before rasterization by * calling Enable and Disable with RASTERIZER_DISCARD_EXT. When - * enabled, primitives are discared right before the + * enabled, primitives are discarded right before the * rasterization stage, but after the optional transform feedback * stage. When disabled, primitives are passed through to the * rasterization stage to be processed diff --git a/tests/spec/ext_transform_feedback/geometry-shaders-basic.c b/tests/spec/ext_transform_feedback/geometry-shaders-basic.c index 213c80441..140de9b74 100644 --- a/tests/spec/ext_transform_feedback/geometry-shaders-basic.c +++ b/tests/spec/ext_transform_feedback/geometry-shaders-basic.c @@ -41,6 +41,7 @@ #include "piglit-util-gl.h" #define GEOM_OUT_VERTS 10 +#define DRAW_COUNT 10 PIGLIT_GL_TEST_CONFIG_BEGIN config.supports_gl_compat_version = 32; @@ -114,9 +115,9 @@ piglit_init(int argc, char **argv) glGenBuffers(1, &xfb_buf); glBindBuffer(GL_TRANSFORM_FEEDBACK_BUFFER, xfb_buf); glBufferData(GL_TRANSFORM_FEEDBACK_BUFFER, - GEOM_OUT_VERTS * sizeof(GLint), NULL, GL_STREAM_READ); + DRAW_COUNT * GEOM_OUT_VERTS * sizeof(GLint), NULL, GL_STREAM_READ); glBindBufferRange(GL_TRANSFORM_FEEDBACK_BUFFER, 0, xfb_buf, 0, - GEOM_OUT_VERTS * sizeof(GLint)); + DRAW_COUNT * GEOM_OUT_VERTS * sizeof(GLint)); /* Setup queries */ glGenQueries(1, &generated_query); @@ -126,21 +127,25 @@ piglit_init(int argc, char **argv) /* Do drawing */ glBeginTransformFeedback(GL_POINTS); - glDrawArrays(GL_POINTS, 0, 1); + for (i = 0; i < DRAW_COUNT; i++) { + glDrawArrays(GL_POINTS, 0, 1); + glPauseTransformFeedback(); + glResumeTransformFeedback(); + } glEndTransformFeedback(); /* Check query results */ glEndQuery(GL_PRIMITIVES_GENERATED); glEndQuery(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN); glGetQueryObjectuiv(generated_query, GL_QUERY_RESULT, &query_result); - if (query_result != GEOM_OUT_VERTS) { + if (query_result != DRAW_COUNT * GEOM_OUT_VERTS) { printf("GL_PRIMITIVES_GENERATED query failed." " Expected %d, got %d.\n", GEOM_OUT_VERTS, query_result); pass = false; } glGetQueryObjectuiv(written_query, GL_QUERY_RESULT, &query_result); - if (query_result != GEOM_OUT_VERTS) { + if (query_result != DRAW_COUNT * GEOM_OUT_VERTS) { printf("GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN query failed." " Expected %d, got %d.\n", GEOM_OUT_VERTS, query_result); @@ -149,10 +154,12 @@ piglit_init(int argc, char **argv) /* Check transform feedback data */ readback = glMapBuffer(GL_TRANSFORM_FEEDBACK_BUFFER, GL_READ_ONLY); - for (i = 0; i < GEOM_OUT_VERTS; i++) { - if (readback[i] != i) { + for (i = 0; i < DRAW_COUNT * GEOM_OUT_VERTS; i++) { + GLint expected = i % DRAW_COUNT; + GLint got = readback[i]; + if (got != expected) { printf("Incorrect data for vertex %d." - " Expected %d, got %d.", i, i, readback[i]); + " Expected %d, got %d.", i, expected, got); pass = false; } } diff --git a/tests/spec/ext_transform_feedback/max-varyings.c b/tests/spec/ext_transform_feedback/max-varyings.c index bbce09cce..dfe4b66bc 100644 --- a/tests/spec/ext_transform_feedback/max-varyings.c +++ b/tests/spec/ext_transform_feedback/max-varyings.c @@ -204,7 +204,7 @@ init_xfb_varyings(int max_varyings) /* Initialise arrays of arrays */ for (i = 0; i < AOA_OUTER_DIM; ++i) { for (j = 0; j < inner_dim; ++j) { - char *buf = malloc(16); + char *buf = malloc(17); sprintf(buf, "v[%d][%d]", i, j); xfb_varying_aoa[count++] = buf; } diff --git a/tests/spec/ext_transform_feedback/negative-prims.c b/tests/spec/ext_transform_feedback/negative-prims.c index 7716f61d4..c5b6a5319 100644 --- a/tests/spec/ext_transform_feedback/negative-prims.c +++ b/tests/spec/ext_transform_feedback/negative-prims.c @@ -88,7 +88,7 @@ test_one_prim(GLenum tf_prim, int i) } } else { if (error != 0) { - printf("Unxpected GL error 0x%x when " + printf("Unexpected GL error 0x%x when " "rendering %s during %s transform feedback\n", error, prim_name, tf_name); diff --git a/tests/spec/ext_transform_feedback/order.c b/tests/spec/ext_transform_feedback/order.c index 62f83b212..647c9b111 100644 --- a/tests/spec/ext_transform_feedback/order.c +++ b/tests/spec/ext_transform_feedback/order.c @@ -38,7 +38,7 @@ * correct order by using a vertex shader whose execution time is * dramatically different for different vertices. * - * The test requries two command line arguments: + * The test requires two command line arguments: * * - drawcall indicates which drawing function should be called. A * value of "arrays" causes DrawArrays() to be used. A value of diff --git a/tests/spec/ext_transform_feedback/structs.c b/tests/spec/ext_transform_feedback/structs.c index d67c3f307..d6a175abf 100644 --- a/tests/spec/ext_transform_feedback/structs.c +++ b/tests/spec/ext_transform_feedback/structs.c @@ -38,7 +38,7 @@ * passed to glTransformFeedbackVaryings(). * * - The intention is for the transform feedback API to behave - * similary to glGetUniformLocation() and + * similarly to glGetUniformLocation() and * glGetProgramResourceLocation(). * * This test verifies proper operation of transform feedback varyings diff --git a/tests/spec/ext_transform_feedback/tessellation.c b/tests/spec/ext_transform_feedback/tessellation.c index 7200ef917..4a437b954 100644 --- a/tests/spec/ext_transform_feedback/tessellation.c +++ b/tests/spec/ext_transform_feedback/tessellation.c @@ -62,7 +62,7 @@ * * The images are rendered using a fragment shader that attenuates the * color of back-facing primitives, so that the test will verify that - * tesellation preserves winding order properly. + * tessellation preserves winding order properly. * * The test can be run in four different coloring modes: * @@ -432,7 +432,7 @@ draw(GLuint prog, bool use_xfb, float y_offset, GLenum mode, if (use_xfb) { glBindBuffer(GL_TRANSFORM_FEEDBACK_BUFFER, xfb_buf); /* Initialize the buffer with 0 so that we will be - * able to identify membory that was not overwitten by + * able to identify membory that was not overwritten by * the transform feedback. */ memset(buffer, 0, sizeof(buffer)); @@ -473,7 +473,8 @@ print_usage_and_exit(char *prog_name) " monochrome\n" " smooth\n" " flat_first\n" - " flat_last\n", prog_name); + " flat_last\n" + " wireframe\n", prog_name); exit(1); } |