summaryrefslogtreecommitdiff
path: root/tests/spec/ext_transform_feedback
diff options
context:
space:
mode:
Diffstat (limited to 'tests/spec/ext_transform_feedback')
-rw-r--r--tests/spec/ext_transform_feedback/api-errors.c1
-rw-r--r--tests/spec/ext_transform_feedback/builtin-varyings.c29
-rw-r--r--tests/spec/ext_transform_feedback/discard-bitmap.c2
-rw-r--r--tests/spec/ext_transform_feedback/discard-clear.c2
-rw-r--r--tests/spec/ext_transform_feedback/discard-copypixels.c2
-rw-r--r--tests/spec/ext_transform_feedback/discard-drawarrays.c2
-rw-r--r--tests/spec/ext_transform_feedback/discard-drawpixels.c2
-rw-r--r--tests/spec/ext_transform_feedback/geometry-shaders-basic.c23
-rw-r--r--tests/spec/ext_transform_feedback/max-varyings.c2
-rw-r--r--tests/spec/ext_transform_feedback/negative-prims.c2
-rw-r--r--tests/spec/ext_transform_feedback/order.c2
-rw-r--r--tests/spec/ext_transform_feedback/structs.c2
-rw-r--r--tests/spec/ext_transform_feedback/tessellation.c7
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);
}