mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 03:08:05 +02:00
turnip: add cmd_buffer tracepoint
It is only used for primary cmd buffers for the moment. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18238>
This commit is contained in:
parent
4c03e40991
commit
4b37439764
3 changed files with 15 additions and 0 deletions
|
|
@ -1822,6 +1822,8 @@ tu_BeginCommandBuffer(VkCommandBuffer commandBuffer,
|
|||
|
||||
/* 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);
|
||||
|
|
@ -2512,6 +2514,9 @@ tu_EndCommandBuffer(VkCommandBuffer commandBuffer)
|
|||
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);
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ enum {
|
|||
* Render-stage id's
|
||||
*/
|
||||
enum tu_stage_id {
|
||||
CMD_BUFFER_STAGE_ID,
|
||||
RENDER_PASS_STAGE_ID,
|
||||
BINNING_STAGE_ID,
|
||||
GMEM_STAGE_ID,
|
||||
|
|
@ -62,6 +63,7 @@ static const struct {
|
|||
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" },
|
||||
|
|
@ -419,6 +421,7 @@ tu_end_##event_name(struct tu_device *dev, uint64_t ts_ns, \
|
|||
(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)
|
||||
|
|
|
|||
|
|
@ -24,11 +24,14 @@ from u_trace import TracepointArgStruct as ArgStruct
|
|||
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')
|
||||
|
|
@ -56,6 +59,10 @@ def begin_end_tp(name, args=[], tp_struct=None, tp_print=None,
|
|||
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'),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue