Stop running the test after 10 failures. As it was, a failure could lead to nearly 9MB of output. --- tests/spec/ext_transform_feedback/max-varyings.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/tests/spec/ext_transform_feedback/max-varyings.c b/tests/spec/ext_transform_feedback/max-varyings.c index 4a5086c..1f83b60 100644 --- a/tests/spec/ext_transform_feedback/max-varyings.c +++ b/tests/spec/ext_transform_feedback/max-varyings.c @@ -249,6 +249,7 @@ check_xfb_output(int max_varyings, int num_xfb_varyings, int vertex, varying, i; float (*buffer)[4] = glMapBuffer(GL_TRANSFORM_FEEDBACK_BUFFER, GL_READ_ONLY); + int numFail = 0; for (vertex = 0; vertex < 6; ++vertex) { for (varying = 0; varying < num_xfb_varyings; ++varying) { @@ -273,10 +274,14 @@ check_xfb_output(int max_varyings, int num_xfb_varyings, actual[0], actual[1], actual[2], actual[3]); pass = GL_FALSE; + if (++numFail >= 10) { + goto end; + } } } } +end: glUnmapBuffer(GL_TRANSFORM_FEEDBACK_BUFFER); return pass; @@ -322,9 +327,12 @@ draw(GLuint vs, GLuint fs, int num_xfb_varyings, glEndTransformFeedback(); pass = check_xfb_output(max_varyings, num_xfb_varyings, - offset, xfb_varyings) && pass; + offset, xfb_varyings); glDeleteProgram(prog); + if (!pass) { + break; + } } return pass; @@ -341,8 +349,10 @@ run_subtest(GLuint vs, GLuint fs, int max_xfb_varyings, glClear(GL_COLOR_BUFFER_BIT); for (row = 0; row < max_xfb_varyings; row++) { - pass = draw(vs, fs, row + 1, max_varyings, xfb_varyings) && - pass; + pass = draw(vs, fs, row + 1, max_varyings, xfb_varyings); + if (!pass) { + goto end; + } } for (row = 0; row < max_xfb_varyings; row++) { @@ -359,10 +369,11 @@ run_subtest(GLuint vs, GLuint fs, int max_xfb_varyings, " captured and offset %d\n", row + 1, col); pass = GL_FALSE; - break; + goto end; } } } +end: return pass; } -- 1.9.1 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit