mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-30 05:00:32 +01:00
radv/sqtt: emit userdata in the gang CS when needed
For task shaders. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39178>
This commit is contained in:
parent
4da2e971e6
commit
aee006efcd
3 changed files with 20 additions and 8 deletions
|
|
@ -187,7 +187,7 @@ radv_write_end_general_api_marker(struct radv_cmd_buffer *cmd_buffer, enum rgp_s
|
|||
static void
|
||||
radv_write_event_marker(struct radv_cmd_buffer *cmd_buffer, enum rgp_sqtt_marker_event_type api_type,
|
||||
uint32_t vertex_offset_user_data, uint32_t instance_offset_user_data,
|
||||
uint32_t draw_index_user_data)
|
||||
uint32_t draw_index_user_data, enum radv_sqtt_userdata_flags flags)
|
||||
{
|
||||
struct rgp_sqtt_marker_event marker = {0};
|
||||
|
||||
|
|
@ -208,7 +208,7 @@ radv_write_event_marker(struct radv_cmd_buffer *cmd_buffer, enum rgp_sqtt_marker
|
|||
marker.instance_offset_reg_idx = instance_offset_user_data;
|
||||
marker.draw_index_reg_idx = draw_index_user_data;
|
||||
|
||||
radv_emit_sqtt_userdata(cmd_buffer, &marker, sizeof(marker) / 4, RADV_SQTT_USERDATA_MAIN_CS);
|
||||
radv_emit_sqtt_userdata(cmd_buffer, &marker, sizeof(marker) / 4, flags);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -339,14 +339,15 @@ radv_gfx12_write_draw_marker(struct radv_cmd_buffer *cmd_buffer, const struct ra
|
|||
}
|
||||
|
||||
void
|
||||
radv_describe_draw(struct radv_cmd_buffer *cmd_buffer, const struct radv_draw_info *draw_info)
|
||||
radv_describe_draw(struct radv_cmd_buffer *cmd_buffer, const struct radv_draw_info *draw_info, bool use_gang_cs)
|
||||
{
|
||||
const struct radv_device *device = radv_cmd_buffer_device(cmd_buffer);
|
||||
const struct radv_physical_device *pdev = radv_device_physical(device);
|
||||
|
||||
assert(device->sqtt.bo);
|
||||
|
||||
radv_write_event_marker(cmd_buffer, cmd_buffer->state.current_event_type, UINT_MAX, UINT_MAX, UINT_MAX);
|
||||
radv_write_event_marker(cmd_buffer, cmd_buffer->state.current_event_type, UINT_MAX, UINT_MAX, UINT_MAX,
|
||||
RADV_SQTT_USERDATA_MAIN_CS | (use_gang_cs ? RADV_SQTT_USERDATA_GANG_CS : 0));
|
||||
|
||||
if (pdev->info.gfx_level >= GFX12)
|
||||
radv_gfx12_write_draw_marker(cmd_buffer, draw_info);
|
||||
|
|
@ -361,7 +362,8 @@ radv_describe_dispatch(struct radv_cmd_buffer *cmd_buffer, const struct radv_dis
|
|||
return;
|
||||
|
||||
if (info->indirect_va) {
|
||||
radv_write_event_marker(cmd_buffer, cmd_buffer->state.current_event_type, UINT_MAX, UINT_MAX, UINT_MAX);
|
||||
radv_write_event_marker(cmd_buffer, cmd_buffer->state.current_event_type, UINT_MAX, UINT_MAX, UINT_MAX,
|
||||
RADV_SQTT_USERDATA_MAIN_CS);
|
||||
} else {
|
||||
radv_write_event_with_dims_marker(cmd_buffer, cmd_buffer->state.current_event_type, info->blocks[0],
|
||||
info->blocks[1], info->blocks[2]);
|
||||
|
|
@ -544,6 +546,16 @@ radv_describe_pipeline_bind(struct radv_cmd_buffer *cmd_buffer, VkPipelineBindPo
|
|||
marker.api_pso_hash[1] = pipeline->pipeline_hash >> 32;
|
||||
|
||||
radv_emit_sqtt_userdata(cmd_buffer, &marker, sizeof(marker) / 4, RADV_SQTT_USERDATA_MAIN_CS);
|
||||
|
||||
if (pipeline->type == RADV_PIPELINE_GRAPHICS) {
|
||||
const struct radv_graphics_pipeline *graphics_pipeline = radv_pipeline_to_graphics(pipeline);
|
||||
|
||||
if (radv_pipeline_has_stage(graphics_pipeline, MESA_SHADER_TASK)) {
|
||||
marker.bind_point = VK_PIPELINE_BIND_POINT_COMPUTE;
|
||||
|
||||
radv_emit_sqtt_userdata(cmd_buffer, &marker, sizeof(marker) / 4, RADV_SQTT_USERDATA_GANG_CS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Queue events */
|
||||
|
|
|
|||
|
|
@ -12817,7 +12817,7 @@ radv_before_draw(struct radv_cmd_buffer *cmd_buffer, const struct radv_draw_info
|
|||
}
|
||||
|
||||
if (device->sqtt.bo && !dgc)
|
||||
radv_describe_draw(cmd_buffer, info);
|
||||
radv_describe_draw(cmd_buffer, info, false);
|
||||
if (likely(!info->indirect_va)) {
|
||||
struct radv_cmd_state *state = &cmd_buffer->state;
|
||||
assert(state->vtx_base_sgpr);
|
||||
|
|
@ -12904,7 +12904,7 @@ radv_before_taskmesh_draw(struct radv_cmd_buffer *cmd_buffer, const struct radv_
|
|||
}
|
||||
|
||||
if (device->sqtt.bo && !dgc)
|
||||
radv_describe_draw(cmd_buffer, info);
|
||||
radv_describe_draw(cmd_buffer, info, !!task_shader);
|
||||
if (likely(!info->indirect_va)) {
|
||||
struct radv_cmd_state *state = &cmd_buffer->state;
|
||||
if (unlikely(state->last_num_instances != 1)) {
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ void radv_describe_begin_cmd_buffer(struct radv_cmd_buffer *cmd_buffer);
|
|||
|
||||
void radv_describe_end_cmd_buffer(struct radv_cmd_buffer *cmd_buffer);
|
||||
|
||||
void radv_describe_draw(struct radv_cmd_buffer *cmd_buffer, const struct radv_draw_info *draw_info);
|
||||
void radv_describe_draw(struct radv_cmd_buffer *cmd_buffer, const struct radv_draw_info *draw_info, bool use_gang_cs);
|
||||
|
||||
void radv_describe_dispatch(struct radv_cmd_buffer *cmd_buffer, const struct radv_dispatch_info *info);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue