summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Fonseca <[email protected]>2011-03-31 12:20:10 +0100
committerJosé Fonseca <[email protected]>2011-03-31 12:20:37 +0100
commit3dedd39cdd198afa54ba5b53384d6be2040f9485 (patch)
tree36189c1c96fb07003aff8064377ea1591bf68869
parentc40b7910ee1338b9d391816df5391ce43f509ef0 (diff)
draw: Revert code reorg in previous change.
Because fetch_count = max_index - min_index + 1 overflows for min_index = 0 and max_index = 0xffffffff. Fixes fdo 35815.
-rw-r--r--src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h b/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
index 2acaef3f3d5..10842a36e8a 100644
--- a/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
+++ b/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
@@ -49,9 +49,6 @@ CONCAT(vsplit_primitive_, ELT_TYPE)(struct vsplit_frontend *vsplit,
ib += istart;
- fetch_start = min_index + elt_bias;
- fetch_count = max_index - min_index + 1;
-
/* use the ib directly */
if (min_index == 0 && sizeof(ib[0]) == sizeof(draw_elts[0])) {
if (icount > vsplit->max_vertices)
@@ -70,7 +67,7 @@ CONCAT(vsplit_primitive_, ELT_TYPE)(struct vsplit_frontend *vsplit,
}
/* this is faster only when we fetch less elements than the normal path */
- if (fetch_count > icount)
+ if (max_index - min_index > icount - 1)
return FALSE;
if (elt_bias < 0 && min_index < -elt_bias)
@@ -82,6 +79,9 @@ CONCAT(vsplit_primitive_, ELT_TYPE)(struct vsplit_frontend *vsplit,
return FALSE;
}
+ fetch_start = min_index + elt_bias;
+ fetch_count = max_index - min_index + 1;
+
if (!draw_elts) {
if (min_index == 0) {
for (i = 0; i < icount; i++) {