diff options
author | marha <marha@users.sourceforge.net> | 2011-03-02 10:53:27 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2011-03-02 10:53:27 +0000 |
commit | 43fb99508848b8e9f4ced9a7e7a6c3692047fbf1 (patch) | |
tree | 8cba41c6dda06adfd2a2f88eff6e54ab6d4204cf /mesalib/src/mesa/vbo/vbo_exec_api.c | |
parent | 717b1a4e21b372e1343e33ae9348fbe5c6f8d7ed (diff) | |
parent | 56950d7bed70ee82186f44f9333537cdbb33c448 (diff) | |
download | vcxsrv-43fb99508848b8e9f4ced9a7e7a6c3692047fbf1.tar.gz vcxsrv-43fb99508848b8e9f4ced9a7e7a6c3692047fbf1.tar.bz2 vcxsrv-43fb99508848b8e9f4ced9a7e7a6c3692047fbf1.zip |
svn merge ^/branches/released .
Diffstat (limited to 'mesalib/src/mesa/vbo/vbo_exec_api.c')
-rw-r--r-- | mesalib/src/mesa/vbo/vbo_exec_api.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/mesalib/src/mesa/vbo/vbo_exec_api.c b/mesalib/src/mesa/vbo/vbo_exec_api.c index bb366b272..790310903 100644 --- a/mesalib/src/mesa/vbo/vbo_exec_api.c +++ b/mesalib/src/mesa/vbo/vbo_exec_api.c @@ -423,7 +423,7 @@ do { \ } while (0)
-#define ERROR() _mesa_error( ctx, GL_INVALID_ENUM, __FUNCTION__ )
+#define ERROR(err) _mesa_error( ctx, err, __FUNCTION__ )
#define TAG(x) vbo_##x
#include "vbo_attrib_tmp.h"
@@ -839,6 +839,19 @@ void vbo_use_buffer_objects(struct gl_context *ctx) }
+/**
+ * If this function is called, all VBO buffers will be unmapped when
+ * we flush.
+ * Otherwise, if a simple command like glColor3f() is called and we flush,
+ * the current VBO may be left mapped.
+ */
+void
+vbo_always_unmap_buffers(struct gl_context *ctx)
+{
+ struct vbo_exec_context *exec = &vbo_context(ctx)->exec;
+ exec->begin_vertices_flags |= FLUSH_STORED_VERTICES;
+}
+
void vbo_exec_vtx_init( struct vbo_exec_context *exec )
{
@@ -894,6 +907,8 @@ void vbo_exec_vtx_init( struct vbo_exec_context *exec ) }
exec->vtx.vertex_size = 0;
+
+ exec->begin_vertices_flags = FLUSH_UPDATE_CURRENT;
}
@@ -942,7 +957,9 @@ void vbo_exec_BeginVertices( struct gl_context *ctx ) vbo_exec_vtx_map( exec );
assert((ctx->Driver.NeedFlush & FLUSH_UPDATE_CURRENT) == 0);
- ctx->Driver.NeedFlush |= FLUSH_UPDATE_CURRENT;
+ assert(exec->begin_vertices_flags);
+
+ ctx->Driver.NeedFlush |= exec->begin_vertices_flags;
}
@@ -1045,7 +1062,7 @@ VertexAttrib4f_nopos(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) if (index < MAX_VERTEX_GENERIC_ATTRIBS)
ATTR(VBO_ATTRIB_GENERIC0 + index, 4, x, y, z, w);
else
- ERROR();
+ ERROR(GL_INVALID_VALUE);
}
void GLAPIENTRY
|