st/mesa: simplify determination whether a draw needs min/max index
[mesa.git] / src / mesa / state_tracker / st_atom_array.c
index c39c1c41f514e426f94f6f4588454b4751233309..040c25b96516b31858f231a68b04248cfaf2deb5 100644 (file)
@@ -143,6 +143,8 @@ st_setup_arrays(struct st_context *st,
    GLbitfield userbuf_attribs = inputs_read & _mesa_draw_user_array_bits(ctx);
 
    *has_user_vertex_buffers = userbuf_attribs != 0;
+   st->draw_needs_minmax_index =
+      (userbuf_attribs & ~_mesa_draw_nonzero_divisor_bits(ctx)) != 0;
 
    while (mask) {
       /* The attribute index to start pulling a binding */
@@ -164,9 +166,6 @@ st_setup_arrays(struct st_context *st,
          vbuffer[bufidx].buffer.user = ptr;
          vbuffer[bufidx].is_user_buffer = true;
          vbuffer[bufidx].buffer_offset = 0;
-
-         if (!binding->InstanceDivisor)
-            st->draw_needs_minmax_index = true;
       }
       vbuffer[bufidx].stride = binding->Stride; /* in bytes */
 
@@ -296,8 +295,6 @@ st_update_array(struct st_context *st)
    unsigned num_velements;
    bool uses_user_vertex_buffers;
 
-   st->draw_needs_minmax_index = false;
-
    /* ST_NEW_VERTEX_ARRAYS alias ctx->DriverFlags.NewArray */
    /* Setup arrays */
    st_setup_arrays(st, vp, vp_variant, velements, vbuffer, &num_vbuffers,