Skip to content
  • Alyssa Rosenzweig's avatar
    pan/midgard: Add uniform/work heuristic · 57102500
    Alyssa Rosenzweig authored
    
    
    Uniform/work registers are partitioned on a shader-by-shader basis as
    determined by the compiler. We add a simple heuristic here running
    before scheduling that prioritizes mitigating spilling at all costs.
    
    A more sophisticated heuristic should run *after* scheduling, doing a
    dry run of the register allocator itself to determine spilling. Fitting
    this into our current scheduling model is difficult, so while this
    heuristic does hurt some shaders, overall the results are acceptable:
    
    total instructions in shared programs: 50065 -> 38747 (-22.61%)
    instructions in affected programs: 37187 -> 25869 (-30.44%)
    helped: 59
    HURT: 77
    helped stats (abs) min: 1 max: 757 x̄: 198.46 x̃: 151
    helped stats (rel) min: 0.48% max: 62.89% x̄: 32.95% x̃: 36.27%
    HURT stats (abs)   min: 1 max: 9 x̄: 5.08 x̃: 6
    HURT stats (rel)   min: 0.92% max: 14.29% x̄: 6.71% x̃: 4.60%
    95% mean confidence interval for instructions value: -111.15 -55.29
    95% mean confidence interval for instructions %-change: -14.33% -6.67%
    Instructions are helped.
    
    total bundles in shared programs: 30606 -> 19157 (-37.41%)
    bundles in affected programs: 23907 -> 12458 (-47.89%)
    helped: 58
    HURT: 74
    helped stats (abs) min: 6 max: 757 x̄: 203.09 x̃: 152
    helped stats (rel) min: 5.19% max: 77.00% x̄: 49.38% x̃: 53.79%
    HURT stats (abs)   min: 1 max: 9 x̄: 4.46 x̃: 5
    HURT stats (rel)   min: 1.85% max: 26.32% x̄: 11.70% x̃: 9.57%
    95% mean confidence interval for bundles value: -115.46 -58.01
    95% mean confidence interval for bundles %-change: -20.87% -9.41%
    Bundles are helped.
    
    total quadwords in shared programs: 31305 -> 32027 (2.31%)
    quadwords in affected programs: 20471 -> 21193 (3.53%)
    helped: 0
    HURT: 133
    HURT stats (abs)   min: 1 max: 9 x̄: 5.43 x̃: 5
    HURT stats (rel)   min: 0.76% max: 15.15% x̄: 5.47% x̃: 4.65%
    95% mean confidence interval for quadwords value: 5.00 5.86
    95% mean confidence interval for quadwords %-change: 4.85% 6.08%
    Quadwords are HURT.
    
    total registers in shared programs: 2256 -> 2545 (12.81%)
    registers in affected programs: 708 -> 997 (40.82%)
    helped: 0
    HURT: 95
    HURT stats (abs)   min: 1 max: 8 x̄: 3.04 x̃: 3
    HURT stats (rel)   min: 12.50% max: 100.00% x̄: 39.41% x̃: 37.50%
    95% mean confidence interval for registers value: 2.64 3.45
    95% mean confidence interval for registers %-change: 34.62% 44.19%
    Registers are HURT.
    
    total threads in shared programs: 1776 -> 1709 (-3.77%)
    threads in affected programs: 134 -> 67 (-50.00%)
    helped: 0
    HURT: 67
    HURT stats (abs)   min: 1 max: 1 x̄: 1.00 x̃: 1
    HURT stats (rel)   min: 50.00% max: 50.00% x̄: 50.00% x̃: 50.00%
    95% mean confidence interval for threads value: -1.00 -1.00
    95% mean confidence interval for threads %-change: -50.00% -50.00%
    Threads are HURT.
    
    total spills in shared programs: 3868 -> 2 (-99.95%)
    spills in affected programs: 3868 -> 2 (-99.95%)
    helped: 60
    HURT: 0
    
    total fills in shared programs: 6456 -> 4 (-99.94%)
    fills in affected programs: 6456 -> 4 (-99.94%)
    helped: 60
    HURT: 0
    
    Signed-off-by: default avatarAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
    Tested-by: Marge Bot <mesa/mesa!3150>
    Part-of: <mesa/mesa!3150>
    57102500