Mesa (main): zink: export 8bit index buffer support based on extension presence

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


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

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Fri May 21 07:35:12 2021 -0400

zink: export 8bit index buffer support based on extension presence

this is now handled by gallium, so the codepath can be dropped

Reviewed-by: Dave Airlie <airlied at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10973>

---

 src/gallium/drivers/zink/zink_draw.c   | 19 +++++++------------
 src/gallium/drivers/zink/zink_screen.c |  3 +++
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_draw.c b/src/gallium/drivers/zink/zink_draw.c
index dcdeb29922f..f228fa69542 100644
--- a/src/gallium/drivers/zink/zink_draw.c
+++ b/src/gallium/drivers/zink/zink_draw.c
@@ -478,18 +478,13 @@ zink_draw_vbo(struct pipe_context *pctx,
    unsigned index_offset = 0;
    struct pipe_resource *index_buffer = NULL;
    if (dinfo->index_size > 0) {
-       if (!screen->info.have_EXT_index_type_uint8 && dinfo->index_size == 1) {
-          util_translate_prim_restart_ib(pctx, dinfo, dindirect, &draws[0], &index_buffer);
-          need_index_buffer_unref = true;
-       } else {
-          if (dinfo->has_user_indices) {
-             if (!util_upload_index_buffer(pctx, dinfo, &draws[0], &index_buffer, &index_offset, 4)) {
-                debug_printf("util_upload_index_buffer() failed\n");
-                return;
-             }
-          } else
-             index_buffer = dinfo->index.resource;
-       }
+       if (dinfo->has_user_indices) {
+          if (!util_upload_index_buffer(pctx, dinfo, &draws[0], &index_buffer, &index_offset, 4)) {
+             debug_printf("util_upload_index_buffer() failed\n");
+             return;
+          }
+       } else
+          index_buffer = dinfo->index.resource;
    }
    if (ctx->xfb_barrier)
       zink_emit_xfb_counter_barrier(ctx);
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
index ad6c9694556..bf0b30e8f72 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -849,6 +849,9 @@ zink_is_format_supported(struct pipe_screen *pscreen,
              vk_sample_count_flags(sample_count);
 
    if (bind & PIPE_BIND_INDEX_BUFFER) {
+      if (format == PIPE_FORMAT_R8_UINT &&
+          !screen->info.have_EXT_index_type_uint8)
+         return false;
       if (format != PIPE_FORMAT_R8_UINT &&
           format != PIPE_FORMAT_R16_UINT &&
           format != PIPE_FORMAT_R32_UINT)



More information about the mesa-commit mailing list