From f763d0f1952151e0fcae596e85600e7f391ea442 Mon Sep 17 00:00:00 2001 From: Ilia Mirkin Date: Thu, 7 Jan 2021 20:39:54 -0500 Subject: [PATCH] nv50: fix instancing of client-side vertex buffers Signed-off-by: Ilia Mirkin Reviewed-by: Karol Herbst Part-of: --- src/gallium/drivers/nouveau/nv50/nv50_vbo.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/nouveau/nv50/nv50_vbo.c b/src/gallium/drivers/nouveau/nv50/nv50_vbo.c index d7172b6..16ce34b 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_vbo.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_vbo.c @@ -189,9 +189,10 @@ nv50_user_vbuf_range(struct nv50_context *nv50, unsigned vbi, { assert(vbi < PIPE_MAX_ATTRIBS); if (unlikely(nv50->vertex->instance_bufs & (1 << vbi))) { - /* TODO: use min and max instance divisor to get a proper range */ - *base = 0; - *size = nv50->vtxbuf[vbi].buffer.resource->width0; + const uint32_t div = nv50->vertex->min_instance_div[vbi]; + *base = nv50->instance_off * nv50->vtxbuf[vbi].stride; + *size = (nv50->instance_max / div) * nv50->vtxbuf[vbi].stride + + nv50->vertex->vb_access_size[vbi]; } else { /* NOTE: if there are user buffers, we *must* have index bounds */ assert(nv50->vb_elt_limit != ~0); -- 2.7.4