From d5b4ab2c5f700087ac09238e3cf8252aa3d31d54 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Wed, 18 May 2016 13:05:48 -0700 Subject: [PATCH] i965/draw: Properly handle rounding when dividing by InstanceDivisor The old code always divided rounded down and then subtracted 1. What we wanted was to divide rounded up and then subtract 1 which is equivalent to subtracting 1 and then dividing rounded down. Cc: "11.1 11.2" Reviewed-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/brw_draw_upload.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c index 6d9e65e9cfa..b651fd202cd 100644 --- a/src/mesa/drivers/dri/i965/brw_draw_upload.c +++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c @@ -474,8 +474,8 @@ brw_prepare_vertices(struct brw_context *brw) if (glarray->InstanceDivisor) { if (brw->num_instances) { start = offset + glarray->StrideB * brw->baseinstance; - range = (glarray->StrideB * ((brw->num_instances / - glarray->InstanceDivisor) - 1) + + range = (glarray->StrideB * ((brw->num_instances - 1) / + glarray->InstanceDivisor) + glarray->_ElementSize); } } else {