Mesa (gallium-map-range): mesa: Massage the interface to more closely resemble ARB_map_buffer_range
Jose Fonseca
jrfonseca at kemper.freedesktop.org
Tue Mar 3 18:53:52 UTC 2009
Module: Mesa
Branch: gallium-map-range
Commit: 004d8f11882c6c149a395cf2e86d5d5fb3fa114b
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=004d8f11882c6c149a395cf2e86d5d5fb3fa114b
Author: José Fonseca <jfonseca at vmware.com>
Date: Tue Mar 3 18:52:51 2009 +0000
mesa: Massage the interface to more closely resemble ARB_map_buffer_range
---
src/mesa/state_tracker/st_cb_bufferobjects.c | 9 +++++++--
src/mesa/vbo/vbo_exec_draw.c | 7 ++-----
2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/mesa/state_tracker/st_cb_bufferobjects.c b/src/mesa/state_tracker/st_cb_bufferobjects.c
index 28e387c..526fc95 100644
--- a/src/mesa/state_tracker/st_cb_bufferobjects.c
+++ b/src/mesa/state_tracker/st_cb_bufferobjects.c
@@ -218,6 +218,7 @@ st_bufferobj_map_range(GLcontext *ctx, GLenum target,
struct pipe_context *pipe = st_context(ctx)->pipe;
struct st_buffer_object *st_obj = st_buffer_object(obj);
GLuint flags = 0;
+ char *map;
if (access & GL_MAP_WRITE_BIT)
flags |= PIPE_BUFFER_USAGE_CPU_WRITE;
@@ -231,8 +232,12 @@ st_bufferobj_map_range(GLcontext *ctx, GLenum target,
if (access & MESA_MAP_NOWAIT_BIT)
flags |= PIPE_BUFFER_USAGE_DONTBLOCK;
- obj->Pointer = pipe_buffer_map(pipe->screen, st_obj->buffer, flags);
- return obj->Pointer;
+ map = pipe_buffer_map_range(pipe->screen, st_obj->buffer, offset, length, flags);
+ /* FIXME: some code expects this to point to the buffer start, which means that
+ * the range might not be respected in all circumstances
+ */
+ obj->Pointer = map ? map - offset : NULL;
+ return map;
}
diff --git a/src/mesa/vbo/vbo_exec_draw.c b/src/mesa/vbo/vbo_exec_draw.c
index 38b6c56..b08909c 100644
--- a/src/mesa/vbo/vbo_exec_draw.c
+++ b/src/mesa/vbo/vbo_exec_draw.c
@@ -281,11 +281,8 @@ void vbo_exec_vtx_map( struct vbo_exec_context *exec )
MESA_MAP_NOWAIT_BIT),
exec->vtx.bufferobj);
}
-
- if (exec->vtx.buffer_map) {
- exec->vtx.buffer_map += exec->vtx.buffer_used / sizeof(float);
- }
- else {
+
+ if (!exec->vtx.buffer_map) {
exec->vtx.buffer_used = 0;
ctx->Driver.BufferData(ctx, target,
More information about the mesa-commit
mailing list