Skip to content

lima/ppir: combine load inputs and rework node duplication

Erico Nunes requested to merge enunes/mesa:lima-ppir-rework-dupl into master

This is a first set of rework patches in the context of #2745 . It addresses mostly the topics of varying, uniform and const duplicating and combining and fixes some related issues on the way. These don't change too much on ppir design yet, just address some relatively straightforward improvements on it.

No piglit and deqp regressions on my tests.

shader-db:

instructions helped:   shader-db/glmark/1-22.shader_test MESA_SHADER_FRAGMENT: 506 -> 505 (-0.20%)
instructions helped:   shader-db/unity/50.shader_test MESA_SHADER_FRAGMENT: 354 -> 353 (-0.28%)
instructions helped:   shader-db/glamor/7.shader_test MESA_SHADER_FRAGMENT: 108 -> 107 (-0.93%)
instructions helped:   shader-db/glamor/85.shader_test MESA_SHADER_FRAGMENT: 161 -> 159 (-1.24%)
instructions helped:   shader-db/unity/64-DeferredPointShadows.shader_test MESA_SHADER_FRAGMENT: 127 -> 125 (-1.57%)
instructions helped:   shader-db/tesseract/151.shader_test MESA_SHADER_FRAGMENT: 59 -> 58 (-1.69%)
instructions helped:   shader-db/unity/60-DeferredSpot.shader_test MESA_SHADER_FRAGMENT: 117 -> 115 (-1.71%)
instructions helped:   shader-db/unity/57-DeferredDirectional.shader_test MESA_SHADER_FRAGMENT: 112 -> 110 (-1.79%)
instructions helped:   shader-db/glamor/82.shader_test MESA_SHADER_FRAGMENT: 53 -> 52 (-1.89%)
instructions helped:   shader-db/glamor/88.shader_test MESA_SHADER_FRAGMENT: 106 -> 104 (-1.89%)
instructions helped:   shader-db/unity/59-DeferredPoint.shader_test MESA_SHADER_FRAGMENT: 105 -> 103 (-1.90%)
instructions helped:   shader-db/supertuxkart/1.shader_test MESA_SHADER_FRAGMENT: 49 -> 48 (-2.04%)
instructions helped:   shader-db/tesseract/238.shader_test MESA_SHADER_FRAGMENT: 47 -> 46 (-2.13%)
instructions helped:   shader-db/tesseract/241.shader_test MESA_SHADER_FRAGMENT: 47 -> 46 (-2.13%)
instructions helped:   shader-db/tesseract/235.shader_test MESA_SHADER_FRAGMENT: 47 -> 46 (-2.13%)
instructions helped:   shader-db/tesseract/232.shader_test MESA_SHADER_FRAGMENT: 47 -> 46 (-2.13%)
instructions helped:   shader-db/unity/286-PostFXHeightFog.shader_test MESA_SHADER_FRAGMENT: 42 -> 41 (-2.38%)
instructions helped:   shader-db/tesseract/223.shader_test MESA_SHADER_FRAGMENT: 39 -> 38 (-2.56%)
instructions helped:   shader-db/tesseract/229.shader_test MESA_SHADER_FRAGMENT: 39 -> 38 (-2.56%)
instructions helped:   shader-db/tesseract/220.shader_test MESA_SHADER_FRAGMENT: 39 -> 38 (-2.56%)
instructions helped:   shader-db/tesseract/226.shader_test MESA_SHADER_FRAGMENT: 39 -> 38 (-2.56%)
instructions helped:   shader-db/tesseract/130.shader_test MESA_SHADER_FRAGMENT: 37 -> 36 (-2.70%)
instructions helped:   shader-db/unity/40.shader_test MESA_SHADER_FRAGMENT: 210 -> 204 (-2.86%)
instructions helped:   shader-db/tesseract/214.shader_test MESA_SHADER_FRAGMENT: 31 -> 30 (-3.23%)
instructions helped:   shader-db/tesseract/211.shader_test MESA_SHADER_FRAGMENT: 31 -> 30 (-3.23%)
instructions helped:   shader-db/tesseract/208.shader_test MESA_SHADER_FRAGMENT: 31 -> 30 (-3.23%)
instructions helped:   shader-db/tesseract/217.shader_test MESA_SHADER_FRAGMENT: 31 -> 30 (-3.23%)
instructions helped:   shader-db/warsow/85.shader_test MESA_SHADER_FRAGMENT: 92 -> 89 (-3.26%)
instructions helped:   shader-db/glmark/22-1.shader_test MESA_SHADER_FRAGMENT: 91 -> 88 (-3.30%)
instructions helped:   shader-db/unity/39.shader_test MESA_SHADER_FRAGMENT: 239 -> 231 (-3.35%)
instructions helped:   shader-db/unity/68.shader_test MESA_SHADER_FRAGMENT: 710 -> 682 (-3.94%)
instructions helped:   shader-db/unity/51.shader_test MESA_SHADER_FRAGMENT: 143 -> 137 (-4.20%)
instructions helped:   shader-db/0ad/12.shader_test MESA_SHADER_FRAGMENT: 118 -> 113 (-4.24%)
instructions helped:   shader-db/0ad/9.shader_test MESA_SHADER_FRAGMENT: 23 -> 22 (-4.35%)
instructions helped:   shader-db/tesseract/205.shader_test MESA_SHADER_FRAGMENT: 23 -> 22 (-4.35%)
instructions helped:   shader-db/tesseract/196.shader_test MESA_SHADER_FRAGMENT: 23 -> 22 (-4.35%)
instructions helped:   shader-db/tesseract/199.shader_test MESA_SHADER_FRAGMENT: 23 -> 22 (-4.35%)
instructions helped:   shader-db/tesseract/202.shader_test MESA_SHADER_FRAGMENT: 23 -> 22 (-4.35%)
instructions helped:   shader-db/unity/99-Water.shader_test MESA_SHADER_FRAGMENT: 106 -> 101 (-4.72%)
instructions helped:   shader-db/glmark/1-8.shader_test MESA_SHADER_FRAGMENT: 42 -> 40 (-4.76%)
instructions helped:   shader-db/unity/41.shader_test MESA_SHADER_FRAGMENT: 147 -> 140 (-4.76%)
instructions helped:   shader-db/tesseract/127.shader_test MESA_SHADER_FRAGMENT: 20 -> 19 (-5.00%)
instructions helped:   shader-db/unity/38.shader_test MESA_SHADER_FRAGMENT: 257 -> 244 (-5.06%)
instructions helped:   shader-db/glmark/1-24.shader_test MESA_SHADER_FRAGMENT: 57 -> 54 (-5.26%)
instructions helped:   shader-db/yofrankie/51.shader_test MESA_SHADER_FRAGMENT: 36 -> 34 (-5.56%)
instructions helped:   shader-db/glmark/7.shader_test MESA_SHADER_FRAGMENT: 51 -> 48 (-5.88%)
instructions helped:   shader-db/glmark/1-6.shader_test MESA_SHADER_FRAGMENT: 17 -> 16 (-5.88%)
instructions helped:   shader-db/glmark/16.shader_test MESA_SHADER_FRAGMENT: 51 -> 48 (-5.88%)
instructions helped:   shader-db/humus-portals/1.shader_test MESA_SHADER_FRAGMENT: 33 -> 31 (-6.06%)
instructions helped:   shader-db/yofrankie/27.shader_test MESA_SHADER_FRAGMENT: 33 -> 31 (-6.06%)
instructions helped:   shader-db/glmark/1-9.shader_test MESA_SHADER_FRAGMENT: 16 -> 15 (-6.25%)
instructions helped:   shader-db/tesseract/90.shader_test MESA_SHADER_FRAGMENT: 32 -> 30 (-6.25%)
instructions helped:   shader-db/tesseract/121.shader_test MESA_SHADER_FRAGMENT: 16 -> 15 (-6.25%)
instructions helped:   shader-db/yofrankie/48.shader_test MESA_SHADER_FRAGMENT: 32 -> 30 (-6.25%)
instructions helped:   shader-db/glmark/1-7.shader_test MESA_SHADER_FRAGMENT: 30 -> 28 (-6.67%)
instructions helped:   shader-db/unity/236-PBSApproximationSlices.shader_test MESA_SHADER_FRAGMENT: 58 -> 54 (-6.90%)
instructions helped:   shader-db/glmark/13-1.shader_test MESA_SHADER_FRAGMENT: 38 -> 35 (-7.89%)
instructions helped:   shader-db/tesseract/96.shader_test MESA_SHADER_FRAGMENT: 37 -> 34 (-8.11%)
instructions helped:   shader-db/unity/131-ColoredSpecular.shader_test MESA_SHADER_FRAGMENT: 36 -> 33 (-8.33%)
instructions helped:   shader-db/tesseract/39.shader_test MESA_SHADER_FRAGMENT: 12 -> 11 (-8.33%)
instructions helped:   shader-db/tesseract/9.shader_test MESA_SHADER_FRAGMENT: 12 -> 11 (-8.33%)
instructions helped:   shader-db/yofrankie/9.shader_test MESA_SHADER_FRAGMENT: 12 -> 11 (-8.33%)
instructions helped:   shader-db/glmark/22-2.shader_test MESA_SHADER_FRAGMENT: 59 -> 54 (-8.47%)
instructions helped:   shader-db/glmark/25-2.shader_test MESA_SHADER_FRAGMENT: 59 -> 54 (-8.47%)
instructions helped:   shader-db/tesseract/27.shader_test MESA_SHADER_FRAGMENT: 23 -> 21 (-8.70%)
instructions helped:   shader-db/tesseract/93.shader_test MESA_SHADER_FRAGMENT: 23 -> 21 (-8.70%)
instructions helped:   shader-db/tesseract/109.shader_test MESA_SHADER_FRAGMENT: 23 -> 21 (-8.70%)
instructions helped:   shader-db/glmark/1-11.shader_test MESA_SHADER_FRAGMENT: 34 -> 31 (-8.82%)
instructions helped:   shader-db/tesseract/81.shader_test MESA_SHADER_FRAGMENT: 33 -> 30 (-9.09%)
instructions helped:   shader-db/tesseract/148.shader_test MESA_SHADER_FRAGMENT: 11 -> 10 (-9.09%)
instructions helped:   shader-db/tesseract/75.shader_test MESA_SHADER_FRAGMENT: 33 -> 30 (-9.09%)
instructions helped:   shader-db/yofrankie/87.shader_test MESA_SHADER_FRAGMENT: 22 -> 20 (-9.09%)
instructions helped:   shader-db/glmark/1-13.shader_test MESA_SHADER_FRAGMENT: 43 -> 39 (-9.30%)
instructions helped:   shader-db/tesseract/87.shader_test MESA_SHADER_FRAGMENT: 21 -> 19 (-9.52%)
instructions helped:   shader-db/tesseract/30.shader_test MESA_SHADER_FRAGMENT: 21 -> 19 (-9.52%)
instructions helped:   shader-db/glmark/13-2.shader_test MESA_SHADER_FRAGMENT: 31 -> 28 (-9.68%)
instructions helped:   shader-db/glmark/16-2.shader_test MESA_SHADER_FRAGMENT: 31 -> 28 (-9.68%)
instructions helped:   shader-db/unity/156-RimLighting.shader_test MESA_SHADER_FRAGMENT: 31 -> 28 (-9.68%)
instructions helped:   shader-db/glmark/4-3.shader_test MESA_SHADER_FRAGMENT: 20 -> 18 (-10.00%)
instructions helped:   shader-db/glmark/1-18.shader_test MESA_SHADER_FRAGMENT: 10 -> 9 (-10.00%)
instructions helped:   shader-db/glmark/1-12.shader_test MESA_SHADER_FRAGMENT: 20 -> 18 (-10.00%)
instructions helped:   shader-db/unity/23.shader_test MESA_SHADER_FRAGMENT: 10 -> 9 (-10.00%)
instructions helped:   shader-db/yofrankie/39.shader_test MESA_SHADER_FRAGMENT: 19 -> 17 (-10.53%)
instructions helped:   shader-db/yofrankie/21.shader_test MESA_SHADER_FRAGMENT: 19 -> 17 (-10.53%)
instructions helped:   shader-db/warzone2100/1.shader_test MESA_SHADER_FRAGMENT: 66 -> 59 (-10.61%)
instructions helped:   shader-db/unity/151-Slices.shader_test MESA_SHADER_FRAGMENT: 18 -> 16 (-11.11%)
instructions helped:   shader-db/tesseract/118.shader_test MESA_SHADER_FRAGMENT: 9 -> 8 (-11.11%)
instructions helped:   shader-db/unity/159-RimLightBump.shader_test MESA_SHADER_FRAGMENT: 26 -> 23 (-11.54%)
instructions helped:   shader-db/unity/8.shader_test MESA_SHADER_FRAGMENT: 57 -> 50 (-12.28%)
instructions helped:   shader-db/glmark/1-21.shader_test MESA_SHADER_FRAGMENT: 8 -> 7 (-12.50%)
instructions helped:   shader-db/unity/129-WrappedDiffuse.shader_test MESA_SHADER_FRAGMENT: 16 -> 14 (-12.50%)
instructions helped:   shader-db/unity/139-ScreenPos.shader_test MESA_SHADER_FRAGMENT: 22 -> 19 (-13.64%)
instructions helped:   shader-db/tesseract/78.shader_test MESA_SHADER_FRAGMENT: 44 -> 38 (-13.64%)
instructions helped:   shader-db/tesseract/84.shader_test MESA_SHADER_FRAGMENT: 44 -> 38 (-13.64%)
instructions helped:   shader-db/glmark/7-3.shader_test MESA_SHADER_FRAGMENT: 14 -> 12 (-14.29%)
instructions helped:   shader-db/unity/33-GrassBillboard.shader_test MESA_SHADER_FRAGMENT: 7 -> 6 (-14.29%)
instructions helped:   shader-db/unity/30-Tree.shader_test MESA_SHADER_FRAGMENT: 48 -> 41 (-14.58%)
instructions helped:   shader-db/unity/121-WorldNormalReflBump.shader_test MESA_SHADER_FRAGMENT: 48 -> 41 (-14.58%)
instructions helped:   shader-db/warzone2100/4.shader_test MESA_SHADER_FRAGMENT: 13 -> 11 (-15.38%)
instructions helped:   shader-db/unity/41-GrassBillboard.shader_test MESA_SHADER_FRAGMENT: 26 -> 22 (-15.38%)
instructions helped:   shader-db/tesseract/104.shader_test MESA_SHADER_FRAGMENT: 6 -> 5 (-16.67%)
instructions helped:   shader-db/unity/24-Tree.shader_test MESA_SHADER_FRAGMENT: 22 -> 18 (-18.18%)
instructions helped:   shader-db/unity/27-Tree.shader_test MESA_SHADER_FRAGMENT: 37 -> 30 (-18.92%)
instructions helped:   shader-db/tesseract/42.shader_test MESA_SHADER_FRAGMENT: 5 -> 4 (-20.00%)
instructions helped:   shader-db/glmark/4-2.shader_test MESA_SHADER_FRAGMENT: 19 -> 15 (-21.05%)
instructions helped:   shader-db/unity/37-Terrain.shader_test MESA_SHADER_FRAGMENT: 36 -> 28 (-22.22%)
instructions helped:   shader-db/sauerbraten/8.shader_test MESA_SHADER_FRAGMENT: 9 -> 7 (-22.22%)
instructions helped:   shader-db/glmark/4-4.shader_test MESA_SHADER_FRAGMENT: 4 -> 3 (-25.00%)
instructions helped:   shader-db/glmark/1-4.shader_test MESA_SHADER_FRAGMENT: 3 -> 2 (-33.33%)
instructions helped:   shader-db/tesseract/54.shader_test MESA_SHADER_FRAGMENT: 3 -> 2 (-33.33%)
instructions helped:   shader-db/tesseract/36.shader_test MESA_SHADER_FRAGMENT: 3 -> 2 (-33.33%)
instructions helped:   shader-db/tesseract/48.shader_test MESA_SHADER_FRAGMENT: 3 -> 2 (-33.33%)
instructions helped:   shader-db/tesseract/244.shader_test MESA_SHADER_FRAGMENT: 3 -> 2 (-33.33%)
instructions helped:   shader-db/tesseract/145.shader_test MESA_SHADER_FRAGMENT: 3 -> 2 (-33.33%)
instructions helped:   shader-db/tesseract/6.shader_test MESA_SHADER_FRAGMENT: 3 -> 2 (-33.33%)
instructions helped:   shader-db/tesseract/21.shader_test MESA_SHADER_FRAGMENT: 3 -> 2 (-33.33%)
instructions helped:   shader-db/tesseract/99.shader_test MESA_SHADER_FRAGMENT: 3 -> 2 (-33.33%)
instructions helped:   shader-db/glmark/10-1.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/glmark/7-1.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/glmark/1-14.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/glmark/4-1.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/glmark/1-23.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/glmark/1-5.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/glmark/25-1.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/glmark/1-1.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/glmark/1-20.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/tesseract/45.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/tesseract/33.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/tesseract/12.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/tesseract/24.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/tesseract/154.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/sauerbraten/5.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)

