diff --git a/src/gallium/drivers/vc4/vc4_screen.c b/src/gallium/drivers/vc4/vc4_screen.c index 5cfce4da2d1..40d49cc6b0c 100644 --- a/src/gallium/drivers/vc4/vc4_screen.c +++ b/src/gallium/drivers/vc4/vc4_screen.c @@ -204,6 +204,9 @@ vc4_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_TEXRECT: return 0; + case PIPE_CAP_SUPPORTED_PRIM_MODES: + return screen->prim_types; + default: return u_pipe_screen_get_param_defaults(pscreen, param); } @@ -606,6 +609,16 @@ vc4_screen_create(int fd, struct renderonly *ro) pscreen->get_driver_query_info = vc4_get_driver_query_info; } + /* Generate the bitmask of supported draw primitives. */ + screen->prim_types = BITFIELD_BIT(PIPE_PRIM_POINTS) | + BITFIELD_BIT(PIPE_PRIM_LINES) | + BITFIELD_BIT(PIPE_PRIM_LINE_LOOP) | + BITFIELD_BIT(PIPE_PRIM_LINE_STRIP) | + BITFIELD_BIT(PIPE_PRIM_TRIANGLES) | + BITFIELD_BIT(PIPE_PRIM_TRIANGLE_STRIP) | + BITFIELD_BIT(PIPE_PRIM_TRIANGLE_FAN); + + return pscreen; fail: diff --git a/src/gallium/drivers/vc4/vc4_screen.h b/src/gallium/drivers/vc4/vc4_screen.h index 2a5a160354e..06342f717f8 100644 --- a/src/gallium/drivers/vc4/vc4_screen.h +++ b/src/gallium/drivers/vc4/vc4_screen.h @@ -92,6 +92,7 @@ struct vc4_screen { uint32_t bo_size; uint32_t bo_count; + uint32_t prim_types; bool has_control_flow; bool has_etc1; bool has_threaded_fs;