diff options
author | Ian Romanick <ian.d.romanick@intel.com> | 2011-08-21 18:45:06 -0700 |
---|---|---|
committer | Ian Romanick <ian.d.romanick@intel.com> | 2011-08-23 14:52:10 -0700 |
commit | b2184da684fc20849b5e6e554f0a0f92d2872ce9 (patch) | |
tree | 274d202d06beff07e141346deb10f478fc75af10 | |
parent | 6183edc070e2d3dce36ab5ee7aee72b0c38775a7 (diff) |
mesa: Fix incorrect access parameter passed to MapBuffer
The code previously passed GL_DYNAMIC_DRAW for the access parameter.
By inspection, I believe that all drivers would treat this as
GL_READ_WRITE because it's not GL_READ_ONLY and it's not
GL_WRITE_ONLY.
It appears the i965 code wants GL_WRITE_ONLY (it's about to write a
bunch of data in, never read data), while the arrayelt code is
GL_READ_ONLY (just dereffed as arguments to CALL_Whatever*v).
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Keith Whitwell <keithw@vmware.com>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_draw_upload.c | 4 | ||||
-rw-r--r-- | src/mesa/main/api_arrayelt.c | 4 |
2 files changed, 2 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c index 66c42aa0779..9acec45799a 100644 --- a/src/mesa/drivers/dri/i965/brw_draw_upload.c +++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c @@ -689,9 +689,7 @@ static void brw_prepare_indices(struct brw_context *brw) * rebase it into a temporary. */ if ((get_size(index_buffer->type) - 1) & offset) { - GLubyte *map = ctx->Driver.MapBuffer(ctx, - GL_DYNAMIC_DRAW_ARB, - bufferobj); + GLubyte *map = ctx->Driver.MapBuffer(ctx, GL_WRITE_ONLY, bufferobj); map += offset; intel_upload_data(&brw->intel, map, ib_size, ib_type_size, diff --git a/src/mesa/main/api_arrayelt.c b/src/mesa/main/api_arrayelt.c index 6400c8f59d7..8e1e3ff8dd5 100644 --- a/src/mesa/main/api_arrayelt.c +++ b/src/mesa/main/api_arrayelt.c @@ -1602,9 +1602,7 @@ void _ae_map_vbos( struct gl_context *ctx ) _ae_update_state(ctx); for (i = 0; i < actx->nr_vbos; i++) - ctx->Driver.MapBuffer(ctx, - GL_DYNAMIC_DRAW_ARB, - actx->vbo[i]); + ctx->Driver.MapBuffer(ctx, GL_READ_ONLY, actx->vbo[i]); if (actx->nr_vbos) actx->mapped_vbos = GL_TRUE; |