summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/translate/translate_sse.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/auxiliary/translate/translate_sse.c')
-rw-r--r--src/gallium/auxiliary/translate/translate_sse.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/gallium/auxiliary/translate/translate_sse.c b/src/gallium/auxiliary/translate/translate_sse.c
index 09e70d93db4..c3d15661f05 100644
--- a/src/gallium/auxiliary/translate/translate_sse.c
+++ b/src/gallium/auxiliary/translate/translate_sse.c
@@ -1098,14 +1098,19 @@ static boolean init_inputs( struct translate_sse *p,
x86_mov_reg_imm(p->func, tmp_ECX, variant->instance_divisor);
x86_div(p->func, tmp_ECX); /* EAX = EDX:EAX / ECX */
}
+
+ /* XXX we need to clamp the index here too, but to a
+ * per-array max value, not the draw->pt.max_index value
+ * that's being given to us via translate->set_buffer().
+ */
} else {
x86_mov(p->func, tmp_EAX, elt);
- }
- /* Clamp to max_index
- */
- x86_cmp(p->func, tmp_EAX, buf_max_index);
- x86_cmovcc(p->func, tmp_EAX, buf_max_index, cc_AE);
+ /* Clamp to max_index
+ */
+ x86_cmp(p->func, tmp_EAX, buf_max_index);
+ x86_cmovcc(p->func, tmp_EAX, buf_max_index, cc_AE);
+ }
x86_imul(p->func, tmp_EAX, buf_stride);
x64_rexw(p->func);
@@ -1113,7 +1118,6 @@ static boolean init_inputs( struct translate_sse *p,
x86_cmp(p->func, p->count_EBP, p->tmp_EAX);
-
/* In the linear case, keep the buffer pointer instead of the
* index number.
*/