Mesa (master): zink: deduplicate some query result code

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Nov 2 23:20:11 UTC 2020


Module: Mesa
Branch: master
Commit: a8785579e00b4f94f814ccc03e039af0d17320a7
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a8785579e00b4f94f814ccc03e039af0d17320a7

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Tue Jul 14 13:34:09 2020 -0400

zink: deduplicate some query result code

no functional changes, just a small simplification

Reviewed-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7195>

---

 src/gallium/drivers/zink/zink_query.c | 42 +++++++++++++----------------------
 1 file changed, 16 insertions(+), 26 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_query.c b/src/gallium/drivers/zink/zink_query.c
index 7d913815813..7fdd532aafc 100644
--- a/src/gallium/drivers/zink/zink_query.c
+++ b/src/gallium/drivers/zink/zink_query.c
@@ -194,33 +194,24 @@ get_query_result(struct pipe_context *pctx,
    uint64_t results[NUM_QUERIES * 2];
    memset(results, 0, sizeof(results));
    int num_results = query->curr_query - query->last_checked_query;
-   if (query->vkqtype == VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT) {
-      /* this query emits 2 values */
-      assert(query->curr_query <= ARRAY_SIZE(results) / 2);
-      VkResult status = vkGetQueryPoolResults(screen->dev, query->query_pool,
-                                              query->last_checked_query, num_results,
-                                              sizeof(results),
-                                              results,
-                                              sizeof(uint64_t),
-                                              flags);
-      if (status != VK_SUCCESS)
-         return false;
-      /* multiply for correct looping behavior below */
-      num_results *= 2;
-   } else {
-      assert(query->curr_query <= ARRAY_SIZE(results));
-      VkResult status = vkGetQueryPoolResults(screen->dev, query->query_pool,
-                                              query->last_checked_query, num_results,
-                                              sizeof(results),
-                                              results,
-                                              sizeof(uint64_t),
-                                              flags);
-      if (status != VK_SUCCESS)
-         return false;
-   }
+   int result_size = 1;
+      /* these query types emit 2 values */
+   if (query->vkqtype == VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT)
+      result_size = 2;
+
+   /* verify that we have an in-bounds number of results pending */
+   assert(query->curr_query <= ARRAY_SIZE(results) / result_size);
+   VkResult status = vkGetQueryPoolResults(screen->dev, query->query_pool,
+                                           query->last_checked_query, num_results,
+                                           sizeof(results),
+                                           results,
+                                           sizeof(uint64_t),
+                                           flags);
+   if (status != VK_SUCCESS)
+      return false;
 
    uint64_t last_val = 0;
-   for (int i = 0; i < num_results; ++i) {
+   for (int i = 0; i < num_results * result_size; i += result_size) {
       switch (query->type) {
       case PIPE_QUERY_OCCLUSION_PREDICATE:
       case PIPE_QUERY_OCCLUSION_PREDICATE_CONSERVATIVE:
@@ -252,7 +243,6 @@ get_query_result(struct pipe_context *pctx,
           * - from VK_EXT_transform_feedback spec
           */
          result->u64 += results[i];
-         i++;
          break;
 
       default:



More information about the mesa-commit mailing list