These intermediate dirty flags are unnecessary now.
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19953>
{
assert(!vao->IsDynamic);
/* Make sure we do not run into problems with shared objects */
- assert(!vao->SharedAndImmutable || (!vao->NewVertexBuffers && !vao->NewVertexElements));
+ assert(!vao->SharedAndImmutable);
/* Limit used for common binding scanning below. */
const GLsizeiptr MaxRelativeOffset =
struct gl_vertex_array_object *vao)
{
_mesa_update_vao_derived_arrays(ctx, vao);
- vao->NewVertexBuffers = false;
- vao->NewVertexElements = false;
vao->SharedAndImmutable = true;
}
const GLbitfield enabled_nonuser = enabled & vao->VertexAttribBufferMask;
const GLbitfield enabled_nonzero_divisor = enabled & vao->NonZeroDivisorMask;
- assert(!vao->NewVertexBuffers && !vao->NewVertexElements);
-
*enabled_user_attribs = ~enabled_nonuser &
ctx->Array._DrawVAOEnabledAttribs;
*nonzero_divisor_attribs = enabled_nonzero_divisor &
_mesa_draw_buffer_binding_from_attrib(const struct gl_vertex_array_object *vao,
const struct gl_array_attributes *attrib)
{
- assert(!vao->NewVertexBuffers && !vao->NewVertexElements);
return &vao->BufferBinding[attrib->_EffBufferBindingIndex];
}
_mesa_draw_array_attrib(const struct gl_vertex_array_object *vao,
gl_vert_attrib attr)
{
- assert(!vao->NewVertexBuffers && !vao->NewVertexElements);
const gl_attribute_map_mode map_mode = vao->_AttributeMapMode;
return &vao->VertexAttrib[_mesa_vao_attribute_map[map_mode][attr]];
}
dest->VertexAttribBufferMask = src->VertexAttribBufferMask;
dest->NonZeroDivisorMask = src->NonZeroDivisorMask;
dest->_AttributeMapMode = src->_AttributeMapMode;
- dest->NewVertexBuffers = src->NewVertexBuffers;
- dest->NewVertexElements = src->NewVertexElements;
/* skip NumUpdates and IsDynamic because they can only increase, not decrease */
}
struct gl_vertex_array_object *vao = ctx->Array._DrawVAO;
bool new_vertex_buffers = false, new_vertex_elements = false;
- if (vao->NewVertexBuffers || vao->NewVertexElements) {
- new_vertex_buffers |= vao->NewVertexBuffers;
- new_vertex_elements |= vao->NewVertexElements;
- vao->NewVertexBuffers = false;
- vao->NewVertexElements = false;
- }
-
assert(vao->_EnabledWithMapMode ==
_mesa_vao_enable_to_vp_inputs(vao->_AttributeMapMode, vao->Enabled));
/** "Enabled" with the position/generic0 attribute aliasing resolved */
GLbitfield _EnabledWithMapMode;
- /** Which states have been changed according to the gallium definitions. */
- bool NewVertexBuffers;
- bool NewVertexElements;
-
/** The index buffer (also known as the element array buffer in OpenGL). */
struct gl_buffer_object *IndexBufferObj;
};
array->BufferBindingIndex = bindingIndex;
if (vao->Enabled & array_bit) {
- vao->NewVertexBuffers = true;
- vao->NewVertexElements = true;
+ ctx->NewDriverState |= ST_NEW_VERTEX_ARRAYS;
+ ctx->Array.NewVertexElements = true;
}
vao->NonDefaultStateMask |= array_bit | BITFIELD_BIT(bindingIndex);
}
if (vao->Enabled & binding->_BoundArrays) {
- vao->NewVertexBuffers = true;
+ ctx->NewDriverState |= ST_NEW_VERTEX_ARRAYS;
/* Non-dynamic VAOs merge vertex buffers, which affects vertex elements. */
if (!vao->IsDynamic)
- vao->NewVertexElements = true;
+ ctx->Array.NewVertexElements = true;
}
vao->NonDefaultStateMask |= BITFIELD_BIT(index);
vao->NonZeroDivisorMask &= ~binding->_BoundArrays;
if (vao->Enabled & binding->_BoundArrays) {
- vao->NewVertexBuffers = true;
- vao->NewVertexElements = true;
+ ctx->NewDriverState |= ST_NEW_VERTEX_ARRAYS;
+ ctx->Array.NewVertexElements = true;
}
vao->NonDefaultStateMask |= BITFIELD_BIT(bindingIndex);
array->RelativeOffset = relativeOffset;
array->Format = new_format;
- if (vao->Enabled & VERT_BIT(attrib))
- vao->NewVertexElements = true;
+ if (vao->Enabled & VERT_BIT(attrib)) {
+ ctx->NewDriverState |= ST_NEW_VERTEX_ARRAYS;
+ ctx->Array.NewVertexElements = true;
+ }
vao->NonDefaultStateMask |= BITFIELD_BIT(attrib);
}
array->Ptr = ptr;
if (vao->Enabled & VERT_BIT(attrib)) {
- vao->NewVertexBuffers = true;
+ ctx->NewDriverState |= ST_NEW_VERTEX_ARRAYS;
/* Non-dynamic VAOs merge vertex buffers, which affects vertex elements. */
if (!vao->IsDynamic)
- vao->NewVertexElements = true;
+ ctx->Array.NewVertexElements = true;
}
vao->NonDefaultStateMask |= BITFIELD_BIT(attrib);
if (attrib_bits) {
/* was disabled, now being enabled */
vao->Enabled |= attrib_bits;
- vao->NewVertexBuffers = true;
- vao->NewVertexElements = true;
vao->NonDefaultStateMask |= attrib_bits;
+ ctx->NewDriverState |= ST_NEW_VERTEX_ARRAYS;
+ ctx->Array.NewVertexElements = true;
/* Update the map mode if needed */
if (attrib_bits & (VERT_BIT_POS|VERT_BIT_GENERIC0))
if (attrib_bits) {
/* was enabled, now being disabled */
vao->Enabled &= ~attrib_bits;
- vao->NewVertexBuffers = true;
- vao->NewVertexElements = true;
+ ctx->NewDriverState |= ST_NEW_VERTEX_ARRAYS;
+ ctx->Array.NewVertexElements = true;
/* Update the map mode if needed */
if (attrib_bits & (VERT_BIT_POS|VERT_BIT_GENERIC0))
* Just plug in position pointer now.
*/
rs->VAO->VertexAttrib[VERT_ATTRIB_POS].Ptr = (GLubyte *) v;
- rs->VAO->NewVertexBuffers = true;
+ ctx->NewDriverState |= ST_NEW_VERTEX_ARRAYS;
+
/* Non-dynamic VAOs merge vertex buffers, which changes vertex elements. */
- if (!rs->VAO->IsDynamic)
- rs->VAO->NewVertexElements = true;
+ if (!rs->VAO->IsDynamic) {
+ ctx->Array.NewVertexElements = true;
+ }
/* Save the Draw VAO before we override it. */
struct gl_vertex_array_object *old_vao;
#include "vbo/vbo_save.h"
#include "main/varray.h"
#include "main/macros.h"
+#include "state_tracker/st_atom.h"
struct _glapi_table;
GL_FALSE, integer, doubles, offset);
if (vao->Enabled & VERT_BIT(attr)) {
- vao->NewVertexBuffers = true;
- vao->NewVertexElements = true;
+ ctx->NewDriverState |= ST_NEW_VERTEX_ARRAYS;
+ ctx->Array.NewVertexElements = true;
}
vao->VertexAttrib[attr].Ptr = ADD_POINTERS(buffer_offset, offset);