mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 11:40:10 +01:00
tu: Add a reason for concurrent binning disablement to RP tracepoint
Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38258>
This commit is contained in:
parent
6b0df4b01a
commit
9c4d2a1f51
3 changed files with 24 additions and 5 deletions
|
|
@ -2702,7 +2702,8 @@ tu_trace_start_render_pass(struct tu_cmd_buffer *cmd)
|
||||||
|
|
||||||
trace_start_render_pass(&cmd->trace, &cmd->cs, cmd, cmd->state.framebuffer,
|
trace_start_render_pass(&cmd->trace, &cmd->cs, cmd, cmd->state.framebuffer,
|
||||||
cmd->state.tiling, max_samples, clear_cpp,
|
cmd->state.tiling, max_samples, clear_cpp,
|
||||||
load_cpp, store_cpp, has_depth, ubwc);
|
load_cpp, store_cpp, has_depth, ubwc,
|
||||||
|
cmd->state.rp.cb_disable_reason ? cmd->state.rp.cb_disable_reason : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
template <chip CHIP>
|
template <chip CHIP>
|
||||||
|
|
@ -2767,16 +2768,29 @@ tu_emit_renderpass_begin(struct tu_cmd_buffer *cmd)
|
||||||
cmd->state.fdm_enabled = cmd->state.pass->has_fdm;
|
cmd->state.fdm_enabled = cmd->state.pass->has_fdm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool
|
||||||
|
tu7_cb_disable_reason(bool disable_cb,
|
||||||
|
struct tu_cmd_buffer *cmd,
|
||||||
|
const char *reason)
|
||||||
|
{
|
||||||
|
if (disable_cb && !cmd->state.rp.cb_disable_reason) {
|
||||||
|
cmd->state.rp.cb_disable_reason = reason;
|
||||||
|
}
|
||||||
|
return disable_cb;
|
||||||
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
tu7_emit_concurrent_binning(struct tu_cmd_buffer *cmd, struct tu_cs *cs,
|
tu7_emit_concurrent_binning(struct tu_cmd_buffer *cmd, struct tu_cs *cs,
|
||||||
bool disable_cb)
|
bool disable_cb)
|
||||||
{
|
{
|
||||||
if (disable_cb ||
|
if (tu7_cb_disable_reason(disable_cb, cmd, "disable_cb") ||
|
||||||
/* LRZ can only be cleared via fast clear in BV. Disable CB if we can't
|
/* LRZ can only be cleared via fast clear in BV. Disable CB if we can't
|
||||||
* use it.
|
* use it.
|
||||||
*/
|
*/
|
||||||
!cmd->state.lrz.fast_clear ||
|
tu7_cb_disable_reason(!cmd->state.lrz.fast_clear, cmd,
|
||||||
TU_DEBUG(NO_CONCURRENT_BINNING)) {
|
"LRZ fast clear disabled") ||
|
||||||
|
tu7_cb_disable_reason(TU_DEBUG(NO_CONCURRENT_BINNING), cmd,
|
||||||
|
"TU_DEBUG(NO_CONCURRENT_BINNING)")) {
|
||||||
tu_cs_emit_pkt7(cs, CP_THREAD_CONTROL, 1);
|
tu_cs_emit_pkt7(cs, CP_THREAD_CONTROL, 1);
|
||||||
tu_cs_emit(cs, CP_THREAD_CONTROL_0_THREAD(CP_SET_THREAD_BR) |
|
tu_cs_emit(cs, CP_THREAD_CONTROL_0_THREAD(CP_SET_THREAD_BR) |
|
||||||
CP_THREAD_CONTROL_0_CONCURRENT_BIN_DISABLE);
|
CP_THREAD_CONTROL_0_CONCURRENT_BIN_DISABLE);
|
||||||
|
|
@ -2972,6 +2986,9 @@ tu7_emit_concurrent_binning_gmem(struct tu_cmd_buffer *cmd, struct tu_cs *cs,
|
||||||
cmd->state.rp.has_vtx_stats_query_in_rp ||
|
cmd->state.rp.has_vtx_stats_query_in_rp ||
|
||||||
cmd->state.prim_counters_running > 0;
|
cmd->state.prim_counters_running > 0;
|
||||||
|
|
||||||
|
tu7_cb_disable_reason(disable_cb, cmd,
|
||||||
|
"xfb/prim-gen/prim-counters/vtx-stats query is running");
|
||||||
|
tu7_cb_disable_reason(!use_hw_binning, cmd, "hw binning disabled");
|
||||||
|
|
||||||
if (!tu7_emit_concurrent_binning(cmd, cs, disable_cb || !use_hw_binning))
|
if (!tu7_emit_concurrent_binning(cmd, cs, disable_cb || !use_hw_binning))
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -345,6 +345,7 @@ struct tu_render_pass_state
|
||||||
uint32_t lrz_write_disabled_at_draw;
|
uint32_t lrz_write_disabled_at_draw;
|
||||||
|
|
||||||
const char *gmem_disable_reason;
|
const char *gmem_disable_reason;
|
||||||
|
const char *cb_disable_reason;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* These are the states of the suspend/resume state machine. In addition to
|
/* These are the states of the suspend/resume state machine. In addition to
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,8 @@ begin_end_tp('render_pass',
|
||||||
Arg(type='uint8_t', var='loadCPP', c_format='%u'),
|
Arg(type='uint8_t', var='loadCPP', c_format='%u'),
|
||||||
Arg(type='uint8_t', var='storeCPP', 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'),],
|
Arg(type='str', var='ubwc', c_format='%s', length_arg='11', copy_func='strncpy'),
|
||||||
|
Arg(type='const char *', var='cbDisableReason', c_format='%s'),],
|
||||||
tp_struct=[Arg(type='uint16_t', name='width', var='fb->width', c_format='%u'),
|
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='uint16_t', name='height', var='fb->height', c_format='%u'),
|
||||||
Arg(type='uint8_t', name='attachment_count', var='fb->attachment_count', c_format='%u'),
|
Arg(type='uint8_t', name='attachment_count', var='fb->attachment_count', c_format='%u'),
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue