[Mesa-dev] Call i965 GLSL IR backend optimisation from the common linker

Matt Turner mattst88 at gmail.com
Wed Jul 27 05:56:09 UTC 2016

On Tue, Jul 26, 2016 at 10:20 PM, Timothy Arceri
<timothy.arceri at 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


> 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!

More information about the mesa-dev mailing list