Module: Mesa
Branch: staging/23.3
Commit: c531ae3c8083b9a7876a736e5967ca84f86b5cd1
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c531ae3c8083b9a7876a736e5967ca84f86b5cd1

Author: Mary Guillemard <mary.guillem...@collabora.com>
Date:   Fri Nov  3 12:23:25 2023 +0100

venus: skip bind sparse info when checking for feedback query

Fix an assertion when using vkQueueBindSparse.

Fixes: 7fbf608f2da ("venus: append query feedback at submission time")
Signed-off-by: Mary Guillemard <mary.guillem...@collabora.com>
Reviewed-by: Juston Li <justo...@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26027>
(cherry picked from commit f71f5cf8562da4d13d5eb9220edecb6dad5b8ccf)

---

 .pick_status.json            |  2 +-
 src/virtio/vulkan/vn_queue.c | 15 +++++++++------
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index 5bfc8a75eec..953eb1798e0 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -764,7 +764,7 @@
         "description": "venus: skip bind sparse info when checking for 
feedback query",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": "7fbf608f2dac486b23030d3b48dd10bb453d9eb8",
         "notes": null
diff --git a/src/virtio/vulkan/vn_queue.c b/src/virtio/vulkan/vn_queue.c
index fd1ad4e23ae..57c0670f24e 100644
--- a/src/virtio/vulkan/vn_queue.c
+++ b/src/virtio/vulkan/vn_queue.c
@@ -270,12 +270,15 @@ vn_queue_submission_count_batch_feedback(struct 
vn_queue_submission *submit,
    }
 
    bool batch_has_feedback_query = false;
-   uint32_t cmd_count = vn_get_cmd_buffer_count(submit, batch_index);
-   for (uint32_t i = 0; i < cmd_count; i++) {
-      struct vn_command_buffer *cmd = vn_command_buffer_from_handle(
-         vn_get_cmd_handle(submit, batch_index, i));
-      if (!list_is_empty(&cmd->builder.query_batches))
-         batch_has_feedback_query = true;
+
+   if (submit->batch_type != VK_STRUCTURE_TYPE_BIND_SPARSE_INFO) {
+      uint32_t cmd_count = vn_get_cmd_buffer_count(submit, batch_index);
+      for (uint32_t i = 0; i < cmd_count; i++) {
+         struct vn_command_buffer *cmd = vn_command_buffer_from_handle(
+            vn_get_cmd_handle(submit, batch_index, i));
+         if (!list_is_empty(&cmd->builder.query_batches))
+            batch_has_feedback_query = true;
+      }
    }
 
    if (batch_has_feedback_query)

Reply via email to