diff options
Diffstat (limited to 'src/gallium/auxiliary/draw')
-rw-r--r-- | src/gallium/auxiliary/draw/draw_llvm.c | 7 | ||||
-rw-r--r-- | src/gallium/auxiliary/draw/draw_pt.c | 7 |
2 files changed, 7 insertions, 7 deletions
diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 79e7a9b6d12..a3174b404c1 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -707,15 +707,14 @@ generate_fetch(struct gallivm_state *gallivm, if (velem->instance_divisor) { /* Index is equal to the start instance plus the number of current * instance divided by the divisor. In this case we compute it as: - * index = start_instance + ((instance_id - start_instance) / divisor) + * index = start_instance + (instance_id / divisor) */ LLVMValueRef current_instance; index = lp_build_const_int32(gallivm, draw->start_instance); - current_instance = LLVMBuildSub(builder, instance_id, index, ""); - current_instance = LLVMBuildUDiv(builder, current_instance, + current_instance = LLVMBuildUDiv(builder, instance_id, lp_build_const_int32(gallivm, velem->instance_divisor), "instance_divisor"); - index = LLVMBuildAdd(builder, index, current_instance, "instance"); + index = lp_build_uadd_overflow(gallivm, index, current_instance, &ofbit); } stride = lp_build_umul_overflow(gallivm, vb_stride, index, &ofbit); diff --git a/src/gallium/auxiliary/draw/draw_pt.c b/src/gallium/auxiliary/draw/draw_pt.c index ccde371ffcd..fcc24057db0 100644 --- a/src/gallium/auxiliary/draw/draw_pt.c +++ b/src/gallium/auxiliary/draw/draw_pt.c @@ -542,11 +542,12 @@ draw_vbo(struct draw_context *draw, */ for (instance = 0; instance < info->instance_count; instance++) { - draw->instance_id = instance + info->start_instance; + unsigned instance_idx = instance + info->start_instance; draw->start_instance = info->start_instance; + draw->instance_id = instance; /* check for overflow */ - if (draw->instance_id < instance || - draw->instance_id < info->start_instance) { + if (instance_idx < instance || + instance_idx < draw->start_instance) { /* if we overflown just set the instance id to the max */ draw->instance_id = 0xffffffff; } |