st/mesa: simplify determination whether a draw has user vertex buffers
authorMarek Olšák <marek.olsak@amd.com>
Thu, 23 Jan 2020 03:23:09 +0000 (22:23 -0500)
committerMarek Olšák <marek.olsak@amd.com>
Fri, 14 Feb 2020 23:16:27 +0000 (18:16 -0500)
Reviewed-by: Mathias Fröhlich <mathias.froehlich@web.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3829>

src/mesa/state_tracker/st_atom_array.c

index bbbe0e236d303a3574d559c9b0c4c40dcd931393..c39c1c41f514e426f94f6f4588454b4751233309 100644 (file)
@@ -137,10 +137,13 @@ st_setup_arrays(struct st_context *st,
    const struct gl_vertex_array_object *vao = ctx->Array._DrawVAO;
    const GLbitfield inputs_read = vp_variant->vert_attrib_mask;
    const ubyte *input_to_index = vp->input_to_index;
-   bool uses_user_vertex_buffers = false;
 
    /* Process attribute array data. */
    GLbitfield mask = inputs_read & _mesa_draw_array_bits(ctx);
+   GLbitfield userbuf_attribs = inputs_read & _mesa_draw_user_array_bits(ctx);
+
+   *has_user_vertex_buffers = userbuf_attribs != 0;
+
    while (mask) {
       /* The attribute index to start pulling a binding */
       const gl_vert_attrib i = ffs(mask) - 1;
@@ -162,7 +165,6 @@ st_setup_arrays(struct st_context *st,
          vbuffer[bufidx].is_user_buffer = true;
          vbuffer[bufidx].buffer_offset = 0;
 
-         uses_user_vertex_buffers = true;
          if (!binding->InstanceDivisor)
             st->draw_needs_minmax_index = true;
       }
@@ -185,7 +187,6 @@ st_setup_arrays(struct st_context *st,
                        input_to_index[attr]);
       }
    }
-   *has_user_vertex_buffers = uses_user_vertex_buffers;
 }
 
 /* ALWAYS_INLINE helps the compiler realize that most of the parameters are