diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/common/meta.c | 16 | ||||
-rw-r--r-- | src/mesa/main/bufferobj.c | 2 | ||||
-rw-r--r-- | src/mesa/main/varray.c | 15 | ||||
-rw-r--r-- | src/mesa/main/varray.h | 2 |
4 files changed, 19 insertions, 16 deletions
diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index 3d9833dabb8..830d82ad49b 100644 --- a/src/mesa/drivers/common/meta.c +++ b/src/mesa/drivers/common/meta.c @@ -348,7 +348,7 @@ _mesa_meta_setup_vertex_objects(struct gl_context *ctx, GL_FALSE, GL_FALSE, offsetof(struct vertex, x)); _mesa_bind_vertex_buffer(ctx, array_obj, VERT_ATTRIB_GENERIC(0), - *buf_obj, 0, sizeof(struct vertex)); + *buf_obj, 0, sizeof(struct vertex), true); _mesa_enable_vertex_array_attrib(ctx, array_obj, VERT_ATTRIB_GENERIC(0), true); if (texcoord_size > 0) { @@ -357,7 +357,7 @@ _mesa_meta_setup_vertex_objects(struct gl_context *ctx, GL_FALSE, GL_FALSE, GL_FALSE, offsetof(struct vertex, tex)); _mesa_bind_vertex_buffer(ctx, array_obj, VERT_ATTRIB_GENERIC(1), - *buf_obj, 0, sizeof(struct vertex)); + *buf_obj, 0, sizeof(struct vertex), true); _mesa_enable_vertex_array_attrib(ctx, array_obj, VERT_ATTRIB_GENERIC(1), true); } @@ -367,7 +367,7 @@ _mesa_meta_setup_vertex_objects(struct gl_context *ctx, GL_FALSE, GL_FALSE, offsetof(struct vertex, x)); _mesa_bind_vertex_buffer(ctx, array_obj, VERT_ATTRIB_POS, - *buf_obj, 0, sizeof(struct vertex)); + *buf_obj, 0, sizeof(struct vertex), true); _mesa_enable_vertex_array_attrib(ctx, array_obj, VERT_ATTRIB_POS, true); @@ -377,7 +377,7 @@ _mesa_meta_setup_vertex_objects(struct gl_context *ctx, GL_FALSE, GL_FALSE, offsetof(struct vertex, tex)); _mesa_bind_vertex_buffer(ctx, array_obj, VERT_ATTRIB_TEX(0), - *buf_obj, 0, sizeof(struct vertex)); + *buf_obj, 0, sizeof(struct vertex), true); _mesa_enable_vertex_array_attrib(ctx, array_obj, VERT_ATTRIB_TEX(0), true); } @@ -388,7 +388,7 @@ _mesa_meta_setup_vertex_objects(struct gl_context *ctx, GL_FALSE, GL_FALSE, offsetof(struct vertex, r)); _mesa_bind_vertex_buffer(ctx, array_obj, VERT_ATTRIB_COLOR0, - *buf_obj, 0, sizeof(struct vertex)); + *buf_obj, 0, sizeof(struct vertex), true); _mesa_enable_vertex_array_attrib(ctx, array_obj, VERT_ATTRIB_COLOR0, true); } @@ -3347,7 +3347,8 @@ _mesa_meta_DrawTex(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z, GL_FALSE, GL_FALSE, offsetof(struct vertex, x)); _mesa_bind_vertex_buffer(ctx, array_obj, VERT_ATTRIB_POS, - drawtex->buf_obj, 0, sizeof(struct vertex)); + drawtex->buf_obj, 0, + sizeof(struct vertex), true); _mesa_enable_vertex_array_attrib(ctx, array_obj, VERT_ATTRIB_POS, true); @@ -3358,7 +3359,8 @@ _mesa_meta_DrawTex(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z, GL_FALSE, GL_FALSE, offsetof(struct vertex, st[i])); _mesa_bind_vertex_buffer(ctx, array_obj, VERT_ATTRIB_TEX(i), - drawtex->buf_obj, 0, sizeof(struct vertex)); + drawtex->buf_obj, 0, + sizeof(struct vertex), true); _mesa_enable_vertex_array_attrib(ctx, array_obj, VERT_ATTRIB_TEX(i), true); } diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c index 67f9cd0a902..068c7dd434d 100644 --- a/src/mesa/main/bufferobj.c +++ b/src/mesa/main/bufferobj.c @@ -1167,7 +1167,7 @@ unbind(struct gl_context *ctx, if (vao->BufferBinding[index].BufferObj == obj) { _mesa_bind_vertex_buffer(ctx, vao, index, ctx->Shared->NullBufferObj, vao->BufferBinding[index].Offset, - vao->BufferBinding[index].Stride); + vao->BufferBinding[index].Stride, true); } } diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c index f7d32fdbefc..bcd78373f50 100644 --- a/src/mesa/main/varray.c +++ b/src/mesa/main/varray.c @@ -194,7 +194,7 @@ _mesa_bind_vertex_buffer(struct gl_context *ctx, struct gl_vertex_array_object *vao, GLuint index, struct gl_buffer_object *vbo, - GLintptr offset, GLsizei stride) + GLintptr offset, GLsizei stride, bool flush_vertices) { assert(index < ARRAY_SIZE(vao->BufferBinding)); struct gl_vertex_buffer_binding *binding = &vao->BufferBinding[index]; @@ -202,8 +202,9 @@ _mesa_bind_vertex_buffer(struct gl_context *ctx, if (binding->BufferObj != vbo || binding->Offset != offset || binding->Stride != stride) { - - FLUSH_VERTICES(ctx, _NEW_ARRAY); + if (flush_vertices) { + FLUSH_VERTICES(ctx, _NEW_ARRAY); + } _mesa_reference_buffer_object(ctx, &binding->BufferObj, vbo); @@ -605,7 +606,7 @@ update_array(struct gl_context *ctx, GLsizei effectiveStride = stride != 0 ? stride : array->_ElementSize; _mesa_bind_vertex_buffer(ctx, vao, attrib, ctx->Array.ArrayBufferObj, (GLintptr) ptr, - effectiveStride); + effectiveStride, true); } void GLAPIENTRY @@ -2118,7 +2119,7 @@ vertex_array_vertex_buffer(struct gl_context *ctx, } _mesa_bind_vertex_buffer(ctx, vao, VERT_ATTRIB_GENERIC(bindingIndex), - vbo, offset, stride); + vbo, offset, stride, true); } @@ -2270,7 +2271,7 @@ vertex_array_vertex_buffers(struct gl_context *ctx, for (i = 0; i < count; i++) _mesa_bind_vertex_buffer(ctx, vao, VERT_ATTRIB_GENERIC(first + i), - vbo, 0, 16); + vbo, 0, 16, true); return; } @@ -2344,7 +2345,7 @@ vertex_array_vertex_buffers(struct gl_context *ctx, } _mesa_bind_vertex_buffer(ctx, vao, VERT_ATTRIB_GENERIC(first + i), - vbo, offsets[i], strides[i]); + vbo, offsets[i], strides[i], true); } _mesa_HashUnlockMutex(ctx->Shared->BufferObjects); diff --git a/src/mesa/main/varray.h b/src/mesa/main/varray.h index 65853557714..b65b82cea7d 100644 --- a/src/mesa/main/varray.h +++ b/src/mesa/main/varray.h @@ -132,7 +132,7 @@ _mesa_bind_vertex_buffer(struct gl_context *ctx, struct gl_vertex_array_object *vao, GLuint index, struct gl_buffer_object *vbo, - GLintptr offset, GLsizei stride); + GLintptr offset, GLsizei stride, bool flush_vertices); extern void GLAPIENTRY _mesa_VertexPointer_no_error(GLint size, GLenum type, GLsizei stride, |