panvk: define more utrace tracepoints
Define tracepoints for these higl-level api calls - meta - render - dispatch and dispatch_indirect - barrier and these low-level cs cmds - sync_wait Signed-off-by: Chia-I Wu <olvaffe@gmail.com> Reviewed-by: Christoph Pillmayer <christoph.pillmayer@arm.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32693>
This commit is contained in:
@@ -24,8 +24,11 @@ from u_trace import TracepointArgStruct as ArgStruct # noqa: E402
|
||||
from u_trace import utrace_generate, utrace_generate_perfetto_utils # noqa: E402
|
||||
|
||||
Header('vulkan/vulkan_core.h', scope=HeaderScope.HEADER)
|
||||
ForwardDecl('struct pan_fb_info')
|
||||
ForwardDecl('struct panvk_device')
|
||||
|
||||
Header('pan_desc.h', scope=HeaderScope.SOURCE)
|
||||
|
||||
|
||||
def begin_end_tp(name, args=[], tp_struct=None):
|
||||
Tracepoint(
|
||||
@@ -42,6 +45,8 @@ def begin_end_tp(name, args=[], tp_struct=None):
|
||||
|
||||
|
||||
def define_tracepoints():
|
||||
# high-level tracepoints for API calls
|
||||
|
||||
begin_end_tp(
|
||||
'cmdbuf',
|
||||
args=[
|
||||
@@ -53,6 +58,172 @@ def define_tracepoints():
|
||||
],
|
||||
)
|
||||
|
||||
begin_end_tp('meta')
|
||||
|
||||
begin_end_tp(
|
||||
'render',
|
||||
args=[
|
||||
Arg(
|
||||
type='VkRenderingFlags',
|
||||
var='flags',
|
||||
c_format='0x%x',
|
||||
),
|
||||
ArgStruct(type='const struct pan_fb_info *', var='fb'),
|
||||
],
|
||||
tp_struct=[
|
||||
Arg(
|
||||
type='uint16_t',
|
||||
name='width',
|
||||
var='fb->width',
|
||||
c_format='%u',
|
||||
),
|
||||
Arg(
|
||||
type='uint16_t',
|
||||
name='height',
|
||||
var='fb->height',
|
||||
c_format='%u',
|
||||
),
|
||||
Arg(
|
||||
type='uint8_t',
|
||||
name='nr_samples',
|
||||
var='fb->nr_samples',
|
||||
c_format='%u',
|
||||
),
|
||||
Arg(
|
||||
type='uint8_t',
|
||||
name='rt_count',
|
||||
var='fb->rt_count',
|
||||
c_format='%u',
|
||||
),
|
||||
Arg(
|
||||
type='uint16_t',
|
||||
name='rt0_format',
|
||||
var='fb->rts[0].view ? fb->rts[0].view->format : PIPE_FORMAT_NONE',
|
||||
c_format='%s',
|
||||
to_prim_type='util_format_description((enum pipe_format){})->name',
|
||||
),
|
||||
Arg(
|
||||
type='uint16_t',
|
||||
name='zs_format',
|
||||
var='fb->zs.view.zs ? fb->zs.view.zs->format : PIPE_FORMAT_NONE',
|
||||
c_format='%s',
|
||||
to_prim_type='util_format_description((enum pipe_format){})->name',
|
||||
),
|
||||
Arg(
|
||||
type='uint16_t',
|
||||
name='s_format',
|
||||
var='fb->zs.view.s ? fb->zs.view.s->format : PIPE_FORMAT_NONE',
|
||||
c_format='%s',
|
||||
to_prim_type='util_format_description((enum pipe_format){})->name',
|
||||
),
|
||||
Arg(
|
||||
type='uint32_t',
|
||||
name='tile_size',
|
||||
var='fb->tile_size',
|
||||
c_format='%u',
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
begin_end_tp(
|
||||
'dispatch',
|
||||
args=[
|
||||
Arg(
|
||||
type='uint16_t',
|
||||
var='base_group_x',
|
||||
c_format='%u',
|
||||
),
|
||||
Arg(
|
||||
type='uint16_t',
|
||||
var='base_group_y',
|
||||
c_format='%u',
|
||||
),
|
||||
Arg(
|
||||
type='uint16_t',
|
||||
var='base_group_z',
|
||||
c_format='%u',
|
||||
),
|
||||
Arg(
|
||||
type='uint16_t',
|
||||
var='group_count_x',
|
||||
c_format='%u',
|
||||
),
|
||||
Arg(
|
||||
type='uint16_t',
|
||||
var='group_count_y',
|
||||
c_format='%u',
|
||||
),
|
||||
Arg(
|
||||
type='uint16_t',
|
||||
var='group_count_z',
|
||||
c_format='%u',
|
||||
),
|
||||
Arg(
|
||||
type='uint16_t',
|
||||
var='group_size_x',
|
||||
c_format='%u',
|
||||
),
|
||||
Arg(
|
||||
type='uint16_t',
|
||||
var='group_size_y',
|
||||
c_format='%u',
|
||||
),
|
||||
Arg(
|
||||
type='uint16_t',
|
||||
var='group_size_z',
|
||||
c_format='%u',
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
begin_end_tp(
|
||||
'dispatch_indirect',
|
||||
args=[
|
||||
ArgStruct(
|
||||
type='VkDispatchIndirectCommand',
|
||||
var='group_count',
|
||||
is_indirect=True,
|
||||
c_format='%ux%ux%u',
|
||||
fields=['x', 'y', 'z'],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
begin_end_tp(
|
||||
'barrier',
|
||||
args=[
|
||||
Arg(
|
||||
type='uint8_t',
|
||||
var='sb_wait',
|
||||
c_format='0x%x',
|
||||
),
|
||||
Arg(
|
||||
type='uint8_t',
|
||||
var='sync_wait',
|
||||
c_format='0x%x',
|
||||
),
|
||||
Arg(
|
||||
type='uint8_t',
|
||||
var='l2',
|
||||
c_format='%u',
|
||||
),
|
||||
Arg(
|
||||
type='uint8_t',
|
||||
var='lsc',
|
||||
c_format='%u',
|
||||
),
|
||||
Arg(
|
||||
type='uint8_t',
|
||||
var='other',
|
||||
c_format='%u',
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
# low-level tracepoints for CS commands
|
||||
|
||||
begin_end_tp('sync_wait')
|
||||
|
||||
|
||||
def generate_code():
|
||||
utrace_generate(
|
||||
|
||||
@@ -39,6 +39,11 @@ get_stage_name(enum panvk_utrace_perfetto_stage stage)
|
||||
case PANVK_UTRACE_PERFETTO_STAGE_##x: \
|
||||
return #x
|
||||
CASE(CMDBUF);
|
||||
CASE(META);
|
||||
CASE(RENDER);
|
||||
CASE(DISPATCH);
|
||||
CASE(BARRIER);
|
||||
CASE(SYNC_WAIT);
|
||||
#undef CASE
|
||||
default:
|
||||
unreachable("bad stage");
|
||||
@@ -239,6 +244,12 @@ panvk_utrace_perfetto_end_event(
|
||||
* (traceq) for processing. These callbacks are called from traceq.
|
||||
*/
|
||||
PANVK_UTRACE_PERFETTO_PROCESS_EVENT(cmdbuf, CMDBUF)
|
||||
PANVK_UTRACE_PERFETTO_PROCESS_EVENT(meta, META)
|
||||
PANVK_UTRACE_PERFETTO_PROCESS_EVENT(render, RENDER)
|
||||
PANVK_UTRACE_PERFETTO_PROCESS_EVENT(dispatch, DISPATCH)
|
||||
PANVK_UTRACE_PERFETTO_PROCESS_EVENT(dispatch_indirect, DISPATCH)
|
||||
PANVK_UTRACE_PERFETTO_PROCESS_EVENT(barrier, BARRIER)
|
||||
PANVK_UTRACE_PERFETTO_PROCESS_EVENT(sync_wait, SYNC_WAIT)
|
||||
|
||||
static uint32_t
|
||||
get_gpu_clock_id(void)
|
||||
|
||||
@@ -20,6 +20,12 @@ struct panvk_device;
|
||||
|
||||
enum panvk_utrace_perfetto_stage {
|
||||
PANVK_UTRACE_PERFETTO_STAGE_CMDBUF,
|
||||
PANVK_UTRACE_PERFETTO_STAGE_META,
|
||||
PANVK_UTRACE_PERFETTO_STAGE_RENDER,
|
||||
PANVK_UTRACE_PERFETTO_STAGE_DISPATCH,
|
||||
PANVK_UTRACE_PERFETTO_STAGE_BARRIER,
|
||||
PANVK_UTRACE_PERFETTO_STAGE_SYNC_WAIT,
|
||||
|
||||
PANVK_UTRACE_PERFETTO_STAGE_COUNT,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user