spills helped:   shader-db/unity/68.shader_test MESA_SHADER_FRAGMENT: 30 -> 29 (-3.33%)
spills helped:   shader-db/unity/236-PBSApproximationSlices.shader_test MESA_SHADER_FRAGMENT: 3 -> 2 (-33.33%)
spills helped:   shader-db/unity/38.shader_test MESA_SHADER_FRAGMENT: 13 -> 8 (-38.46%)
spills helped:   shader-db/0ad/12.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
spills helped:   shader-db/glmark/22-1.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
spills helped:   shader-db/unity/41.shader_test MESA_SHADER_FRAGMENT: 7 -> 3 (-57.14%)
spills helped:   shader-db/unity/37-Terrain.shader_test MESA_SHADER_FRAGMENT: 4 -> 0
spills helped:   shader-db/unity/30-Tree.shader_test MESA_SHADER_FRAGMENT: 2 -> 0
spills helped:   shader-db/unity/99-Water.shader_test MESA_SHADER_FRAGMENT: 1 -> 0
spills helped:   shader-db/unity/121-WorldNormalReflBump.shader_test MESA_SHADER_FRAGMENT: 2 -> 0
spills helped:   shader-db/unity/27-Tree.shader_test MESA_SHADER_FRAGMENT: 2 -> 0
spills helped:   shader-db/tesseract/78.shader_test MESA_SHADER_FRAGMENT: 2 -> 0
spills helped:   shader-db/tesseract/84.shader_test MESA_SHADER_FRAGMENT: 2 -> 0

