diff options
author | José Fonseca <[email protected]> | 2010-04-20 10:32:06 +0200 |
---|---|---|
committer | José Fonseca <[email protected]> | 2010-04-20 10:32:06 +0200 |
commit | 4e8154e8666ec9375936bbe3fa2ca925ff9be5df (patch) | |
tree | 4a7f8b961445f4c86017dd36efa73a7f2b5363ad /src/gallium/auxiliary/draw | |
parent | 493a1bb822f80f48cf284cb572acb5dd393a07e1 (diff) |
draw: Fix cache elt_bias implementation.
Diffstat (limited to 'src/gallium/auxiliary/draw')
-rw-r--r-- | src/gallium/auxiliary/draw/draw_pt_vcache.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/gallium/auxiliary/draw/draw_pt_vcache.c b/src/gallium/auxiliary/draw/draw_pt_vcache.c index a513188b918..28dc514888f 100644 --- a/src/gallium/auxiliary/draw/draw_pt_vcache.c +++ b/src/gallium/auxiliary/draw/draw_pt_vcache.c @@ -347,7 +347,7 @@ vcache_check_run( struct draw_pt_front_end *frontend, vcache->fetch_max, draw_count); - if (max_index >= DRAW_PIPE_MAX_VERTICES || + if (elt_bias + max_index >= DRAW_PIPE_MAX_VERTICES || fetch_count >= UNDEFINED_VERTEX_ID || fetch_count > draw_count) { if (0) debug_printf("fail\n"); @@ -363,6 +363,9 @@ vcache_check_run( struct draw_pt_front_end *frontend, } + assert((elt_bias >= 0 && min_index + elt_bias >= min_index) || + (elt_bias < 0 && min_index + elt_bias < min_index)); + if (elt_bias <= 0 && min_index == (unsigned)-elt_bias && index_size == 2) @@ -407,21 +410,21 @@ vcache_check_run( struct draw_pt_front_end *frontend, case 1: rebase_ubyte_elts( (const ubyte *)elts, draw_count, - elt_bias - (int)min_index, + -elt_bias - (int)min_index, storage ); break; case 2: rebase_ushort_elts( (const ushort *)elts, draw_count, - elt_bias - (int)min_index, + -elt_bias - (int)min_index, storage ); break; case 4: rebase_uint_elts( (const uint *)elts, draw_count, - elt_bias - (int)min_index, + -elt_bias - (int)min_index, storage ); break; @@ -436,7 +439,7 @@ vcache_check_run( struct draw_pt_front_end *frontend, if (fetch_count < UNDEFINED_VERTEX_ID) ok = vcache->middle->run_linear_elts( vcache->middle, - min_index, /* start */ + min_index + elt_bias, /* start */ fetch_count, transformed_elts, draw_count ); |