Module: Mesa
Branch: master
Commit: 37692e5dc9bbcf4f48b4401255d47f724a602978
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=37692e5dc9bbcf4f48b4401255d47f724a602978

Author: Brian Paul <[email protected]>
Date:   Mon Jul 19 18:29:12 2010 -0600

draw: fix incorrect instancing divisor in LLVM code

---

 src/gallium/auxiliary/draw/draw_llvm.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_llvm.c 
b/src/gallium/auxiliary/draw/draw_llvm.c
index 6958c30..1ee8769 100644
--- a/src/gallium/auxiliary/draw/draw_llvm.c
+++ b/src/gallium/auxiliary/draw/draw_llvm.c
@@ -380,12 +380,15 @@ generate_fetch(LLVMBuilderRef builder,
    LLVMValueRef cond;
    LLVMValueRef stride;
 
-   cond = LLVMBuildICmp(builder, LLVMIntULE, index, vb_max_index, "");
-
    if (velem->instance_divisor) {
-      index = instance_id;
+      /* array index = instance_id / instance_divisor */
+      index = LLVMBuildUDiv(builder, instance_id,
+                            LLVMConstInt(LLVMInt32Type(), 
velem->instance_divisor, 0),
+                            "instance_divisor");
    }
 
+   /* limit index to min(inex, vb_max_index) */
+   cond = LLVMBuildICmp(builder, LLVMIntULE, index, vb_max_index, "");
    index = LLVMBuildSelect(builder, cond, index, vb_max_index, "");
 
    stride = LLVMBuildMul(builder, vb_stride, index, "");

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to