spills HURT:   shader-db/tesseract/488.shader_test MESA_SHADER_FRAGMENT: 7 -> 9 (28.57%)

fills helped:   shader-db/unity/236-PBSApproximationSlices.shader_test MESA_SHADER_FRAGMENT: 9 -> 7 (-22.22%)
fills helped:   shader-db/unity/38.shader_test MESA_SHADER_FRAGMENT: 49 -> 34 (-30.61%)
fills helped:   shader-db/unity/68.shader_test MESA_SHADER_FRAGMENT: 86 -> 58 (-32.56%)
fills helped:   shader-db/0ad/12.shader_test MESA_SHADER_FRAGMENT: 7 -> 4 (-42.86%)
fills helped:   shader-db/unity/41.shader_test MESA_SHADER_FRAGMENT: 23 -> 11 (-52.17%)
fills helped:   shader-db/glmark/22-1.shader_test MESA_SHADER_FRAGMENT: 6 -> 2 (-66.67%)
fills helped:   shader-db/unity/37-Terrain.shader_test MESA_SHADER_FRAGMENT: 8 -> 0
fills helped:   shader-db/unity/30-Tree.shader_test MESA_SHADER_FRAGMENT: 4 -> 0
fills helped:   shader-db/unity/99-Water.shader_test MESA_SHADER_FRAGMENT: 5 -> 0
fills helped:   shader-db/unity/121-WorldNormalReflBump.shader_test MESA_SHADER_FRAGMENT: 3 -> 0
fills helped:   shader-db/unity/27-Tree.shader_test MESA_SHADER_FRAGMENT: 4 -> 0
fills helped:   shader-db/tesseract/78.shader_test MESA_SHADER_FRAGMENT: 4 -> 0
fills helped:   shader-db/tesseract/84.shader_test MESA_SHADER_FRAGMENT: 4 -> 0

