diff options
-rw-r--r-- | src/gallium/auxiliary/draw/draw_pipe.c | 9 | ||||
-rw-r--r-- | src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h | 6 |
2 files changed, 9 insertions, 6 deletions
diff --git a/src/gallium/auxiliary/draw/draw_pipe.c b/src/gallium/auxiliary/draw/draw_pipe.c index d754504f200..ac449b75f00 100644 --- a/src/gallium/auxiliary/draw/draw_pipe.c +++ b/src/gallium/auxiliary/draw/draw_pipe.c @@ -33,6 +33,7 @@ #include "draw/draw_private.h" #include "draw/draw_pipe.h" #include "util/u_debug.h" +#include "util/u_math.h" @@ -193,7 +194,7 @@ static void do_triangle( struct draw_context *draw, do_point( draw, verts + stride * (i0) ); \ } while (0) -#define GET_ELT(idx) (elts[idx]) +#define GET_ELT(idx) (MIN2(elts[idx], max_index)) #define FUNC pipe_run_elts #define FUNC_VARS \ @@ -203,7 +204,8 @@ static void do_triangle( struct draw_context *draw, struct vertex_header *vertices, \ unsigned stride, \ const ushort *elts, \ - unsigned count + unsigned count, \ + unsigned max_index #include "draw_pt_decompose.h" @@ -262,7 +264,8 @@ void draw_pipeline_run( struct draw_context *draw, vert_info->verts, vert_info->stride, prim_info->elts + start, - count); + count, + vert_info->count - 1); } draw->pipeline.verts = NULL; diff --git a/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h b/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h index 75cbec87bed..2e94705609f 100644 --- a/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h +++ b/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h @@ -55,7 +55,7 @@ CONCAT(vsplit_primitive_, ELT_TYPE)(struct vsplit_frontend *vsplit, for (i = 0; i < icount; i++) { ELT_TYPE idx = ib[i]; - if (idx < min_index || idx > max_index) { + if (idx < min_index || idx > max_index) { debug_printf("warning: index out of range\n"); } } @@ -90,7 +90,7 @@ CONCAT(vsplit_primitive_, ELT_TYPE)(struct vsplit_frontend *vsplit, if (idx < min_index || idx > max_index) { debug_printf("warning: index out of range\n"); - } + } vsplit->draw_elts[i] = (ushort) idx; } } @@ -100,7 +100,7 @@ CONCAT(vsplit_primitive_, ELT_TYPE)(struct vsplit_frontend *vsplit, if (idx < min_index || idx > max_index) { debug_printf("warning: index out of range\n"); - } + } vsplit->draw_elts[i] = (ushort) (idx - min_index); } } |