diff options
author | Mike Blumenkrantz <michael.blumenkrantz@gmail.com> | 2024-03-06 13:16:22 -0500 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2024-03-07 13:29:35 +0000 |
commit | 1e631479c0b477006dd7561c55e06269d2878d8d (patch) | |
tree | 211a4c3e6e60355444870df8fc4830b42fc406f7 | |
parent | 62938a9bcb439f54f23b558b1496e75941962696 (diff) |
fix arb_query_buffer_object-qbo to warn on invalid GS results instead of fail
this behavior is technically valid, and the test is mostly useless
Part-of: <https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/884>
-rw-r--r-- | tests/spec/arb_query_buffer_object/qbo.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/tests/spec/arb_query_buffer_object/qbo.c b/tests/spec/arb_query_buffer_object/qbo.c index 7f6b56bef..05be962a8 100644 --- a/tests/spec/arb_query_buffer_object/qbo.c +++ b/tests/spec/arb_query_buffer_object/qbo.c @@ -97,6 +97,23 @@ cpu_gather_query(bool exact, uint32_t expected, uint64_t *cpu_result) ? PIGLIT_PASS : PIGLIT_FAIL; } +static bool +is_gs_valid(const struct query_type_desc *desc, uint32_t expected, uint64_t cpu_result) +{ + switch (desc->type) { + case GL_GEOMETRY_SHADER_INVOCATIONS: + case GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB: + if (!expected && cpu_result) { + fprintf(stderr, "WARNING: GEOMETRY_SHADER statistics query returned nonzero when no GS bound\n"); + return true; + } + return false; + default: + break; + } + return true; +} + enum piglit_result run_subtest(void) { @@ -120,7 +137,7 @@ run_subtest(void) if (sync_mode == QBO_ASYNC_CPU_READ_BEFORE) { if (cpu_gather_query(exact, expected, &cpu_result)) - return PIGLIT_FAIL; + return is_gs_valid(query_desc, expected, cpu_result) ? PIGLIT_WARN : PIGLIT_FAIL; have_cpu_result = true; } @@ -156,7 +173,7 @@ run_subtest(void) if (sync_mode == QBO_SYNC_CPU_READ_AFTER_CACHE_TEST || sync_mode == QBO_ASYNC_CPU_READ_AFTER) { if (cpu_gather_query(exact, expected, &cpu_result)) - return PIGLIT_FAIL; + return is_gs_valid(query_desc, expected, cpu_result) ? PIGLIT_WARN : PIGLIT_FAIL; have_cpu_result = true; } @@ -187,7 +204,7 @@ run_subtest(void) printf("QBO: %u %u %u %u\n", ptr[0], ptr[1], ptr[2], ptr[3]); glUnmapBuffer(GL_QUERY_BUFFER); - return PIGLIT_FAIL; + return is_gs_valid(query_desc, expected, cpu_result) ? PIGLIT_WARN : PIGLIT_FAIL; } return PIGLIT_PASS; |