const GLbitfield enabled = vao->Enabled;
/* VBO array bits. */
const GLbitfield vbos = vao->VertexAttribBufferMask;
- const GLbitfield divisor_is_nonzero = vao->NonZeroDivisorMask;
-
- /* Compute and store effectively enabled and mapped vbo arrays */
- vao->_EffEnabledVBO = _mesa_vao_enable_to_vp_inputs(mode, enabled & vbos);
- vao->_EffEnabledNonZeroDivisor =
- _mesa_vao_enable_to_vp_inputs(mode, enabled & divisor_is_nonzero);
/* Fast path when the VAO is updated too often. */
if (vao->IsDynamic)
GLbitfield *nonzero_divisor_attribs)
{
const struct gl_vertex_array_object *const vao = ctx->Array._DrawVAO;
+ const gl_attribute_map_mode mode = vao->_AttributeMapMode;
+ /* Enabled array bits. */
+ const GLbitfield enabled = vao->Enabled;
+ /* VBO array bits. */
+ const GLbitfield vbos = vao->VertexAttribBufferMask;
+ const GLbitfield divisor_is_nonzero = vao->NonZeroDivisorMask;
assert(!vao->NewVertexBuffers && !vao->NewVertexElements);
- *enabled_user_attribs = ~vao->_EffEnabledVBO &
- ctx->Array._DrawVAOEnabledAttribs;
- *nonzero_divisor_attribs = vao->_EffEnabledNonZeroDivisor &
- ctx->Array._DrawVAOEnabledAttribs;
+
+ /* Mask of VERT_BIT_* enabled arrays past position/generic0 mapping. */
+ *enabled_user_attribs =
+ ~_mesa_vao_enable_to_vp_inputs(mode, enabled & vbos) &
+ ctx->Array._DrawVAOEnabledAttribs;
+
+ /* Same as above, but for instance divisors. */
+ *nonzero_divisor_attribs =
+ _mesa_vao_enable_to_vp_inputs(mode, enabled & divisor_is_nonzero) &
+ ctx->Array._DrawVAOEnabledAttribs;
}
/**
/* Enabled must be the same than on push */
dest->Enabled = src->Enabled;
dest->_EnabledWithMapMode = src->_EnabledWithMapMode;
- dest->_EffEnabledVBO = src->_EffEnabledVBO;
- dest->_EffEnabledNonZeroDivisor = src->_EffEnabledNonZeroDivisor;
/* The bitmask of bound VBOs needs to match the VertexBinding array */
dest->VertexAttribBufferMask = src->VertexAttribBufferMask;
dest->NonZeroDivisorMask = src->NonZeroDivisorMask;
*/
GLbitfield NonDefaultStateMask;
- /**
- * Mask of VERT_BIT_* enabled arrays past position/generic0 mapping
- *
- * The value is valid past calling _mesa_update_vao_derived_arrays.
- * Note that _mesa_update_vao_derived_arrays is called when binding
- * the VAO to Array._DrawVAO.
- */
- GLbitfield _EffEnabledVBO;
-
- /** Same as _EffEnabledVBO, but for instance divisors. */
- GLbitfield _EffEnabledNonZeroDivisor;
-
/** Denotes the way the position/generic0 attribute is mapped */
gl_attribute_map_mode _AttributeMapMode;