summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>2021-05-21 07:36:53 -0400
committerMarge Bot <eric+marge@anholt.net>2021-06-23 03:13:42 +0000
commitc032c9e32d55bb4a413876c71f537b5bdd655487 (patch)
tree25457e1cc5213bff8adc3fb848427b0ba20b0900 /src
parent2953d709942031db91edeaa8940c63cc5517bd65 (diff)
zink: export supported primitive restart types
this is now handled by gallium, so the codepath can be dropped Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10973>
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/zink/zink_draw.c10
-rw-r--r--src/gallium/drivers/zink/zink_screen.c10
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 f44e438f074..6e09e9d8ea1 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 4e2e3a29656..db8a7975e61 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);