[Mesa-dev] Testing optimizer

Paul Berry stereotype441 at gmail.com
Tue Dec 17 08:59:21 PST 2013


On 17 December 2013 08:46, Tom Stellard <tom at stellard.net> wrote:

> On Tue, Dec 17, 2013 at 09:57:31AM -0600, Patrick Baggett wrote:
> > Hi all,
> >
> > Is there a way to see the machine code that is generated by the GLSL
> > compiler for all GPU instruction sets? For example, I would like to know
> if
> > the optimizer optimizes certain (equivalent) constructs (or not), and
> avoid
> > them if possible. I know there is a lot to optimization on GPUs that I
> > don't know, but I'd still like to get some ballpark estimates. For
> example,
> > I'm curious whether:
>
> Each driver has its own environment variable for dumping machine code.
>
> llvmpipe: GALLIVM_DEBUG=asm (I think you need to build mesa
>                              with --enable-debug for this to work)
> r300g: RADEON_DEBUG=fp,vp
> r600g, radeonsi: R600_DEBUG=ps,vs
>
> I'm not sure what the other drivers use.
>
> -Tom
>

I believe every driver also supports MESA_GLSL=dump, which prints out the
IR both before and after linking (you'll want to look at the version after
linking to see what optimizations have been applied, since some
optimizations happen at link time).  Looking at the IR rather than the
machine code is more likely to give you the information you need, since
Mesa performs the same IR-level optimizations on all architectures, whereas
the optimizations that happen at machine code level are vastly different
from one driver to the next.

Another thing which might be useful to you is Aras Pranckevičius's
"glsl-optimizer" project (https://github.com/aras-p/glsl-optimizer), which
performs Mesa's IR-level optimizations on a shader and then translates it
from IR back to GLSL.

Paul


> >
> >     //let p1, p2, p3 be vec2 uniforms
> >
> >     vec4(p1, 0, 0) + vec4(p2, 0, 0) + vec4(p3, 0, 1)
> >
> > produces identical machine code as:
> >
> >     vec4(p1+p2+p3, 0, 1);
> >
> > for all architectures supported by Mesa.
>
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20131217/b5cdb766/attachment.html>


More information about the mesa-dev mailing list