broadcom/compiler: increase cost of TMU spills to 10
Our cost was 5 which matches the number of instructions we have to add for a TMU spill (a fill is 4 instructions). Uniform spills on the other hand add an extra instruction for each fill and remove one instruction for the spill itself. These have a cost of 1. Therefore, if we have a single spill+fill, we end up with +9 instructions if it is a TMU spill and +0 instructions with a uniform spill, so making the former only 5 times more costly is probably not a good idea, and this is without even considering the added latency of the TMU accesses. Relevant shader-db changes show this causes as a marginal instruction count increase in a few shaders but better thread counts and lower TMU spilling overall: total instructions in shared programs: 13037315 -> 13040711 (0.03%) instructions in affected programs: 370106 -> 373502 (0.92%) helped: 187 HURT: 321 total threads in shared programs: 415090 -> 415664 (0.14%) threads in affected programs: 574 -> 1148 (100.00%) helped: 287 HURT: 0 total uniforms in shared programs: 3706674 -> 3717266 (0.29%) uniforms in affected programs: 63075 -> 73667 (16.79%) helped: 40 HURT: 395 total max-temps in shared programs: 2176080 -> 2174177 (-0.09%) max-temps in affected programs: 15838 -> 13935 (-12.02%) helped: 316 HURT: 34 total spills in shared programs: 4247 -> 4010 (-5.58%) spills in affected programs: 2599 -> 2362 (-9.12%) helped: 107 HURT: 14 total fills in shared programs: 6121 -> 5820 (-4.92%) fills in affected programs: 3622 -> 3321 (-8.31%) helped: 108 HURT: 13 Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15168>
This commit is contained in:

committed by
Marge Bot

parent
a02dd17cb3
commit
cbb4d0dded
@@ -110,7 +110,7 @@ static int
|
||||
v3d_choose_spill_node(struct v3d_compile *c,
|
||||
struct temp_to_node_map *temp_to_node)
|
||||
{
|
||||
const float tmu_scale = 5;
|
||||
const float tmu_scale = 10;
|
||||
float block_scale = 1.0;
|
||||
float spill_costs[c->num_temps];
|
||||
bool in_tmu_operation = false;
|
||||
|
Reference in New Issue
Block a user