const struct gl_vertex_array_object *vao,
const GLbitfield dual_slot_inputs,
const GLbitfield inputs_read,
- const GLbitfield nonzero_divisor_attribs,
const GLbitfield enabled_attribs,
- const GLbitfield enabled_user_attribs,
struct cso_velems_state *velements,
- struct pipe_vertex_buffer *vbuffer, unsigned *num_vbuffers,
- bool *has_user_vertex_buffers)
+ struct pipe_vertex_buffer *vbuffer, unsigned *num_vbuffers)
{
struct gl_context *ctx = st->ctx;
/* Process attribute array data. */
GLbitfield mask = inputs_read & enabled_attribs;
- GLbitfield userbuf_attribs = inputs_read & enabled_user_attribs;
-
- *has_user_vertex_buffers = userbuf_attribs != 0;
- st->draw_needs_minmax_index =
- (userbuf_attribs & ~nonzero_divisor_attribs) != 0;
if (vao->IsDynamic) {
while (mask) {
const struct gl_vertex_program *vp,
const struct st_common_variant *vp_variant,
struct cso_velems_state *velements,
- struct pipe_vertex_buffer *vbuffer, unsigned *num_vbuffers,
- bool *has_user_vertex_buffers)
+ struct pipe_vertex_buffer *vbuffer, unsigned *num_vbuffers)
{
struct gl_context *ctx = st->ctx;
setup_arrays<POPCNT_NO, UPDATE_ALL>
(st, ctx->Array._DrawVAO, vp->Base.DualSlotInputs,
- vp_variant->vert_attrib_mask, _mesa_draw_nonzero_divisor_bits(ctx),
- _mesa_draw_array_bits(ctx), _mesa_draw_user_array_bits(ctx),
- velements, vbuffer, num_vbuffers, has_user_vertex_buffers);
+ vp_variant->vert_attrib_mask, _mesa_draw_array_bits(ctx),
+ velements, vbuffer, num_vbuffers);
}
/* ALWAYS_INLINE helps the compiler realize that most of the parameters are
const struct st_common_variant *vp_variant = st->vp_variant;
const GLbitfield inputs_read = vp_variant->vert_attrib_mask;
const GLbitfield dual_slot_inputs = vp->Base.DualSlotInputs;
+ const GLbitfield userbuf_attribs = inputs_read & _mesa_draw_user_array_bits(ctx);
+ bool uses_user_vertex_buffers = userbuf_attribs != 0;
+
+ st->draw_needs_minmax_index =
+ (userbuf_attribs & ~_mesa_draw_nonzero_divisor_bits(ctx)) != 0;
struct pipe_vertex_buffer vbuffer[PIPE_MAX_ATTRIBS];
unsigned num_vbuffers = 0;
struct cso_velems_state velements;
- bool uses_user_vertex_buffers;
/* ST_NEW_VERTEX_ARRAYS */
/* Setup arrays */
setup_arrays<POPCNT, UPDATE>
- (st, ctx->Array._DrawVAO, dual_slot_inputs,
- inputs_read, _mesa_draw_nonzero_divisor_bits(ctx),
- _mesa_draw_array_bits(ctx), _mesa_draw_user_array_bits(ctx),
- &velements, vbuffer, &num_vbuffers, &uses_user_vertex_buffers);
+ (st, ctx->Array._DrawVAO, dual_slot_inputs, inputs_read,
+ _mesa_draw_array_bits(ctx), &velements, vbuffer, &num_vbuffers);
/* _NEW_CURRENT_ATTRIB */
/* Setup zero-stride attribs. */
struct pipe_vertex_buffer vbuffer[PIPE_MAX_ATTRIBS];
unsigned num_vbuffers = 0;
struct cso_velems_state velements;
- bool uses_user_vertex_buffers;
- setup_arrays<POPCNT_NO, UPDATE_ALL>(st, vao, dual_slot_inputs, inputs_read, 0,
- inputs_read, 0, &velements, vbuffer, &num_vbuffers,
- &uses_user_vertex_buffers);
+ setup_arrays<POPCNT_NO, UPDATE_ALL>(st, vao, dual_slot_inputs, inputs_read,
+ inputs_read, &velements, vbuffer, &num_vbuffers);
- if (num_vbuffers != 1 || uses_user_vertex_buffers) {
+ if (num_vbuffers != 1) {
assert(!"this should never happen with display lists");
return NULL;
}