[Mesa-dev] GLSL compiler produces different code for the same source

Tom Stellard tstellar at gmail.com
Sat Mar 31 03:25:08 PDT 2012


On Sat, Mar 31, 2012 at 12:02:42AM -0700, Kenneth Graunke wrote:
> On 03/30/2012 02:11 PM, Vadim Girlin wrote:
> > Hi,
> >
> > I noticed that GLSL compiler sometimes produces different code for the
> > same shader source, e.g.:
> >
> > Vertex shader source:
> >
> >> 	gl_Position = gl_Vertex;
> >> 	gl_FrontColor = gl_Vertex;
> >
> > GLSL IR:
> >
> >>        (assign  (xyzw) (var_ref gl_Position)  (var_ref gl_Vertex) )
> >>        (assign  (xyzw) (var_ref gl_FrontColor)  (var_ref gl_Vertex) )
> >>        (assign  (xyzw) (var_ref gl_Position at 2)  (var_ref gl_Position) )
> >>        (assign  (xyzw) (var_ref gl_FrontColor at 3)  (var_ref gl_FrontColor) )
> >
> > Another variant has another order of the last two assignments:
> >
> >>        (assign  (xyzw) (var_ref gl_FrontColor at 4)  (var_ref gl_FrontColor) )
> >>        (assign  (xyzw) (var_ref gl_Position at 5)  (var_ref gl_Position) )
> >
> > Both variants are correct, but it makes the debugging harder - e.g. one
> > of the variants uncovers the bug in my code, and it's hard to reproduce
> > it. I guess we might want to remove the dependency on the moon phase
> > etc, and maybe provide some way to control it for debugging.
> >
> > My knowledge of the GLSL compiler is still not good enough to fix it
> > quickly, so I'd be grateful if somebody could help.
> >
> > There is the reduced test program in the attachment that demonstrates
> > the problem. It compiles the shader every second, so running it with the
> > following command line usually shows both variants during the first 10
> > seconds:
> >
> >> MESA_GLSL=dump ./test | grep -A 20 linked
> >
> > Vadim
> 
> Weird...I have no idea why it would do that.
> 
> So far, I haven't been able to reproduce this locally, either with your 
> test program, glslparsertest, or the standalone compiler.  Valgrind 
> doesn't seem to have any complaints about uninitialized data, either...
> 
> Can anyone else reproduce this?

I was able to reproduce this with r300g.  Is it possible that one of the
shader CAPS is causing this?

-Tom

> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list