https://bugs.freedesktop.org/show_bug.cgi?id=98336
Vinson Lee vlee@freedesktop.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |bisected CC| |edmondo@eriadon.com, | |maraeo@gmail.com, | |nhaehnle@gmail.com
--- Comment #1 from Vinson Lee vlee@freedesktop.org --- 3ec9975555d1cc5365413ad9062f412904f944a3 is the first bad commit commit 3ec9975555d1cc5365413ad9062f412904f944a3 Author: Marek Olšák marek.olsak@amd.com Date: Tue Oct 18 15:20:22 2016 +0200
radeonsi: eliminate trivial constant VS outputs
These constant value VS PARAM exports: - 0,0,0,0 - 0,0,0,1 - 1,1,1,0 - 1,1,1,1 can be loaded into PS inputs using the DEFAULT_VAL field, and the VS exports can be removed from the IR to save export & parameter memory.
After LLVM optimizations, analyze the IR to see which exports are equal to the ones listed above (or undef) and remove them if they are.
Targeted use cases: - All DX9 eON ports always clear 10 VS outputs to 0.0 even if most of them are unused by PS (such as Witcher 2 below). - VS output arrays with unused elements that the GLSL compiler can't eliminate (such as Batman below).
The shader-db deltas are quite interesting: (not from upstream si-report.py, it won't be upstreamed)
PERCENTAGE DELTAS Shaders PARAM exports (affected only) batman_arkham_origins 589 -67.17 % bioshock-infinite 1769 -0.47 % dirt-showdown 548 -2.68 % dota2 1747 -3.36 % f1-2015 776 -4.94 % left_4_dead_2 1762 -0.07 % metro_2033_redux 2670 -0.43 % portal 474 -0.22 % talos_principle 324 -3.63 % warsow 176 -2.20 % witcher2 1040 -73.78 % ---------------------------------------- All affected 991 -65.37 % ... 9681 -> 3353 ---------------------------------------- Total 26725 -10.82 % ... 58490 -> 52162
v2: treat Undef as both 0 and 1
Reviewed-by: Nicolai Hähnle nicolai.haehnle@amd.com (v1) Tested-by: Edmondo Tommasina edmondo.tommasina@gmail.com (v1)
:040000 040000 88f390ac9053318d6ab558e7e82b9d03f7435711 7bd48a7dfa3843fa64a5c41bbc60d181b44ee15c M src bisect run success