From 54f78df2bd6b32e8cb08e5cbbc86940916b2f3eb Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 13 Sep 2024 10:38:58 +0200 Subject: [PATCH] fix arb_query_buffer_object-coherency to warn on invalid GS results instead of fail This behavior is technically valid, and the test is mostly useless. This is similar to 1e631479c0b477006dd7561c55e06269d2878d8d. Signed-off-by: Samuel Pitoiset Part-of: --- tests/spec/arb_query_buffer_object/coherency.c | 3 ++- tests/spec/arb_query_buffer_object/common.c | 17 +++++++++++++++++ tests/spec/arb_query_buffer_object/common.h | 3 +++ tests/spec/arb_query_buffer_object/qbo.c | 17 ----------------- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/tests/spec/arb_query_buffer_object/coherency.c b/tests/spec/arb_query_buffer_object/coherency.c index 3f59fbe46..60e19ecdd 100644 --- a/tests/spec/arb_query_buffer_object/coherency.c +++ b/tests/spec/arb_query_buffer_object/coherency.c @@ -262,7 +262,8 @@ run_subtest(const struct consumer_mode *cm, const struct query_type_desc *qdesc) if (cm->clamped) expected = MIN2(expected, cm->clamp_max); - if (result != expected && (exact || result < expected)) { + if (result != expected && (exact || result < expected) && + !is_gs_valid(qdesc, expected, result)) { fprintf(stderr, "Result: %u\nExpected: %u\n", result, expected); return PIGLIT_FAIL; } diff --git a/tests/spec/arb_query_buffer_object/common.c b/tests/spec/arb_query_buffer_object/common.c index cd6bd4787..5e0705b0f 100644 --- a/tests/spec/arb_query_buffer_object/common.c +++ b/tests/spec/arb_query_buffer_object/common.c @@ -128,6 +128,23 @@ is_query_supported(const struct query_type_desc *desc) return true; } +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; +} + void run_query(unsigned query, const struct query_type_desc *desc) { diff --git a/tests/spec/arb_query_buffer_object/common.h b/tests/spec/arb_query_buffer_object/common.h index 89dc8b494..4086d39e7 100644 --- a/tests/spec/arb_query_buffer_object/common.h +++ b/tests/spec/arb_query_buffer_object/common.h @@ -48,6 +48,9 @@ get_query_values(const struct query_type_desc *desc, bool *exact, uint32_t *expe bool is_query_supported(const struct query_type_desc *desc); +bool +is_gs_valid(const struct query_type_desc *desc, uint32_t expected, uint64_t cpu_result); + void run_query(unsigned query, const struct query_type_desc *desc); diff --git a/tests/spec/arb_query_buffer_object/qbo.c b/tests/spec/arb_query_buffer_object/qbo.c index 05be962a8..9575b9115 100644 --- a/tests/spec/arb_query_buffer_object/qbo.c +++ b/tests/spec/arb_query_buffer_object/qbo.c @@ -97,23 +97,6 @@ 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) { -- 2.11.4.GIT