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)