mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-29 12:20:10 +01:00
venus: minor cmd count related refactors
This is to prepare for qfb refactor, so that we can distinguish the current batch's cmd count and the appended new cmd count Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28112>
This commit is contained in:
parent
4bab7344a8
commit
9e7797c8c1
1 changed files with 17 additions and 21 deletions
|
|
@ -669,7 +669,7 @@ recycle_resolved_records:
|
|||
|
||||
static VkResult
|
||||
vn_queue_submission_add_query_feedback(struct vn_queue_submission *submit,
|
||||
uint32_t *cmd_count)
|
||||
uint32_t *new_cmd_count)
|
||||
{
|
||||
struct vk_queue *queue_vk = vk_queue_from_handle(submit->queue_handle);
|
||||
VkDevice dev_handle = vk_device_to_handle(queue_vk->base.device);
|
||||
|
|
@ -686,13 +686,13 @@ vn_queue_submission_add_query_feedback(struct vn_queue_submission *submit,
|
|||
|
||||
struct vn_query_feedback_cmd *qfb_cmd = NULL;
|
||||
VkResult result = vn_combine_query_records_and_record_feedback(
|
||||
dev_handle, cmd_handles, *cmd_count, vn_get_cmd_size(submit),
|
||||
dev_handle, cmd_handles, *new_cmd_count, vn_get_cmd_size(submit),
|
||||
fb_cmd_pool, &qfb_cmd);
|
||||
if (result != VK_SUCCESS)
|
||||
return result;
|
||||
|
||||
if (!qfb_cmd) {
|
||||
/* No query feedback needed, return without incrementing cmd_count */
|
||||
/* No qfb needed, return without incrementing new_cmd_count */
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
@ -705,7 +705,7 @@ vn_queue_submission_add_query_feedback(struct vn_queue_submission *submit,
|
|||
* Should be rare enough to just log and leak the feedback cmd.
|
||||
*/
|
||||
bool found_companion_cmd = false;
|
||||
for (uint32_t i = 0; i < *cmd_count; i++) {
|
||||
for (uint32_t i = 0; i < *new_cmd_count; i++) {
|
||||
VkCommandBuffer *cmd_handle = vn_get_temp_cmd_ptr(submit, i);
|
||||
struct vn_command_buffer *cmd =
|
||||
vn_command_buffer_from_handle(*cmd_handle);
|
||||
|
|
@ -721,8 +721,7 @@ vn_queue_submission_add_query_feedback(struct vn_queue_submission *submit,
|
|||
"Could not find non simultaneous cmd to link query feedback\n");
|
||||
}
|
||||
|
||||
vn_set_temp_cmd(submit, *cmd_count, qfb_cmd->cmd_handle);
|
||||
(*cmd_count)++;
|
||||
vn_set_temp_cmd(submit, (*new_cmd_count)++, qfb_cmd->cmd_handle);
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
|
@ -735,7 +734,7 @@ static VkResult
|
|||
vn_queue_submission_add_semaphore_feedback(struct vn_queue_submission *submit,
|
||||
uint32_t batch_index,
|
||||
uint32_t signal_index,
|
||||
uint32_t *cmd_count)
|
||||
uint32_t *new_cmd_count)
|
||||
{
|
||||
struct vn_semaphore *sem = vn_semaphore_from_handle(
|
||||
vn_get_signal_semaphore(submit, batch_index, signal_index));
|
||||
|
|
@ -755,8 +754,7 @@ vn_queue_submission_add_semaphore_feedback(struct vn_queue_submission *submit,
|
|||
|
||||
for (uint32_t i = 0; i < dev->queue_family_count; i++) {
|
||||
if (dev->queue_families[i] == queue_vk->queue_family_index) {
|
||||
vn_set_temp_cmd(submit, *cmd_count, sfb_cmd->cmd_handles[i]);
|
||||
(*cmd_count)++;
|
||||
vn_set_temp_cmd(submit, (*new_cmd_count)++, sfb_cmd->cmd_handles[i]);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
|
@ -767,7 +765,7 @@ vn_queue_submission_add_semaphore_feedback(struct vn_queue_submission *submit,
|
|||
static void
|
||||
vn_queue_submission_add_fence_feedback(struct vn_queue_submission *submit,
|
||||
uint32_t batch_index,
|
||||
uint32_t *cmd_count)
|
||||
uint32_t *new_cmd_count)
|
||||
{
|
||||
VK_FROM_HANDLE(vk_queue, queue_vk, submit->queue_handle);
|
||||
struct vn_device *dev = (void *)queue_vk->base.device;
|
||||
|
|
@ -781,18 +779,16 @@ vn_queue_submission_add_fence_feedback(struct vn_queue_submission *submit,
|
|||
}
|
||||
assert(ffb_cmd_handle != VK_NULL_HANDLE);
|
||||
|
||||
vn_set_temp_cmd(submit, *cmd_count, ffb_cmd_handle);
|
||||
(*cmd_count)++;
|
||||
vn_set_temp_cmd(submit, (*new_cmd_count)++, ffb_cmd_handle);
|
||||
}
|
||||
|
||||
static VkResult
|
||||
vn_queue_submission_add_feedback_cmds(struct vn_queue_submission *submit,
|
||||
uint32_t batch_index,
|
||||
uint32_t cmd_count,
|
||||
uint32_t feedback_types)
|
||||
{
|
||||
VkResult result;
|
||||
uint32_t new_cmd_count = cmd_count;
|
||||
uint32_t new_cmd_count = vn_get_cmd_count(submit, batch_index);
|
||||
|
||||
if (feedback_types & VN_FEEDBACK_TYPE_QUERY) {
|
||||
result = vn_queue_submission_add_query_feedback(submit, &new_cmd_count);
|
||||
|
|
@ -841,12 +837,11 @@ static VkResult
|
|||
vn_queue_submission_setup_batch(struct vn_queue_submission *submit,
|
||||
uint32_t batch_index)
|
||||
{
|
||||
const uint32_t cmd_count = vn_get_cmd_count(submit, batch_index);
|
||||
const uint32_t signal_count =
|
||||
vn_get_signal_semaphore_count(submit, batch_index);
|
||||
|
||||
uint32_t feedback_types = 0;
|
||||
uint32_t extra_cmd_count = 0;
|
||||
|
||||
const uint32_t signal_count =
|
||||
vn_get_signal_semaphore_count(submit, batch_index);
|
||||
for (uint32_t i = 0; i < signal_count; i++) {
|
||||
struct vn_semaphore *sem = vn_semaphore_from_handle(
|
||||
vn_get_signal_semaphore(submit, batch_index, i));
|
||||
|
|
@ -856,6 +851,7 @@ vn_queue_submission_setup_batch(struct vn_queue_submission *submit,
|
|||
}
|
||||
}
|
||||
|
||||
const uint32_t cmd_count = vn_get_cmd_count(submit, batch_index);
|
||||
for (uint32_t i = 0; i < cmd_count; i++) {
|
||||
struct vn_command_buffer *cmd = vn_get_cmd(submit, batch_index, i);
|
||||
if (!list_is_empty(&cmd->builder.query_records)) {
|
||||
|
|
@ -877,8 +873,8 @@ vn_queue_submission_setup_batch(struct vn_queue_submission *submit,
|
|||
* which is empty but has feedback, also copy the original commands for
|
||||
* this batch so that the last batch's feedback can be appended to it.
|
||||
*/
|
||||
if (extra_cmd_count || (batch_index == submit->batch_count - 2 &&
|
||||
submit->has_zink_sync_batch)) {
|
||||
if (feedback_types || (batch_index == submit->batch_count - 2 &&
|
||||
submit->has_zink_sync_batch)) {
|
||||
const size_t cmd_size = vn_get_cmd_size(submit);
|
||||
const size_t total_cmd_size = cmd_count * cmd_size;
|
||||
/* copy only needed for non-empty batches */
|
||||
|
|
@ -888,7 +884,7 @@ vn_queue_submission_setup_batch(struct vn_queue_submission *submit,
|
|||
}
|
||||
|
||||
VkResult result = vn_queue_submission_add_feedback_cmds(
|
||||
submit, batch_index, cmd_count, feedback_types);
|
||||
submit, batch_index, feedback_types);
|
||||
if (result != VK_SUCCESS)
|
||||
return result;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue