[Mesa-dev] [PATCH 2/4] mesa: move FLUSH_VERTICES() call to meta

Timothy Arceri tarceri at itsqueeze.com
Thu Mar 30 11:26:11 UTC 2017


There is no need for this to be in the common code.
---
 src/mesa/drivers/common/meta.c | 11 ++++++-----
 src/mesa/main/varray.c         |  9 ++-------
 src/mesa/main/varray.h         |  2 +-
 3 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
index d8deaaf..d0f8330 100644
--- a/src/mesa/drivers/common/meta.c
+++ b/src/mesa/drivers/common/meta.c
@@ -314,65 +314,66 @@ _mesa_meta_setup_vertex_objects(struct gl_context *ctx,
 
       /* create vertex array buffer */
       *buf_obj = ctx->Driver.NewBufferObject(ctx, 0xDEADBEEF);
       if (*buf_obj == NULL)
          return;
 
       _mesa_buffer_data(ctx, *buf_obj, GL_NONE, 4 * sizeof(struct vertex), NULL,
                         GL_DYNAMIC_DRAW, __func__);
 
       /* setup vertex arrays */
+      FLUSH_VERTICES(ctx, 0);
       if (use_generic_attributes) {
          assert(color_size == 0);
 
          _mesa_update_array_format(ctx, array_obj, VERT_ATTRIB_GENERIC(0),
                                    vertex_size, GL_FLOAT, GL_RGBA, GL_FALSE,
                                    GL_FALSE, GL_FALSE,
-                                   offsetof(struct vertex, x), true);
+                                   offsetof(struct vertex, x));
          _mesa_bind_vertex_buffer(ctx, array_obj, VERT_ATTRIB_GENERIC(0),
                                   *buf_obj, 0, sizeof(struct vertex));
          _mesa_enable_vertex_array_attrib(ctx, array_obj,
                                           VERT_ATTRIB_GENERIC(0));
          if (texcoord_size > 0) {
             _mesa_update_array_format(ctx, array_obj, VERT_ATTRIB_GENERIC(1),
                                       texcoord_size, GL_FLOAT, GL_RGBA,
                                       GL_FALSE, GL_FALSE, GL_FALSE,
-                                      offsetof(struct vertex, tex), false);
+                                      offsetof(struct vertex, tex));
             _mesa_bind_vertex_buffer(ctx, array_obj, VERT_ATTRIB_GENERIC(1),
                                      *buf_obj, 0, sizeof(struct vertex));
             _mesa_enable_vertex_array_attrib(ctx, array_obj,
                                              VERT_ATTRIB_GENERIC(1));
          }
       } else {
          _mesa_update_array_format(ctx, array_obj, VERT_ATTRIB_POS,
                                    vertex_size, GL_FLOAT, GL_RGBA, GL_FALSE,
                                    GL_FALSE, GL_FALSE,
-                                   offsetof(struct vertex, x), true);
+                                   offsetof(struct vertex, x));
          _mesa_bind_vertex_buffer(ctx, array_obj, VERT_ATTRIB_POS,
                                   *buf_obj, 0, sizeof(struct vertex));
          _mesa_enable_vertex_array_attrib(ctx, array_obj, VERT_ATTRIB_POS);
 
          if (texcoord_size > 0) {
             _mesa_update_array_format(ctx, array_obj, VERT_ATTRIB_TEX(0),
                                       vertex_size, GL_FLOAT, GL_RGBA, GL_FALSE,
                                       GL_FALSE, GL_FALSE,
-                                      offsetof(struct vertex, tex), false);
+                                      offsetof(struct vertex, tex));
             _mesa_bind_vertex_buffer(ctx, array_obj, VERT_ATTRIB_TEX(0),
                                      *buf_obj, 0, sizeof(struct vertex));
             _mesa_enable_vertex_array_attrib(ctx, array_obj, VERT_ATTRIB_TEX(0));
          }
 
          if (color_size > 0) {
             _mesa_update_array_format(ctx, array_obj, VERT_ATTRIB_COLOR0,
                                       vertex_size, GL_FLOAT, GL_RGBA, GL_FALSE,
                                       GL_FALSE, GL_FALSE,
-                                      offsetof(struct vertex, r), false);
+                                      offsetof(struct vertex, r));
             _mesa_bind_vertex_buffer(ctx, array_obj, VERT_ATTRIB_COLOR0,
                                      *buf_obj, 0, sizeof(struct vertex));
             _mesa_enable_vertex_array_attrib(ctx, array_obj, VERT_ATTRIB_COLOR0);
          }
       }
    } else {
       _mesa_BindVertexArray(*VAO);
    }
 }
 
diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c
index 92e3f4d..af5abc8 100644
--- a/src/mesa/main/varray.c
+++ b/src/mesa/main/varray.c
@@ -273,31 +273,27 @@ get_legal_types_mask(const struct gl_context *ctx)
  *                       offset.
  * \param flush_verties  Should \c FLUSH_VERTICES be invoked before updating
  *                       state?
  */
 void
 _mesa_update_array_format(struct gl_context *ctx,
                           struct gl_vertex_array_object *vao,
                           GLuint attrib, GLint size, GLenum type,
                           GLenum format, GLboolean normalized,
                           GLboolean integer, GLboolean doubles,
-                          GLuint relativeOffset, bool flush_vertices)
+                          GLuint relativeOffset)
 {
    struct gl_array_attributes *const array = &vao->VertexAttrib[attrib];
    GLint elementSize;
 
    assert(size <= 4);
 
-   if (flush_vertices) {
-      FLUSH_VERTICES(ctx, 0);
-   }
-
    elementSize = _mesa_bytes_per_vertex_attrib(size, type);
    assert(elementSize != -1);
 
    array->Size = size;
    array->Type = type;
    array->Format = format;
    array->Normalized = normalized;
    array->Integer = integer;
    array->Doubles = doubles;
    array->RelativeOffset = relativeOffset;
@@ -432,22 +428,21 @@ update_array_format(struct gl_context *ctx,
       return false;
    }
 
    if (ctx->Extensions.ARB_vertex_type_10f_11f_11f_rev &&
          type == GL_UNSIGNED_INT_10F_11F_11F_REV && size != 3) {
       _mesa_error(ctx, GL_INVALID_OPERATION, "%s(size=%d)", func, size);
       return false;
    }
 
    _mesa_update_array_format(ctx, vao, attrib, size, type, format,
-                             normalized, integer, doubles, relativeOffset,
-                             false);
+                             normalized, integer, doubles, relativeOffset);
 
    return true;
 }
 
 
 /**
  * Do error checking and update state for glVertex/Color/TexCoord/...Pointer
  * functions.
  *
  * \param func  name of calling function used for error reporting
diff --git a/src/mesa/main/varray.h b/src/mesa/main/varray.h
index 8c30d16..9216571 100644
--- a/src/mesa/main/varray.h
+++ b/src/mesa/main/varray.h
@@ -87,21 +87,21 @@ _mesa_attr_zero_aliases_vertex(struct gl_context *ctx)
            || (ctx->API == API_OPENGL_COMPAT
                && !is_forward_compatible_context));
 }
 
 extern void
 _mesa_update_array_format(struct gl_context *ctx,
                           struct gl_vertex_array_object *vao,
                           GLuint attrib, GLint size, GLenum type,
                           GLenum format, GLboolean normalized,
                           GLboolean integer, GLboolean doubles,
-                          GLuint relativeOffset, bool flush_vertices);
+                          GLuint relativeOffset);
 
 extern void
 _mesa_enable_vertex_array_attrib(struct gl_context *ctx,
                                  struct gl_vertex_array_object *vao,
                                  unsigned attrib);
 
 extern void
 _mesa_bind_vertex_buffer(struct gl_context *ctx,
                          struct gl_vertex_array_object *vao,
                          GLuint index,
-- 
2.9.3



More information about the mesa-dev mailing list