summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>2024-03-06 13:16:22 -0500
committerMarge Bot <emma+marge@anholt.net>2024-03-07 13:29:35 +0000
commit1e631479c0b477006dd7561c55e06269d2878d8d (patch)
tree211a4c3e6e60355444870df8fc4830b42fc406f7
parent62938a9bcb439f54f23b558b1496e75941962696 (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.c23
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;