On 23 October 2013 10:51, Eric Anholt <[email protected]> wrote: > Paul Berry <[email protected]> writes: > > > When a geometry shader is present, the fragment shader gl_PrimitiveID > > input acts like an ordinary varying, receiving data from the gs > > gl_PrimitiveID output. When there's no geometry shader, we have to > > ask the fixed function SF hardware to provide the primitive ID to the > > fragment shader instead. > > > > Previously, the SF setup code would handle this situation by > > recognizing that the FS gl_PrimitiveID input didn't match to any VS > > output; since normally an FS input with no corresponding VS output > > leads to undefined data, the SF setup code used to just arbitrarily > > assign it to receive data from attribute 0. > > > > This patch changes the SF setup code so that instead of arbitrarily > > using attribute 0, it assigns the unmatched FS input to receive > > gl_PrimitiveID. In the case where the FS input really is > > gl_PrimitiveID, this produces the intended result. In all other > > cases, no harm is done since GL specifies that the behaviour is > > undefined. > > > > Fixes piglit test primitive-id-no-gs. > > Reviewed-by: Eric Anholt <[email protected]> >
I was about to push this when I realized that it regressed point sprite functionality. It seems that if an attribute has its "component override" bots set *and* its "point sprite texture coordinate enable" bit set, the component override takes predence (this isn't documented; I found it out by running piglit tests). As a result, this patch was causing gl_PointCoord to get overridden with gl_PrimitiveID. I'll follow up shortly with a corrected patch.
_______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
