diff --git a/src/freedreno/vulkan/tu_cmd_buffer.cc b/src/freedreno/vulkan/tu_cmd_buffer.cc index 859dfadba25..1b38af506a0 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.cc +++ b/src/freedreno/vulkan/tu_cmd_buffer.cc @@ -1731,6 +1731,7 @@ tu_trace_start_render_pass(struct tu_cmd_buffer *cmd) uint32_t store_cpp = 0; uint32_t clear_cpp = 0; bool has_depth = false; + char ubwc[12]; for (uint32_t i = 0; i < cmd->state.pass->attachment_count; i++) { const struct tu_render_pass_attachment *attachment = &cmd->state.pass->attachments[i]; @@ -1749,6 +1750,23 @@ tu_trace_start_render_pass(struct tu_cmd_buffer *cmd) has_depth |= vk_format_has_depth(attachment->format); } + uint8_t ubwc_len = 0; + const struct tu_subpass *subpass = &cmd->state.pass->subpasses[0]; + for (uint32_t i = 0; i < subpass->color_count; i++) { + uint32_t att = subpass->color_attachments[i].attachment; + ubwc[ubwc_len++] = + cmd->state.attachments[att]->view.ubwc_enabled ? 'y' : 'n'; + } + if (subpass->depth_used) { + ubwc[ubwc_len++] = '|'; + ubwc[ubwc_len++] = + cmd->state.attachments[subpass->depth_stencil_attachment.attachment] + ->view.ubwc_enabled + ? 'y' + : 'n'; + } + ubwc[ubwc_len] = '\0'; + uint32_t max_samples = 0; for (uint32_t i = 0; i < cmd->state.pass->subpass_count; i++) { max_samples = MAX2(max_samples, cmd->state.pass->subpasses[i].samples); @@ -1756,7 +1774,7 @@ tu_trace_start_render_pass(struct tu_cmd_buffer *cmd) trace_start_render_pass(&cmd->trace, &cmd->cs, cmd->state.framebuffer, cmd->state.tiling, max_samples, clear_cpp, - load_cpp, store_cpp, has_depth); + load_cpp, store_cpp, has_depth, ubwc); } static void diff --git a/src/freedreno/vulkan/tu_tracepoints.py b/src/freedreno/vulkan/tu_tracepoints.py index b711ae13072..074db273b59 100644 --- a/src/freedreno/vulkan/tu_tracepoints.py +++ b/src/freedreno/vulkan/tu_tracepoints.py @@ -78,7 +78,8 @@ begin_end_tp('render_pass', Arg(type='uint8_t', var='clearCPP', c_format='%u'), Arg(type='uint8_t', var='loadCPP', c_format='%u'), Arg(type='uint8_t', var='storeCPP', c_format='%u'), - Arg(type='bool', var='hasDepth', c_format='%s', to_prim_type='({} ? "true" : "false")'),], + Arg(type='bool', var='hasDepth', c_format='%s', to_prim_type='({} ? "true" : "false")'), + Arg(type='str', var='ubwc', c_format='%s', length_arg='11', copy_func='strncpy'),], 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='attachment_count', var='fb->attachment_count', c_format='%u'),