tu: Do not WAIT_FOR_BR if concurrent binning is disabled

The sync emitted on TU_CMD_FLAG_WAIT_FOR_BR didn't disable CB
when CB was previously disabled for the renderpass, this resulted
in less resources vertex processing resources available for BR.

We can just not emit the sync instead, since next time CB is enabled
it will force the sync.

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38378>
This commit is contained in:
Danylo Piliaiev 2025-11-06 15:38:40 +01:00 committed by Marge Bot
parent f2fb8ad422
commit a7f63a5dbb
2 changed files with 5 additions and 1 deletions

View file

@ -364,7 +364,8 @@ tu_emit_cache_flush(struct tu_cmd_buffer *cmd_buffer)
tu6_emit_flushes<CHIP>(cmd_buffer, cs, cache);
if ((flushes & TU_CMD_FLAG_WAIT_FOR_BR) && CHIP >= A7XX) {
if ((flushes & TU_CMD_FLAG_WAIT_FOR_BR) && CHIP >= A7XX &&
!(cmd_buffer->state.pass && cmd_buffer->state.renderpass_cb_disabled)) {
trace_start_concurrent_binning_barrier(&cmd_buffer->trace, cs, cmd_buffer);
tu_cs_emit_pkt7(cs, CP_THREAD_CONTROL, 1);
@ -2800,6 +2801,7 @@ tu7_emit_concurrent_binning(struct tu_cmd_buffer *cmd, struct tu_cs *cs,
tu_cs_emit(cs, CP_THREAD_CONTROL_0_THREAD(CP_SET_THREAD_BR) |
CP_THREAD_CONTROL_0_CONCURRENT_BIN_DISABLE);
tu7_set_pred_bit(cs, TU_PREDICATE_CB_ENABLED, false);
cmd->state.renderpass_cb_disabled = true;
return false;
}
tu7_thread_control(cs, CP_SET_THREAD_BOTH);
@ -3900,6 +3902,7 @@ static void tu_reset_render_pass(struct tu_cmd_buffer *cmd_buffer)
cmd_buffer->state.attachments = NULL;
cmd_buffer->state.clear_values = NULL;
cmd_buffer->state.gmem_layout = TU_GMEM_LAYOUT_COUNT; /* invalid value to prevent looking up gmem offsets */
cmd_buffer->state.renderpass_cb_disabled = false;
memset(&cmd_buffer->state.rp, 0, sizeof(cmd_buffer->state.rp));
/* LRZ is not valid next time we use it */

View file

@ -612,6 +612,7 @@ struct tu_cmd_state
uint32_t total_dispatches;
unsigned tile_render_pass_count;
bool renderpass_cb_disabled;
};
struct tu_vis_stream_patchpoint {