Mesa (main): zink: export supported primitive restart types
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jun 23 03:52:35 UTC 2021
Module: Mesa
Branch: main
Commit: c032c9e32d55bb4a413876c71f537b5bdd655487
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c032c9e32d55bb4a413876c71f537b5bdd655487
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Fri May 21 07:36:53 2021 -0400
zink: export supported primitive restart types
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 | 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 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);
More information about the mesa-commit
mailing list