draw: fix flatshade stage for constant interpolated values
authorRoland Scheidegger <sroland@vmware.com>
Wed, 10 Dec 2014 19:07:25 +0000 (20:07 +0100)
committerRoland Scheidegger <sroland@vmware.com>
Wed, 10 Dec 2014 21:11:16 +0000 (22:11 +0100)
commit2b23149206c933aed473d289d79dd2f398f88389
treede9e9769131167630fb20536f31285bb3e975f39
parentfb61f75bf633e60c0f81fe8ae59d03bfa68d755b
draw: fix flatshade stage for constant interpolated values

This stage only worked for traditional old-school flatshading, it did ignore
constant interpolated values and only handled colors, the code probably
predates using of constant interpolated values in gallium. So fix this - the
clip stage apparently did this a long time ago already.
Unfortunately this also means the stage needs to be invoked when flatshading
isn't enabled but some other prim changing stages are - for instance with
fill mode line each of the 3 lines in a tri should get the same attribute
value from the leading vertex in the original tri if interpolation is constant,
which did not happen before
Due to that, the stage is now run in more cases, even unnecessary ones. Could
in theory skip it completely if there aren't any constant interpolated
attributes (and rast->flatshade isn't set), but not sure it's worth bothering,
as it looks kinda complicated getting this information in advance.

No piglit change (doesn't really cover this directly).

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
src/gallium/auxiliary/draw/draw_pipe_clip.c
src/gallium/auxiliary/draw/draw_pipe_flatshade.c
src/gallium/auxiliary/draw/draw_pipe_validate.c