mesa: move calling _mesa_update_vao_derived_arrays into st_update_array
authorMarek Olšák <marek.olsak@amd.com>
Mon, 21 Nov 2022 13:24:17 +0000 (08:24 -0500)
committerMarge Bot <emma+marge@anholt.net>
Mon, 12 Dec 2022 19:15:34 +0000 (19:15 +0000)
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19953>

src/mesa/main/arrayobj.c
src/mesa/main/draw.c
src/mesa/state_tracker/st_atom_array.cpp

index 98bfefb..966d26b 100644 (file)
@@ -546,8 +546,6 @@ _mesa_update_vao_derived_arrays(struct gl_context *ctx,
    /* More than 4 updates turn the VAO to dynamic. */
    if (ctx->Const.AllowDynamicVAOFastPath && ++vao->NumUpdates > 4) {
       vao->IsDynamic = true;
-      /* IsDynamic changes how vertex elements map to vertex buffers. */
-      vao->NewVertexElements = true;
       return;
    }
 
index 437729a..76e5b50 100644 (file)
@@ -154,8 +154,6 @@ _mesa_update_vao_state(struct gl_context *ctx, GLbitfield filter)
    bool new_vertex_buffers = false, new_vertex_elements = false;
 
    if (vao->NewVertexBuffers || vao->NewVertexElements) {
-      if (!vao->IsDynamic)
-         _mesa_update_vao_derived_arrays(ctx, vao);
       new_vertex_buffers |= vao->NewVertexBuffers;
       new_vertex_elements |= vao->NewVertexElements;
       vao->NewVertexBuffers = false;
index 035fcab..e3b8556 100644 (file)
@@ -363,9 +363,13 @@ template<util_popcnt POPCNT> void ALWAYS_INLINE
 st_update_array_impl(struct st_context *st)
 {
    struct gl_context *ctx = st->ctx;
+   struct gl_vertex_array_object *vao = ctx->Array._DrawVAO;
    GLbitfield enabled_user_attribs;
    GLbitfield nonzero_divisor_attribs;
 
+   if (!vao->IsDynamic && !vao->SharedAndImmutable)
+      _mesa_update_vao_derived_arrays(ctx, vao);
+
    _mesa_get_derived_vao_masks(ctx, &enabled_user_attribs,
                                &nonzero_divisor_attribs);