summaryrefslogtreecommitdiffstats
path: root/src/mesa/vbo/vbo_save_api.c
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2012-02-07 13:08:53 -0700
committerBrian Paul <[email protected]>2012-02-09 08:18:50 -0700
commit781f84a3c2f7a06cb9e6cc44b8d5d08b39577c25 (patch)
treeaaea2a928d53df2ccc60332216b4b2cb65ac368e /src/mesa/vbo/vbo_save_api.c
parent8b4f7b0672d663273310fffa9490ad996f5b914a (diff)
vbo: unmap vertex store before executing lists
We don't want our VBOs mapped when we're drawing. This change checks if the vertex store VBO is mapped before we execute a list, unmaps it, then remaps it after drawing. This situation pops up when building a nested display list in GL_COMPILE_AND_EXECUTE mode. Reviewed-by: Eric Anholt <[email protected]>
Diffstat (limited to 'src/mesa/vbo/vbo_save_api.c')
-rw-r--r--src/mesa/vbo/vbo_save_api.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/mesa/vbo/vbo_save_api.c b/src/mesa/vbo/vbo_save_api.c
index 9521367475e..13604333e95 100644
--- a/src/mesa/vbo/vbo_save_api.c
+++ b/src/mesa/vbo/vbo_save_api.c
@@ -237,9 +237,9 @@ free_vertex_store(struct gl_context *ctx,
}
-static GLfloat *
-map_vertex_store(struct gl_context *ctx,
- struct vbo_save_vertex_store *vertex_store)
+GLfloat *
+vbo_save_map_vertex_store(struct gl_context *ctx,
+ struct vbo_save_vertex_store *vertex_store)
{
assert(vertex_store->bufferobj);
assert(!vertex_store->buffer);
@@ -259,9 +259,9 @@ map_vertex_store(struct gl_context *ctx,
}
-static void
-unmap_vertex_store(struct gl_context *ctx,
- struct vbo_save_vertex_store *vertex_store)
+void
+vbo_save_unmap_vertex_store(struct gl_context *ctx,
+ struct vbo_save_vertex_store *vertex_store)
{
if (vertex_store->bufferobj->Size > 0) {
ctx->Driver.UnmapBuffer(ctx, vertex_store->bufferobj);
@@ -407,7 +407,7 @@ _save_compile_vertex_list(struct gl_context *ctx)
/* Unmap old store:
*/
- unmap_vertex_store(ctx, save->vertex_store);
+ vbo_save_unmap_vertex_store(ctx, save->vertex_store);
/* Release old reference:
*/
@@ -418,7 +418,7 @@ _save_compile_vertex_list(struct gl_context *ctx)
/* Allocate and map new store:
*/
save->vertex_store = alloc_vertex_store(ctx);
- save->buffer_ptr = map_vertex_store(ctx, save->vertex_store);
+ save->buffer_ptr = vbo_save_map_vertex_store(ctx, save->vertex_store);
save->out_of_memory = save->buffer_ptr == NULL;
}
@@ -1398,7 +1398,7 @@ vbo_save_NewList(struct gl_context *ctx, GLuint list, GLenum mode)
if (!save->vertex_store)
save->vertex_store = alloc_vertex_store(ctx);
- save->buffer_ptr = map_vertex_store(ctx, save->vertex_store);
+ save->buffer_ptr = vbo_save_map_vertex_store(ctx, save->vertex_store);
_save_reset_vertex(ctx);
_save_reset_counters(ctx);
@@ -1435,7 +1435,7 @@ vbo_save_EndList(struct gl_context *ctx)
_mesa_install_save_vtxfmt(ctx, &ctx->ListState.ListVtxfmt);
}
- unmap_vertex_store(ctx, save->vertex_store);
+ vbo_save_unmap_vertex_store(ctx, save->vertex_store);
assert(save->vertex_size == 0);
}