mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 13:58:04 +02:00
gallium/ddebug: support mesh shader
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36976>
This commit is contained in:
parent
e1bd743c3a
commit
3bc4004ca9
3 changed files with 53 additions and 4 deletions
|
|
@ -312,6 +312,8 @@ DD_SHADER(VERTEX, vs)
|
|||
DD_SHADER(GEOMETRY, gs)
|
||||
DD_SHADER(TESS_CTRL, tcs)
|
||||
DD_SHADER(TESS_EVAL, tes)
|
||||
DD_SHADER(TASK, ts)
|
||||
DD_SHADER(MESH, ms)
|
||||
|
||||
static void * \
|
||||
dd_context_create_compute_state(struct pipe_context *_pipe,
|
||||
|
|
@ -884,6 +886,12 @@ dd_context_create(struct dd_screen *dscreen, struct pipe_context *pipe)
|
|||
CTX_INIT(create_compute_state);
|
||||
CTX_INIT(bind_compute_state);
|
||||
CTX_INIT(delete_compute_state);
|
||||
CTX_INIT(create_ts_state);
|
||||
CTX_INIT(bind_ts_state);
|
||||
CTX_INIT(delete_ts_state);
|
||||
CTX_INIT(create_ms_state);
|
||||
CTX_INIT(bind_ms_state);
|
||||
CTX_INIT(delete_ms_state);
|
||||
CTX_INIT(create_vertex_elements_state);
|
||||
CTX_INIT(bind_vertex_elements_state);
|
||||
CTX_INIT(delete_vertex_elements_state);
|
||||
|
|
|
|||
|
|
@ -405,10 +405,7 @@ dd_dump_draw_vbo(struct dd_draw_state *dstate, struct pipe_draw_info *info,
|
|||
}
|
||||
|
||||
fprintf(f, "\n");
|
||||
for (sh = 0; sh < MESA_SHADER_MESH_STAGES; sh++) {
|
||||
if (sh == MESA_SHADER_COMPUTE)
|
||||
continue;
|
||||
|
||||
for (sh = 0; sh < MESA_SHADER_COMPUTE; sh++) {
|
||||
dd_dump_shader(dstate, sh, f);
|
||||
}
|
||||
|
||||
|
|
@ -650,6 +647,20 @@ dd_dump_driver_state(struct dd_context *dctx, FILE *f, unsigned flags)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dd_dump_draw_mesh_tasks(struct dd_draw_state *dstate, struct pipe_grid_info *info,
|
||||
FILE *f)
|
||||
{
|
||||
fprintf(f, "%s:\n", __func__+8);
|
||||
DUMP(grid_info, info);
|
||||
fprintf(f, "\n");
|
||||
|
||||
dd_dump_shader(dstate, MESA_SHADER_TASK, f);
|
||||
dd_dump_shader(dstate, MESA_SHADER_MESH, f);
|
||||
dd_dump_shader(dstate, MESA_SHADER_FRAGMENT, f);
|
||||
fprintf(f, "\n");
|
||||
}
|
||||
|
||||
static void
|
||||
dd_dump_call(FILE *f, struct dd_draw_state *state, struct dd_call *call)
|
||||
{
|
||||
|
|
@ -716,6 +727,9 @@ dd_dump_call(FILE *f, struct dd_draw_state *state, struct dd_call *call)
|
|||
case CALL_TEXTURE_SUBDATA:
|
||||
dd_dump_texture_subdata(&call->info.texture_subdata, f);
|
||||
break;
|
||||
case CALL_DRAW_MESH_TASKS:
|
||||
dd_dump_draw_mesh_tasks(state, &call->info.launch_grid, f);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -797,6 +811,10 @@ dd_unreference_copy_of_call(struct dd_call *dst)
|
|||
case CALL_TEXTURE_SUBDATA:
|
||||
pipe_resource_reference(&dst->info.texture_subdata.resource, NULL);
|
||||
break;
|
||||
case CALL_DRAW_MESH_TASKS:
|
||||
pipe_resource_reference(&dst->info.launch_grid.indirect, NULL);
|
||||
pipe_resource_reference(&dst->info.launch_grid.indirect_draw_count, NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1892,6 +1910,27 @@ dd_context_texture_subdata(struct pipe_context *_pipe,
|
|||
dd_after_draw(dctx, record);
|
||||
}
|
||||
|
||||
static void
|
||||
dd_context_draw_mesh_tasks(struct pipe_context *_pipe,
|
||||
const struct pipe_grid_info *info)
|
||||
{
|
||||
struct dd_context *dctx = dd_context(_pipe);
|
||||
struct pipe_context *pipe = dctx->pipe;
|
||||
struct dd_draw_record *record = dd_create_record(dctx);
|
||||
|
||||
record->call.type = CALL_DRAW_MESH_TASKS;
|
||||
record->call.info.launch_grid = *info;
|
||||
record->call.info.launch_grid.indirect = NULL;
|
||||
pipe_resource_reference(&record->call.info.launch_grid.indirect, info->indirect);
|
||||
record->call.info.launch_grid.indirect_draw_count = NULL;
|
||||
pipe_resource_reference(&record->call.info.launch_grid.indirect_draw_count,
|
||||
info->indirect_draw_count);
|
||||
|
||||
dd_before_draw(dctx, record);
|
||||
pipe->draw_mesh_tasks(pipe, info);
|
||||
dd_after_draw(dctx, record);
|
||||
}
|
||||
|
||||
void
|
||||
dd_init_draw_functions(struct dd_context *dctx)
|
||||
{
|
||||
|
|
@ -1917,4 +1956,5 @@ dd_init_draw_functions(struct dd_context *dctx)
|
|||
CTX_INIT(buffer_subdata);
|
||||
CTX_INIT(texture_subdata);
|
||||
CTX_INIT(draw_vertex_state);
|
||||
CTX_INIT(draw_mesh_tasks);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,6 +79,7 @@ enum call_type
|
|||
CALL_TRANSFER_UNMAP,
|
||||
CALL_BUFFER_SUBDATA,
|
||||
CALL_TEXTURE_SUBDATA,
|
||||
CALL_DRAW_MESH_TASKS,
|
||||
};
|
||||
|
||||
struct call_resource_copy_region
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue