Mesa (main): etnaviv: export supported prim types
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Aug 26 10:49:46 UTC 2021
Module: Mesa
Branch: main
Commit: a3d6aa43a60e5f2f56529b98bef936c4900e5fc1
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a3d6aa43a60e5f2f56529b98bef936c4900e5fc1
Author: Christian Gmeiner <christian.gmeiner at gmail.com>
Date: Wed Jun 23 07:56:43 2021 +0200
etnaviv: export supported prim types
This is now handled by gallium, so the related codepaths can be dropped.
Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
Acked-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12516>
---
src/gallium/drivers/etnaviv/etnaviv_context.c | 7 -------
src/gallium/drivers/etnaviv/etnaviv_screen.c | 22 ++++++++++++++++++++++
2 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/src/gallium/drivers/etnaviv/etnaviv_context.c b/src/gallium/drivers/etnaviv/etnaviv_context.c
index 581edc78d2f..b56ec6f2c09 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_context.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_context.c
@@ -255,13 +255,6 @@ etna_draw_vbo(struct pipe_context *pctx, const struct pipe_draw_info *info,
if (ctx->vertex_elements == NULL || ctx->vertex_elements->num_elements == 0)
return; /* Nothing to do */
- if (!(ctx->prim_hwsupport & (1 << info->mode))) {
- struct primconvert_context *primconvert = ctx->primconvert;
- util_primconvert_save_rasterizer_state(primconvert, ctx->rasterizer);
- util_primconvert_draw_vbo(primconvert, info, drawid_offset, indirect, draws, num_draws);
- return;
- }
-
int prims = u_decomposed_prims_for_vertices(info->mode, draws[0].count);
if (unlikely(prims <= 0)) {
DBG("Invalid draw primitive mode=%i or no primitives to be drawn", info->mode);
diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c
index 45fede5ca00..b4d338c27d6 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_screen.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c
@@ -260,6 +260,28 @@ etna_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
case PIPE_CAP_MAX_VARYINGS:
return screen->specs.max_varyings;
+ case PIPE_CAP_SUPPORTED_PRIM_MODES:
+ case PIPE_CAP_SUPPORTED_PRIM_MODES_WITH_RESTART: {
+ /* Generate the bitmask of supported draw primitives. */
+ uint32_t modes = 1 << PIPE_PRIM_POINTS |
+ 1 << PIPE_PRIM_LINES |
+ 1 << PIPE_PRIM_LINE_STRIP |
+ 1 << PIPE_PRIM_TRIANGLES |
+ 1 << PIPE_PRIM_TRIANGLE_FAN;
+
+ /* TODO: The bug relates only to indexed draws, but here we signal
+ * that there is no support for triangle strips at all. This should
+ * be refined.
+ */
+ if (VIV_FEATURE(screen, chipMinorFeatures2, BUG_FIXES8))
+ modes |= 1 << PIPE_PRIM_TRIANGLE_STRIP;
+
+ if (VIV_FEATURE(screen, chipMinorFeatures2, LINE_LOOP))
+ modes |= 1 << PIPE_PRIM_LINE_LOOP;
+
+ return modes;
+ }
+
case PIPE_CAP_PCI_GROUP:
case PIPE_CAP_PCI_BUS:
case PIPE_CAP_PCI_DEVICE:
More information about the mesa-commit
mailing list