From: Eric Anholt Date: Tue, 29 Oct 2013 00:00:23 +0000 (-0700) Subject: i965/fs: Drop our dead push constants before overflowing to pull constants. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=774b787d6b7abe601309cf437b09b592fea0394d;p=mesa.git i965/fs: Drop our dead push constants before overflowing to pull constants. The idea of the original order was that you'd dead code eliminate accesses to push constants. But I've never seen a case of that (nor has shader-db), while we frequently see sparse accesses of large constant arrays that would overflow into pull constants. Cuts pull constant use on csgo, serious sam, planeshift, and the cave: total instructions in shared programs: 1695103 -> 1688795 (-0.37%) instructions in affected programs: 92024 -> 85716 (-6.85%) GAINED: 339 LOST: 0 Reviewed-by: Kenneth Graunke --- diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 76d8a2997ab..a60941a6a98 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -3070,6 +3070,7 @@ fs_visitor::run() split_virtual_grfs(); move_uniform_array_access_to_pull_constants(); + remove_dead_constants(); setup_pull_constants(); bool progress; @@ -3090,8 +3091,6 @@ fs_visitor::run() progress = compute_to_mrf() || progress; } while (progress); - remove_dead_constants(); - schedule_instructions(false); lower_uniform_pull_constant_loads();