Mesa (main): draw: handle resetting draw_id between instances.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jul 15 20:00:33 UTC 2021


Module: Mesa
Branch: main
Commit: b3d2642ca4fe10faf05d51962339a598e622028e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b3d2642ca4fe10faf05d51962339a598e622028e

Author: Dave Airlie <airlied at redhat.com>
Date:   Thu Jul 15 15:25:24 2021 +1000

draw: handle resetting draw_id between instances.

If we have a multi draw then the draw_id needs to get reset
between each instance.

Fixes the rest of the VK CTS multidraw tests

Fixes: ce0b1f23c30e ("aux/draw: track increment_draw_id value from draw info")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11899>

---

 src/gallium/auxiliary/draw/draw_pt.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_pt.c b/src/gallium/auxiliary/draw/draw_pt.c
index f4f460e9530..80084bc7724 100644
--- a/src/gallium/auxiliary/draw/draw_pt.c
+++ b/src/gallium/auxiliary/draw/draw_pt.c
@@ -455,6 +455,7 @@ resolve_draw_info(const struct pipe_draw_info *raw_info,
  */
 static void
 draw_instances(struct draw_context *draw,
+               unsigned drawid_offset,
                const struct pipe_draw_info *info,
                const struct pipe_draw_start_count_bias *draws,
                unsigned num_draws)
@@ -473,6 +474,7 @@ draw_instances(struct draw_context *draw,
          draw->instance_id = 0xffffffff;
       }
 
+      draw->pt.user.drawid = drawid_offset;
       draw_new_instance(draw);
 
       if (info->primitive_restart) {
@@ -601,10 +603,10 @@ draw_vbo(struct draw_context *draw,
    if (use_info->view_mask) {
       u_foreach_bit(i, use_info->view_mask) {
          draw->pt.user.viewid = i;
-         draw_instances(draw, use_info, use_draws, num_draws);
+         draw_instances(draw, drawid_offset, use_info, use_draws, num_draws);
       }
    } else
-      draw_instances(draw, use_info, use_draws, num_draws);
+      draw_instances(draw, drawid_offset, use_info, use_draws, num_draws);
 
    /* If requested emit the pipeline statistics for this run */
    if (draw->collect_statistics) {



More information about the mesa-commit mailing list