diff --git a/src/gallium/auxiliary/util/u_screen.c b/src/gallium/auxiliary/util/u_screen.c index 048749e3099..ef764a8499d 100644 --- a/src/gallium/auxiliary/util/u_screen.c +++ b/src/gallium/auxiliary/util/u_screen.c @@ -445,6 +445,9 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen, case PIPE_CAP_SHADER_ATOMIC_INT64: return 0; + case PIPE_CAP_ALLOW_DYNAMIC_VAO_FASTPATH: + return 1; + default: unreachable("bad PIPE_CAP_*"); } diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index 3b984b716ca..caddad15e3d 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -977,6 +977,7 @@ enum pipe_cap PIPE_CAP_SHADER_ATOMIC_INT64, PIPE_CAP_DEVICE_PROTECTED_CONTENT, PIPE_CAP_PREFER_REAL_BUFFER_IN_CONSTBUF0, + PIPE_CAP_ALLOW_DYNAMIC_VAO_FASTPATH, }; /** diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 3712f70ab5b..fe14be65820 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -586,7 +586,8 @@ void st_init_limits(struct pipe_screen *screen, screen->get_param(screen, PIPE_CAP_SIGNED_VERTEX_BUFFER_OFFSET); c->MultiDrawWithUserIndices = true; - c->AllowDynamicVAOFastPath = true; + c->AllowDynamicVAOFastPath = + screen->get_param(screen, PIPE_CAP_ALLOW_DYNAMIC_VAO_FASTPATH); c->glBeginEndBufferSize = screen->get_param(screen, PIPE_CAP_GL_BEGIN_END_BUFFER_SIZE);