i965/gen7: Set up all samplers even if samplers are sparsely used.
authorEric Anholt <eric@anholt.net>
Thu, 14 Feb 2013 05:21:45 +0000 (21:21 -0800)
committerEric Anholt <eric@anholt.net>
Thu, 14 Feb 2013 23:14:09 +0000 (15:14 -0800)
commit5bb05c6e6d596d66c177e42a36128d2ca2e300aa
treeb27eea2a0234de00950e5cbe16e62ab74171f484
parent34dc4d6b67529cd65e744c4ac487d7700cd633da
i965/gen7: Set up all samplers even if samplers are sparsely used.

In GLSL, sampler indices are allocated contiguously from 0.  But in the
case of ARB_fragment_program (and possibly fixed function), an app that
uses texture 0 and 2 will use sampler indices 0 and 2, so we were only
allocating space for samplers 0 and 1 and setting up sampler 0.  We
would read garbage for sampler 2, resulting in flickering textures and
an angry simulator.

Fixes bad rendering in 0 A.D. and ETQW.  This was fixed for pre-gen7 by
28f4be9eb91b12a2c6b1db6660cca71a98c486ec

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=25201
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=58680
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
NOTE: This is a candidate for stable branches.
src/mesa/drivers/dri/i965/gen7_sampler_state.c