draw: Mask out vertex flags in GS and stream output.
authorChia-I Wu <olv@lunarg.com>
Wed, 4 Aug 2010 06:39:16 +0000 (14:39 +0800)
committerChia-I Wu <olv@lunarg.com>
Fri, 6 Aug 2010 05:39:37 +0000 (13:39 +0800)
This fixes out-of-bound access to the vertices.

src/gallium/auxiliary/draw/draw_gs.c
src/gallium/auxiliary/draw/draw_pt_so_emit.c

index f2535c5a549b51555eb06c35f9c87f7db5f522e1..4a1013e79a5049e130a6fd68f8d260f41d181a65 100644 (file)
@@ -380,7 +380,7 @@ static void gs_tri_adj(struct draw_geometry_shader *shader,
 
 #define FUNC         gs_run_elts
 #define LOCAL_VARS   const ushort *elts = input_prims->elts;
-#define GET_ELT(idx) (elts[idx])
+#define GET_ELT(idx) (elts[idx] & ~DRAW_PIPE_FLAG_MASK)
 #include "draw_gs_tmp.h"
 
 
index c86bdd99a33bfafe2534b23ef542967ea2e3ae95..f7f4f24d3544a41f2ac0527a63c27120ef11d97e 100644 (file)
@@ -225,7 +225,7 @@ static void so_tri(struct pt_so_emit *so, int i0, int i1, int i2)
 
 #define FUNC         so_run_elts
 #define LOCAL_VARS   const ushort *elts = input_prims->elts;
-#define GET_ELT(idx) (elts[start + (idx)])
+#define GET_ELT(idx) (elts[start + (idx)] & ~DRAW_PIPE_FLAG_MASK)
 #include "draw_so_emit_tmp.h"