diff options
author | Eric Anholt <[email protected]> | 2013-10-28 17:00:23 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2013-10-29 13:43:01 -0700 |
commit | 774b787d6b7abe601309cf437b09b592fea0394d (patch) | |
tree | 788fb51d735d76205f3e991bfa6f65f8feb2c71b | |
parent | 9a9fb94ca99e05195f1faa747397bd26fb8f7cca (diff) |
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 <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs.cpp | 3 |
1 files changed, 1 insertions, 2 deletions
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(); |