Mesa (master): panfrost: Implement primitive restart

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jun 28 22:10:48 UTC 2019


Module: Mesa
Branch: master
Commit: 7f5481258c5ba606a2169c370cf84fd528705751
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7f5481258c5ba606a2169c370cf84fd528705751

Author: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Date:   Wed Jun 26 15:59:29 2019 -0700

panfrost: Implement primitive restart

For GLES3, just pass the flag through.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>

---

 src/gallium/drivers/panfrost/pan_context.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index be800ca6ce1..0dfdaf1c8b6 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -37,6 +37,7 @@
 #include "util/half_float.h"
 #include "util/u_helpers.h"
 #include "util/u_format.h"
+#include "util/u_prim_restart.h"
 #include "indices/u_primconvert.h"
 #include "tgsi/tgsi_parse.h"
 #include "util/u_math.h"
@@ -1631,6 +1632,15 @@ panfrost_draw_vbo(
 
         int mode = info->mode;
 
+        /* Fallback unsupported restart index */
+        unsigned primitive_index = (1 << (info->index_size * 8)) - 1;
+
+        if (info->primitive_restart && info->index_size
+                        && info->restart_index != primitive_index) {
+                util_draw_vbo_without_prim_restart(pipe, info);
+                return;
+        }
+
         /* Fallback for unsupported modes */
 
         if (!(ctx->draw_modes & (1 << mode))) {
@@ -1667,6 +1677,9 @@ panfrost_draw_vbo(
         if (panfrost_writes_point_size(ctx))
                 draw_flags |= MALI_DRAW_VARYING_SIZE;
 
+        if (info->primitive_restart)
+                draw_flags |= MALI_DRAW_PRIMITIVE_RESTART_FIXED_INDEX;
+
         /* For higher amounts of vertices (greater than what fits in a 16-bit
          * short), the other value is needed, otherwise there will be bizarre
          * rendering artefacts. It's not clear what these values mean yet. */




More information about the mesa-commit mailing list