st/mesa: move setting draw_needs_minmax_index into st_update_array_templ
This removes several parameters from setup_array that become unused. Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19783>
This commit is contained in:
@@ -69,8 +69,7 @@ st_setup_arrays(struct st_context *st,
|
||||
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);
|
||||
|
||||
void
|
||||
st_setup_current_user(struct st_context *st,
|
||||
|
||||
@@ -79,22 +79,14 @@ setup_arrays(struct st_context *st,
|
||||
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) {
|
||||
@@ -183,16 +175,14 @@ st_setup_arrays(struct st_context *st,
|
||||
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
|
||||
@@ -317,19 +307,21 @@ st_update_array_templ(struct st_context *st)
|
||||
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. */
|
||||
@@ -407,13 +399,11 @@ st_create_gallium_vertex_state(struct gl_context *ctx,
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -148,9 +148,7 @@ st_feedback_draw_vbo(struct gl_context *ctx,
|
||||
|
||||
/* Must setup these after state validation! */
|
||||
/* Setup arrays */
|
||||
bool uses_user_vertex_buffers;
|
||||
st_setup_arrays(st, vp, vp_variant, &velements, vbuffers, &num_vbuffers,
|
||||
&uses_user_vertex_buffers);
|
||||
st_setup_arrays(st, vp, vp_variant, &velements, vbuffers, &num_vbuffers);
|
||||
/* Setup current values as userspace arrays */
|
||||
st_setup_current_user(st, vp, vp_variant, &velements, vbuffers, &num_vbuffers);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user