From c032c9e32d55bb4a413876c71f537b5bdd655487 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 21 May 2021 07:36:53 -0400 Subject: [PATCH] zink: export supported primitive restart types this is now handled by gallium, so the codepath can be dropped Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_draw.c | 10 ---------- src/gallium/drivers/zink/zink_screen.c | 10 ++++++++++ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/gallium/drivers/zink/zink_draw.c b/src/gallium/drivers/zink/zink_draw.c index f44e438..6e09e9d 100644 --- a/src/gallium/drivers/zink/zink_draw.c +++ b/src/gallium/drivers/zink/zink_draw.c @@ -235,12 +235,6 @@ line_width_needed(enum pipe_prim_type reduced_prim, } } -static inline bool -restart_supported(enum pipe_prim_type mode) -{ - return mode == PIPE_PRIM_LINE_STRIP || mode == PIPE_PRIM_TRIANGLE_STRIP || mode == PIPE_PRIM_TRIANGLE_FAN; -} - ALWAYS_INLINE static void update_drawid(struct zink_context *ctx, unsigned draw_id) { @@ -422,10 +416,6 @@ zink_draw_vbo(struct pipe_context *pctx, update_barriers(ctx, false); - if (dinfo->primitive_restart && !restart_supported(dinfo->mode)) { - util_draw_vbo_without_prim_restart(pctx, dinfo, drawid_offset, dindirect, &draws[0]); - return; - } if (ctx->gfx_pipeline_state.vertices_per_patch != dinfo->vertices_per_patch) ctx->gfx_pipeline_state.dirty = true; bool drawid_broken = ctx->drawid_broken; diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 4e2e3a2..db8a797 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -243,6 +243,16 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param) return screen->info.feats.features.samplerAnisotropy; case PIPE_CAP_EMULATE_NONFIXED_PRIMITIVE_RESTART: return 1; + case PIPE_CAP_SUPPORTED_PRIM_MODES_WITH_RESTART: { + uint32_t modes = BITFIELD_BIT(PIPE_PRIM_LINE_STRIP) | + BITFIELD_BIT(PIPE_PRIM_TRIANGLE_STRIP) | + BITFIELD_BIT(PIPE_PRIM_LINE_STRIP_ADJACENCY) | + BITFIELD_BIT(PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY) | + BITFIELD_BIT(PIPE_PRIM_PATCHES); + if (screen->have_triangle_fans) + modes |= BITFIELD_BIT(PIPE_PRIM_TRIANGLE_FAN); + return modes; + } case PIPE_CAP_SUPPORTED_PRIM_MODES: { uint32_t modes = BITFIELD_MASK(PIPE_PRIM_MAX); modes &= ~BITFIELD_BIT(PIPE_PRIM_QUADS); -- 2.7.4