st/nine: Fix bad tracking of bound vs textures
authorAxel Davy <davyaxel0@gmail.com>
Sat, 10 Mar 2018 13:21:52 +0000 (14:21 +0100)
committerAxel Davy <davyaxel0@gmail.com>
Sun, 18 Mar 2018 21:53:32 +0000 (22:53 +0100)
An incorrect formula was used to compute bound_samplers_mask_vs.
Since s is above always 8 for vs and the variable is encoded on 8 bits,
it was always 0.
This resulted in commiting the samplers every call when
there was at least one texture read in the vs shader.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
src/gallium/state_trackers/nine/nine_state.c

index 26b2dea3bd528534563d7a3d6549f28cfb0b2466..c81a05a952b91eba0e47bc28a4ee462146470ea1 100644 (file)
@@ -980,7 +980,7 @@ update_textures_and_samplers(struct NineDevice9 *device)
             context->changed.sampler[s] = ~0;
         }
 
-        context->bound_samplers_mask_vs |= (1 << s);
+        context->bound_samplers_mask_vs |= (1 << i);
     }
 
     cso_set_sampler_views(context->cso, PIPE_SHADER_VERTEX, num_textures, view);