broadcom/compiler: allow color TLB writes in last instruction

Only Z writes are disallowed.

total instructions in shared programs: 11578449 -> 11577369 (<.01%)
instructions in affected programs: 38132 -> 37052 (-2.83%)
helped: 1080
HURT: 0
Instructions are helped.

total max-temps in shared programs: 2334416 -> 2334395 (<.01%)
max-temps in affected programs: 218 -> 197 (-9.63%)
helped: 21
HURT: 0
Max-temps are helped.

total inst-and-stalls in shared programs: 11607890 -> 11606810 (<.01%)
inst-and-stalls in affected programs: 38265 -> 37185 (-2.82%)
helped: 1080
HURT: 0
Inst-and-stalls are helped.

total nops in shared programs: 338316 -> 337236 (-0.32%)
nops in affected programs: 2625 -> 1545 (-41.14%)
helped: 1080
HURT: 0
Nops are helped.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13964>
This commit is contained in:
Iago Toral Quiroga
2021-11-25 11:59:48 +01:00
committed by Marge Bot
parent f533d7a446
commit 6923dd687c
3 changed files with 5 additions and 4 deletions

View File

@@ -1757,6 +1757,7 @@ emit_frag_end(struct v3d_compile *c)
inst->uniform = vir_get_uniform_index(c, QUNIFORM_CONSTANT,
tlb_specifier |
0xffffff00);
inst->is_tlb_z_write = true;
}
/* XXX: Performance improvement: Merge Z write and color writes TLB

View File

@@ -1503,10 +1503,7 @@ qpu_inst_valid_in_thrend_slot(struct v3d_compile *c,
{
const struct v3d_qpu_instr *inst = &qinst->qpu;
/* Only TLB Z writes are prohibited in the last slot, but we don't
* have those flagged so prohibit all TLB ops for now.
*/
if (slot == 2 && qpu_inst_is_tlb(inst))
if (slot == 2 && qinst->is_tlb_z_write)
return false;
if (slot > 0 && qinst->uniform != ~0)

View File

@@ -169,6 +169,9 @@ struct qinst {
* otherwise.
*/
int uniform;
/* If this is a a TLB Z write */
bool is_tlb_z_write;
};
enum quniform_contents {