gallium: add drawid_offset to draw_mesh_tasks interface
this matches the other draw interfaces Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29462>
This commit is contained in:
committed by
Marge Bot
parent
761d79ec3e
commit
27cd4b061c
@@ -145,6 +145,7 @@ trace_context_draw_vbo(struct pipe_context *_pipe,
|
||||
|
||||
static void
|
||||
trace_context_draw_mesh_tasks(struct pipe_context *_pipe,
|
||||
unsigned drawid_offset,
|
||||
const struct pipe_grid_info *info)
|
||||
{
|
||||
struct trace_context *tr_ctx = trace_context(_pipe);
|
||||
@@ -153,11 +154,12 @@ trace_context_draw_mesh_tasks(struct pipe_context *_pipe,
|
||||
trace_dump_call_begin("pipe_context", "draw_mesh_tasks");
|
||||
|
||||
trace_dump_arg(ptr, pipe);
|
||||
trace_dump_arg(uint, drawid_offset);
|
||||
trace_dump_arg(grid_info, info);
|
||||
|
||||
trace_dump_trace_flush();
|
||||
|
||||
pipe->draw_mesh_tasks(pipe, info);
|
||||
pipe->draw_mesh_tasks(pipe, drawid_offset, info);
|
||||
|
||||
trace_dump_call_end();
|
||||
}
|
||||
|
||||
@@ -2059,6 +2059,7 @@ lp_mesh_call_draw(struct llvmpipe_context *lp,
|
||||
|
||||
static void
|
||||
llvmpipe_draw_mesh_tasks(struct pipe_context *pipe,
|
||||
unsigned drawid_offset,
|
||||
const struct pipe_grid_info *info)
|
||||
{
|
||||
struct llvmpipe_context *lp = llvmpipe_context(pipe);
|
||||
@@ -2142,7 +2143,7 @@ llvmpipe_draw_mesh_tasks(struct pipe_context *pipe,
|
||||
job_info.payload = payload;
|
||||
job_info.payload_stride = payload_stride;
|
||||
job_info.work_dim = info->work_dim;
|
||||
job_info.draw_id = dr;
|
||||
job_info.draw_id = dr + drawid_offset;
|
||||
job_info.req_local_mem = lp->tss->req_local_mem + info->variable_shared_mem;
|
||||
job_info.current = &lp->task_ctx->cs.current;
|
||||
|
||||
@@ -2176,7 +2177,7 @@ llvmpipe_draw_mesh_tasks(struct pipe_context *pipe,
|
||||
job_info.req_local_mem = lp->mhs->req_local_mem + info->variable_shared_mem;
|
||||
job_info.current = &lp->mesh_ctx->cs.current;
|
||||
job_info.payload_stride = 0;
|
||||
job_info.draw_id = dr;
|
||||
job_info.draw_id = dr + drawid_offset;
|
||||
job_info.io_stride = task_out_size;
|
||||
|
||||
uint32_t job_strides[3] = { job_info.grid_size[0], job_info.grid_size[1], job_info.grid_size[2] };
|
||||
|
||||
@@ -3874,7 +3874,7 @@ static void handle_draw_mesh_tasks(struct vk_cmd_queue_entry *cmd,
|
||||
state->dispatch_info.grid_base[2] = 0;
|
||||
state->dispatch_info.draw_count = 1;
|
||||
state->dispatch_info.indirect = NULL;
|
||||
state->pctx->draw_mesh_tasks(state->pctx, &state->dispatch_info);
|
||||
state->pctx->draw_mesh_tasks(state->pctx, 0, &state->dispatch_info);
|
||||
}
|
||||
|
||||
static void handle_draw_mesh_tasks_indirect(struct vk_cmd_queue_entry *cmd,
|
||||
@@ -3884,7 +3884,7 @@ static void handle_draw_mesh_tasks_indirect(struct vk_cmd_queue_entry *cmd,
|
||||
state->dispatch_info.indirect_offset = cmd->u.draw_mesh_tasks_indirect_ext.offset;
|
||||
state->dispatch_info.indirect_stride = cmd->u.draw_mesh_tasks_indirect_ext.stride;
|
||||
state->dispatch_info.draw_count = cmd->u.draw_mesh_tasks_indirect_ext.draw_count;
|
||||
state->pctx->draw_mesh_tasks(state->pctx, &state->dispatch_info);
|
||||
state->pctx->draw_mesh_tasks(state->pctx, 0, &state->dispatch_info);
|
||||
}
|
||||
|
||||
static void handle_draw_mesh_tasks_indirect_count(struct vk_cmd_queue_entry *cmd,
|
||||
@@ -3896,7 +3896,7 @@ static void handle_draw_mesh_tasks_indirect_count(struct vk_cmd_queue_entry *cmd
|
||||
state->dispatch_info.draw_count = cmd->u.draw_mesh_tasks_indirect_count_ext.max_draw_count;
|
||||
state->dispatch_info.indirect_draw_count_offset = cmd->u.draw_mesh_tasks_indirect_count_ext.count_buffer_offset;
|
||||
state->dispatch_info.indirect_draw_count = lvp_buffer_from_handle(cmd->u.draw_mesh_tasks_indirect_count_ext.count_buffer)->bo;
|
||||
state->pctx->draw_mesh_tasks(state->pctx, &state->dispatch_info);
|
||||
state->pctx->draw_mesh_tasks(state->pctx, 0, &state->dispatch_info);
|
||||
}
|
||||
|
||||
static VkBuffer
|
||||
|
||||
@@ -1023,6 +1023,7 @@ struct pipe_context {
|
||||
const struct pipe_grid_info *info);
|
||||
|
||||
void (*draw_mesh_tasks)(struct pipe_context *context,
|
||||
unsigned drawid_offset,
|
||||
const struct pipe_grid_info *info);
|
||||
/*@}*/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user