lima: support indexed draw with bias
authorIcenowy Zheng <icenowy@aosc.io>
Tue, 22 Oct 2019 14:14:56 +0000 (22:14 +0800)
committerVasily Khoruzhick <anarsoul@gmail.com>
Thu, 31 Oct 2019 21:56:45 +0000 (21:56 +0000)
When doing an indexed draw with index_bias set to a non-zero value (e.g.
by glDrawElementsBaseVertex), the vertex buffer should be offseted by
index_bias vertices.

Add this offset when setting the vertex buffer address.

Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
src/gallium/drivers/lima/lima_draw.c

index 9753343409e0b0cb92d0bcddda9ecf9008374379..a607e874601187ccda4867b7100e4b39cd699199 100644 (file)
@@ -1154,7 +1154,7 @@ lima_update_gp_attribute_info(struct lima_context *ctx, const struct pipe_draw_i
 
       lima_submit_add_bo(ctx->gp_submit, res->bo, LIMA_SUBMIT_BO_READ);
 
-      unsigned start = info->index_size ? ctx->min_index : info->start;
+      unsigned start = info->index_size ? (ctx->min_index + info->index_bias) : info->start;
       attribute[n++] = res->bo->va + pvb->buffer_offset + pve->src_offset
          + start * pvb->stride;
       attribute[n++] = (pvb->stride << 11) |