It is only used for primary cmd buffers for the moment.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18238>
/* setup initial configuration into command buffer */
if (cmd_buffer->vk.level == VK_COMMAND_BUFFER_LEVEL_PRIMARY) {
+ trace_start_cmd_buffer(&cmd_buffer->trace, &cmd_buffer->cs);
+
switch (cmd_buffer->queue_family_index) {
case TU_QUEUE_GENERAL:
tu6_init_hw(cmd_buffer, &cmd_buffer->cs);
tu_emit_cache_flush(cmd_buffer, &cmd_buffer->cs);
}
+ if (cmd_buffer->vk.level == VK_COMMAND_BUFFER_LEVEL_PRIMARY)
+ trace_end_cmd_buffer(&cmd_buffer->trace, &cmd_buffer->cs, cmd_buffer);
+
tu_cs_end(&cmd_buffer->cs);
tu_cs_end(&cmd_buffer->draw_cs);
tu_cs_end(&cmd_buffer->draw_epilogue_cs);
* Render-stage id's
*/
enum tu_stage_id {
+ CMD_BUFFER_STAGE_ID,
RENDER_PASS_STAGE_ID,
BINNING_STAGE_ID,
GMEM_STAGE_ID,
const char *name;
const char *desc;
} stages[] = {
+ [CMD_BUFFER_STAGE_ID] = { "Command Buffer" },
[RENDER_PASS_STAGE_ID] = { "Render Pass" },
[BINNING_STAGE_ID] = { "Binning", "Perform Visibility pass and determine target bins" },
[GMEM_STAGE_ID] = { "GMEM", "Rendering to GMEM" },
(trace_payload_as_extra_func) &trace_payload_as_extra_end_##event_name); \
}
+CREATE_EVENT_CALLBACK(cmd_buffer, CMD_BUFFER_STAGE_ID)
CREATE_EVENT_CALLBACK(render_pass, RENDER_PASS_STAGE_ID)
CREATE_EVENT_CALLBACK(binning_ib, BINNING_STAGE_ID)
CREATE_EVENT_CALLBACK(draw_ib_gmem, GMEM_STAGE_ID)
from u_trace import utrace_generate
from u_trace import utrace_generate_perfetto_utils
+Header('vk_enum_to_str.h', scope=HeaderScope.SOURCE|HeaderScope.PERFETTO)
Header('vk_format.h')
+Header('tu_cmd_buffer.h', scope=HeaderScope.SOURCE)
Header('tu_device.h', scope=HeaderScope.SOURCE)
# we can't use tu_common.h because it includes ir3 headers which are not
# compatible with C++
+ForwardDecl('struct tu_cmd_buffer')
ForwardDecl('struct tu_device')
ForwardDecl('struct tu_framebuffer')
ForwardDecl('struct tu_tiling_config')
tp_perfetto='tu_end_{0}'.format(name),
tp_print=tp_print)
+begin_end_tp('cmd_buffer',
+ args=[ArgStruct(type='const struct tu_cmd_buffer *', var='cmd')],
+ tp_struct=[Arg(type='VkCommandBufferLevel', name='level', var='cmd->vk.level', c_format='%s', to_prim_type='vk_CommandBufferLevel_to_str({})'),
+ Arg(type='uint8_t', name='render_pass_continue', var='!!(cmd->usage_flags & VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT)', c_format='%u')])
begin_end_tp('render_pass',
args=[ArgStruct(type='const struct tu_framebuffer *', var='fb'),