summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2018-06-28 10:50:46 -0700
committerDylan Baker <dylan@pnwbakers.com>2018-12-10 15:34:01 -0800
commit1aa5d00df3a10645fdce4d88525529742574901d (patch)
treef8fc17920b160af67d3cbb208bb2f985dfb500b1
parente30cf4c78e352aa9ed41f6cbe2e95b770ff657a7 (diff)
tests: Use a helper function in gl-1.0-rendermode-feedback
This is ground work for using proper subtest handling, it's a big enough change it makes sense to me to split it into a separate commit.
-rw-r--r--tests/spec/gl-1.0/rendermode-feedback.c77
1 files changed, 40 insertions, 37 deletions
diff --git a/tests/spec/gl-1.0/rendermode-feedback.c b/tests/spec/gl-1.0/rendermode-feedback.c
index 880f04167..532c55914 100644
--- a/tests/spec/gl-1.0/rendermode-feedback.c
+++ b/tests/spec/gl-1.0/rendermode-feedback.c
@@ -120,15 +120,49 @@ report_failure(struct type *type, float *buffer, int count)
}
-enum piglit_result
-piglit_display(void)
-{
- bool pass = true;
+static bool
+run_subtest(struct type * type) {
+ bool case_pass = true;
+ int returned_count, j;
+ const char *name = piglit_get_gl_enum_name(type->type);
float buffer[2 +
ARRAY_SIZE(vertex_array) +
ARRAY_SIZE(color_array) +
ARRAY_SIZE(texcoord_array)];
- int i, j;
+
+ printf("Testing %s\n", name);
+
+ for (j = 0; j < ARRAY_SIZE(buffer); j++)
+ buffer[j] = -1.0;
+
+ glFeedbackBuffer(ARRAY_SIZE(buffer), type->type, buffer);
+ glRenderMode(GL_FEEDBACK);
+ glDrawArrays(GL_TRIANGLES, 0, 4);
+ returned_count = glRenderMode(GL_RENDER);
+
+ if (returned_count != type->count) {
+ case_pass = false;
+ } else {
+ for (j = 0; j < type->count; j++) {
+ if (fabs(buffer[j] - type->values[j]) > .01)
+ case_pass = false;
+ }
+ }
+
+ if (!case_pass) {
+ report_failure(type, buffer, returned_count);
+ piglit_report_subtest_result(PIGLIT_FAIL, "%s", name);
+ } else {
+ piglit_report_subtest_result(PIGLIT_PASS, "%s", name);
+ }
+ return case_pass;
+}
+
+enum piglit_result
+piglit_display(void)
+{
+ bool pass = true;
+ int i;
piglit_ortho_projection(piglit_width, piglit_height, false);
@@ -143,38 +177,7 @@ piglit_display(void)
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
for (i = 0; i < ARRAY_SIZE(types); i++) {
- bool case_pass = true;
- int returned_count;
- const char *name = piglit_get_gl_enum_name(types[i].type);
-
- printf("Testing %s\n", name);
-
- for (j = 0; j < ARRAY_SIZE(buffer); j++)
- buffer[j] = -1.0;
-
- glFeedbackBuffer(ARRAY_SIZE(buffer), types[i].type, buffer);
- glRenderMode(GL_FEEDBACK);
- glDrawArrays(GL_TRIANGLES, 0, 4);
- returned_count = glRenderMode(GL_RENDER);
-
- if (returned_count != types[i].count) {
- case_pass = false;
- } else {
- for (j = 0; j < types[i].count; j++) {
- if (fabs(buffer[j] - types[i].values[j]) > .01)
- case_pass = false;
- }
- }
-
- if (!case_pass) {
- pass = false;
- report_failure(&types[i], buffer, returned_count);
- piglit_report_subtest_result(PIGLIT_FAIL,
- "%s", name);
- } else {
- piglit_report_subtest_result(PIGLIT_PASS,
- "%s", name);
- }
+ run_subtest(&types[i]);
}
piglit_present_results();