nvk: move nvk_queue_state_update to nvk_queue_submit_exec

The only reason we had it pulled out was because that made more sense
back when we had drm/nouveau baked into our queue code.  With the new
NVKMD interface, there's no point.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30596>
This commit is contained in:
Faith Ekstrand 2024-08-09 15:35:22 -05:00 committed by Marge Bot
parent 86a6b894a8
commit 5fa5c5a300

View file

@ -295,6 +295,20 @@ nvk_queue_submit_exec(struct nvk_queue *queue,
const bool sync = pdev->debug_flags & NVK_DEBUG_PUSH_SYNC;
if (submit->command_buffer_count > 0) {
result = nvk_queue_state_update(queue, &queue->state);
if (result != VK_SUCCESS)
return result;
if (queue->state.push.mem != NULL) {
struct nvkmd_ctx_exec exec = {
.addr = queue->state.push.mem->va->addr,
.size_B = queue->state.push.dw_count * 4,
};
result = nvkmd_ctx_exec(queue->exec_ctx, &queue->vk.base, 1, &exec);
if (result != VK_SUCCESS)
goto fail;
}
uint64_t upload_time_point;
result = nvk_upload_queue_flush(dev, &dev->upload, &upload_time_point);
if (result != VK_SUCCESS)
@ -317,16 +331,6 @@ nvk_queue_submit_exec(struct nvk_queue *queue,
if (result != VK_SUCCESS)
goto fail;
if (submit->command_buffer_count > 0 && queue->state.push.mem != NULL) {
struct nvkmd_ctx_exec exec = {
.addr = queue->state.push.mem->va->addr,
.size_B = queue->state.push.dw_count * 4,
};
result = nvkmd_ctx_exec(queue->exec_ctx, &queue->vk.base, 1, &exec);
if (result != VK_SUCCESS)
goto fail;
}
for (unsigned i = 0; i < submit->command_buffer_count; i++) {
struct nvk_cmd_buffer *cmd =
container_of(submit->command_buffers[i], struct nvk_cmd_buffer, vk);
@ -401,12 +405,6 @@ nvk_queue_submit(struct vk_queue *vk_queue,
if (result != VK_SUCCESS)
return vk_queue_set_lost(&queue->vk, "Bind operation failed");
} else {
result = nvk_queue_state_update(queue, &queue->state);
if (result != VK_SUCCESS) {
return vk_queue_set_lost(&queue->vk, "Failed to update queue base "
"pointers pushbuf");
}
result = nvk_queue_submit_exec(queue, submit);
if (result != VK_SUCCESS)
return vk_queue_set_lost(&queue->vk, "Submit failed");