mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 05:18:08 +02:00
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:
parent
86a6b894a8
commit
5fa5c5a300
1 changed files with 14 additions and 16 deletions
|
|
@ -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");
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue