Mesa (master): etnaviv: make use of a fixed size array to track of all acc query provider
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Sun Apr 5 18:12:00 UTC 2020
Module: Mesa
Branch: master
Commit: e5b0eed0f57fefebcf6ac18b008fa362d6543da9
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e5b0eed0f57fefebcf6ac18b008fa362d6543da9
Author: Christian Gmeiner <christian.gmeiner at gmail.com>
Date: Fri Jul 19 12:43:43 2019 +0200
etnaviv: make use of a fixed size array to track of all acc query provider
Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/1530>
---
src/gallium/drivers/etnaviv/etnaviv_query_acc.c | 33 ++++++++++++-------------
1 file changed, 16 insertions(+), 17 deletions(-)
diff --git a/src/gallium/drivers/etnaviv/etnaviv_query_acc.c b/src/gallium/drivers/etnaviv/etnaviv_query_acc.c
index 976bfa1c497..f156363e951 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_query_acc.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_query_acc.c
@@ -119,6 +119,11 @@ static const struct etna_acc_sample_provider occlusion_provider = {
.result = occlusion_result,
};
+static const struct etna_acc_sample_provider *acc_sample_provider[] =
+{
+ &occlusion_provider,
+};
+
static void
realloc_query_bo(struct etna_context *ctx, struct etna_acc_query *aq)
{
@@ -224,29 +229,23 @@ static const struct etna_query_funcs acc_query_funcs = {
.get_query_result = etna_acc_get_query_result,
};
-static inline const struct etna_acc_sample_provider *
-query_sample_provider(unsigned query_type)
-{
- switch (query_type) {
- case PIPE_QUERY_OCCLUSION_COUNTER:
- /* fallthrough */
- case PIPE_QUERY_OCCLUSION_PREDICATE:
- /* fallthrough */
- case PIPE_QUERY_OCCLUSION_PREDICATE_CONSERVATIVE:
- return &occlusion_provider;
- default:
- return NULL;
- }
-}
-
struct etna_query *
etna_acc_create_query(struct etna_context *ctx, unsigned query_type)
{
+ const struct etna_acc_sample_provider *p = NULL;
struct etna_acc_query *aq;
struct etna_query *q;
- const struct etna_acc_sample_provider *p;
- p = query_sample_provider(query_type);
+ /* find a sample provide for the requested query type */
+ for (unsigned i = 0; i < ARRAY_SIZE(acc_sample_provider); i++) {
+ p = acc_sample_provider[i];
+
+ if (p->supports(query_type))
+ break;
+ else
+ p = NULL;
+ }
+
if (!p)
return NULL;
More information about the mesa-commit
mailing list