On Tue, 2016-07-26 at 22:56 -0700, Matt Turner wrote: > On Tue, Jul 26, 2016 at 10:20 PM, Timothy Arceri > <timothy.arc...@collabora.com> wrote: > > The ultimate goal is to be able to convert to NIR and make use of > > its > > optimisations before assigning varying and uniform locations. This > > should allow us to start removing some of the GLSL IR optimisation > > passes. > > I'm very excited about this! > > > This series falls short of making use of NIR because > > lower_packed_varyings() > > modifies the IR after we assign varying locations. I can see two > > ways > > around this, listing them in increasing difficultly level they > > would be: > > > > - replacing the current packing pass with one that follows the > > packing > > rules of ARB_enhanced_layouts this would mean we can no longer pack > > across slots and matrix and array packing effectivness would be > > slightly > > decreased. > > - write a NIR packing pass. > > Specifically a NIR implementation of lower_packed_varyings(), right? > > > > > Even without converting to NIR this series solves a number of the > > other > > problems with converting to NIR earlier and provides a nice shader- > > db > > improvement on its own. > > > > Broadwell shader-db results: > > > > total instructions in shared programs: 8651650 -> 8644415 (-0.08%) > > instructions in affected programs: 38754 -> 31519 (-18.67%) > > total loops in shared programs: 2085 -> 2085 (0.00%) > > helped: 320 > > HURT: 0 > > GAINED: 0 > > Impressive.
So I disabled varying packing to see what would happen. It seems a whole bunch of shaders increase by 1-2 instructions and a smaller number decrease by up to hundreds of instructions, it looks like most of these shaders are the same one helped by this series. total instructions in shared programs: 8645989 -> 8650948 (0.06%) instructions in affected programs: 333069 -> 338028 (1.49%) total loops in shared programs: 2085 -> 2085 (0.00%) helped: 364 HURT: 1673 It also seems just about all packing is done on either vec3's or different types e.g uint with vec2 so a packing pass that only follows the ARB_enhanced_layouts rules doesn't seem like it would be very useful. > > > Ivybridge reported no difference. > > I suspect that's because Ivybridge's vertex shader is vec4, and we > don't dead code eliminate individual *components* of varyings, > whereas > on Broadwell with scalar vertex shaders we're able to eliminate those > dead components. > > Thanks so much for working on this! > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev