Mesa (main): util/primconvert: map index buffer before getting index translator function

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


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

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Fri May 21 06:33:52 2021 -0400

util/primconvert: map index buffer before getting index translator function

also set other local values on init using new util functions

no functional changes

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 | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/src/gallium/auxiliary/indices/u_primconvert.c b/src/gallium/auxiliary/indices/u_primconvert.c
index c37dbe11dc7..8c92bcb1ebc 100644
--- a/src/gallium/auxiliary/indices/u_primconvert.c
+++ b/src/gallium/auxiliary/indices/u_primconvert.c
@@ -157,23 +157,25 @@ util_primconvert_draw_vbo(struct primconvert_context *pc,
    new_info.primitive_restart = info->primitive_restart;
    new_info.restart_index = info->restart_index;
    if (info->index_size) {
-      enum pipe_prim_type mode = 0;
-      unsigned index_size;
+      enum pipe_prim_type mode = new_info.mode = u_index_prim_type_convert(pc->cfg.primtypes_mask, info->mode, true);
+      unsigned index_size = info->index_size;
+      new_info.index_size = u_index_size_convert(info->index_size);
 
-      u_index_translator(pc->cfg.primtypes_mask,
-                         info->mode, info->index_size, draw->count,
-                         pc->api_pv, pc->api_pv,
-                         info->primitive_restart ? PR_ENABLE : PR_DISABLE,
-                         &mode, &index_size, &new_draw.count,
-                         &trans_func);
-      new_info.mode = mode;
-      new_info.index_size = index_size;
       src = info->has_user_indices ? info->index.user : NULL;
       if (!src) {
          src = pipe_buffer_map(pc->pipe, info->index.resource,
                                PIPE_MAP_READ, &src_transfer);
       }
       src = (const uint8_t *)src;
+
+      u_index_translator(pc->cfg.primtypes_mask,
+                         info->mode, index_size, draws->count,
+                         pc->api_pv, pc->api_pv,
+                         new_info.primitive_restart ? PR_ENABLE : PR_DISABLE,
+                         &mode, &index_size, &new_draw.count,
+                         &trans_func);
+      assert(new_info.mode == mode);
+      assert(new_info.index_size == index_size);
    }
    else {
       enum pipe_prim_type mode = 0;



More information about the mesa-commit mailing list