fills HURT:   shader-db/tesseract/488.shader_test MESA_SHADER_FRAGMENT: 33 -> 42 (27.27%)

total instructions in shared programs: 17196 -> 16864 (-1.93%)
instructions in affected programs: 6560 -> 6228 (-5.06%)
helped: 132
HURT: 0
helped stats (abs) min: 1 max: 28 x̄: 2.52 x̃: 2
helped stats (rel) min: 0.20% max: 50.00% x̄: 14.28% x̃: 8.70%
95% mean confidence interval for instructions value: -3.03 -2.00
95% mean confidence interval for instructions %-change: -16.89% -11.68%
Instructions are helped.

total loops in shared programs: 3 -> 3 (0.00%)
loops in affected programs: 0 -> 0
helped: 0
HURT: 0

total spills in shared programs: 197 -> 171 (-13.20%)
spills in affected programs: 79 -> 53 (-32.91%)
helped: 13
HURT: 1

total fills in shared programs: 766 -> 679 (-11.36%)
fills in affected programs: 245 -> 158 (-35.51%)
helped: 13
HURT: 1

LOST:   0
GAINED: 0

I also tested with a very large list of shaders coming from all piglit and deqp tests, and overall results follow the same pattern.

See commit messages for more details on the changes.

Merge request reports