Mesa (main): util/primconvert: handle multidraws in primconvert

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 23 03:52:35 UTC 2021


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

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Fri May 21 11:37:45 2021 -0400

util/primconvert: handle multidraws in primconvert

once a draw reaches primconvert, it should never be able to reach the driver
until all draw operations have been converted as necessary

Reviewed-by: Rob Clark <robdclark at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10973>

---

 src/gallium/auxiliary/indices/u_primconvert.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/gallium/auxiliary/indices/u_primconvert.c b/src/gallium/auxiliary/indices/u_primconvert.c
index d376841e72e..d8704237e49 100644
--- a/src/gallium/auxiliary/indices/u_primconvert.c
+++ b/src/gallium/auxiliary/indices/u_primconvert.c
@@ -139,7 +139,13 @@ util_primconvert_draw_vbo(struct primconvert_context *pc,
    }
 
    if (num_draws > 1) {
-      util_draw_multi(pc->pipe, info, drawid_offset, indirect, draws, num_draws);
+      unsigned drawid = drawid_offset;
+      for (unsigned i = 0; i < num_draws; i++) {
+         if (draws[i].count && info->instance_count)
+            util_primconvert_draw_vbo(pc, info, drawid, NULL, &draws[i], 1);
+         if (info->increment_draw_id)
+            drawid++;
+      }
       return;
    }
 



More information about the mesa-commit mailing list