lavapipe: pass list to cmdbuf exec, not cmdbuf

Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23394>
This commit is contained in:
Mike Blumenkrantz
2023-05-25 10:11:33 -04:00
committed by Marge Bot
parent e05e62c611
commit 2ac8ca7d72
+6 -6
View File
@@ -2896,7 +2896,7 @@ static void handle_push_constants(struct vk_cmd_queue_entry *cmd,
state->inlines_dirty[MESA_SHADER_MESH] |= (stage_flags & VK_SHADER_STAGE_MESH_BIT_EXT) > 0;
}
static void lvp_execute_cmd_buffer(struct lvp_cmd_buffer *cmd_buffer,
static void lvp_execute_cmd_buffer(struct list_head *cmds,
struct rendering_state *state, bool print_cmds);
static void handle_execute_commands(struct vk_cmd_queue_entry *cmd,
@@ -2904,7 +2904,7 @@ static void handle_execute_commands(struct vk_cmd_queue_entry *cmd,
{
for (unsigned i = 0; i < cmd->u.execute_commands.command_buffer_count; i++) {
LVP_FROM_HANDLE(lvp_cmd_buffer, secondary_buf, cmd->u.execute_commands.command_buffers[i]);
lvp_execute_cmd_buffer(secondary_buf, state, print_cmds);
lvp_execute_cmd_buffer(&secondary_buf->vk.cmd_queue.cmds, state, print_cmds);
}
}
@@ -4308,14 +4308,14 @@ void lvp_add_enqueue_cmd_entrypoints(struct vk_device_dispatch_table *disp)
#undef ENQUEUE_CMD
}
static void lvp_execute_cmd_buffer(struct lvp_cmd_buffer *cmd_buffer,
static void lvp_execute_cmd_buffer(struct list_head *cmds,
struct rendering_state *state, bool print_cmds)
{
struct vk_cmd_queue_entry *cmd;
bool first = true;
bool did_flush = false;
LIST_FOR_EACH_ENTRY(cmd, &cmd_buffer->vk.cmd_queue.cmds, cmd_link) {
LIST_FOR_EACH_ENTRY(cmd, cmds, cmd_link) {
if (print_cmds)
fprintf(stderr, "%s\n", vk_cmd_queue_type_names[cmd->type]);
switch (cmd->type) {
@@ -4437,7 +4437,7 @@ static void lvp_execute_cmd_buffer(struct lvp_cmd_buffer *cmd_buffer,
/* skip flushes since every cmdbuf does a flush
after iterating its cmds and so this is redundant
*/
if (first || did_flush || cmd->cmd_link.next == &cmd_buffer->vk.cmd_queue.cmds)
if (first || did_flush || cmd->cmd_link.next == cmds)
continue;
handle_pipeline_barrier(cmd, state);
did_flush = true;
@@ -4683,7 +4683,7 @@ VkResult lvp_execute_cmds(struct lvp_device *device,
state->cso_ss_ptr[s][i] = &state->ss[s][i];
}
/* create a gallium context */
lvp_execute_cmd_buffer(cmd_buffer, state, device->print_cmds);
lvp_execute_cmd_buffer(&cmd_buffer->vk.cmd_queue.cmds, state, device->print_cmds);
state->start_vb = -1;
state->num_vb = 0;