brw: account for disabled SEND fused message in cycle computation

This is an alternative Curro proposed to counting the number of
serialized messages.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Alyssa Anne Rosenzweig <alyssa.rosenzweig@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37816>
This commit is contained in:
Lionel Landwerlin 2025-10-10 16:37:16 +03:00 committed by Marge Bot
parent 3b2f7ed918
commit 14683a045b

View file

@ -137,7 +137,7 @@ namespace {
td(inst->dst.type), sd(DIV_ROUND_UP(inst->size_written, REG_SIZE)),
tx(get_exec_type(inst)), sx(0), ss(0),
sc(has_bank_conflict(isa, inst) ? sd : 0),
desc(0), sfid(0)
desc(0), sfid(0), fused_send_disable(false)
{
const brw_send_inst *send = inst->as_send();
if (send) {
@ -157,6 +157,7 @@ namespace {
ss += DIV_ROUND_UP(inst->size_read(devinfo, i), REG_SIZE);
}
}
fused_send_disable = send->fused_eu_disable;
} else {
for (unsigned i = 0; i < inst->sources; i++)
ss = MAX2(ss, DIV_ROUND_UP(inst->size_read(devinfo, i), REG_SIZE));
@ -201,6 +202,8 @@ namespace {
uint8_t sfid;
/** Repeat count for DPAS instructions. */
uint8_t rcount;
/** Whether SEND message fusion is disabled (Gfx12.x only) */
bool fused_send_disable;
};
/**
@ -274,6 +277,9 @@ namespace {
int ls_1, int ld_1, int la_1, int lf_1,
int l_ss, int l_sd)
{
/* We fused SEND are disabled double those parameters */
ls_1 *= info.fused_send_disable ? 2 : 1;
l_ss *= info.fused_send_disable ? 2 : 1;
return perf_desc(u, df_1 + df_sd * int(info.sd) + df_sc * int(info.sc),
db_1 + db_sx * int(info.sx),
ls_1 + l_ss * int(info.ss),