On 02/14/2013 09:08 AM, Eric Anholt wrote:
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
NOTE: This is a candidate for stable branches.
---
OK, since we've screwed this up twice in our driver (and we've screwed
it up in other drivers too, long ago), I'm going to make sure we've
got a piglit test before I push this.
src/mesa/drivers/dri/i965/gen7_sampler_state.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/mesa/drivers/dri/i965/gen7_sampler_state.c
b/src/mesa/drivers/dri/i965/gen7_sampler_state.c
index 6f0a757..1fb947f 100644
--- a/src/mesa/drivers/dri/i965/gen7_sampler_state.c
+++ b/src/mesa/drivers/dri/i965/gen7_sampler_state.c
@@ -196,7 +196,7 @@ gen7_upload_samplers(struct brw_context *brw)
GLbitfield SamplersUsed = vs->SamplersUsed | fs->SamplersUsed;
- brw->sampler.count = _mesa_bitcount(SamplersUsed);
+ brw->sampler.count = _mesa_fls(SamplersUsed);
if (brw->sampler.count == 0)
return;
Damn. Forgot to fix this in the Gen7 code.
Reviewed-by: Kenneth Graunke <[email protected]>
_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev