From: Jason Ekstrand Date: Wed, 18 May 2016 20:05:48 +0000 (-0700) Subject: i965/draw: Properly handle rounding when dividing by InstanceDivisor X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d5b4ab2c5f700087ac09238e3cf8252aa3d31d54;p=mesa.git 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 --- 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 {