summaryrefslogtreecommitdiffstats
path: root/m4/ax_gcc_func_attribute.m4
diff options
context:
space:
mode:
authorFrancisco Jerez <[email protected]>2016-08-12 16:13:16 -0700
committerFrancisco Jerez <[email protected]>2016-08-18 20:05:00 -0700
commit7ceb42ccc5f7943fc839ed19e06b9b7be38dacb0 (patch)
tree21e87843de1307bc3310d8b41e65942800c10e10 /m4/ax_gcc_func_attribute.m4
parent4147ca75d5c5423d70232b3712c0772450384ab0 (diff)
i965/sched: Change the scheduling heuristics to favor early program termination.
This uses the unblocked time of the exit assigned to each available node to attempt to unblock exit nodes as early as possible, potentially reducing the runtime of the shader when an exit branch is taken. There is a natural trade-off between terminating the program as early as possible and reducing the worst-case latency of the program as a whole (since this will typically move exit-unblocking nodes closer to its dependencies potentially causing additional stalls of the execution pipeline), but in practice the bandwidth and ALU cycle savings from terminating the program earlier tend to outweigh the slight increase in worst-case program execution latency, so it makes sense to prefer nodes likely to unblock an earlier exit regardless of the latency benefits of other available nodes. I haven't observed any benchmark regressions from this change after testing on VLV, HSW, BDW, BSW and SKL. The FPS of the GfxBench Manhattan benchmark increases by 10%-20% and the FPS of Unigine Valley improves by roughly 5% depending on the platform and settings. The change to the register pressure-sensitive heuristic is rather conservative and gives precedence to the existing heuristic in order to avoid increasing register pressure and causing spill count and SIMD width regressions in shader-db. It may make sense to revisit this with additional performance data. Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'm4/ax_gcc_func_attribute.m4')
0 files changed, 0 insertions, 0 deletions