[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