From b2184da684fc20849b5e6e554f0a0f92d2872ce9 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Sun, 21 Aug 2011 18:45:06 -0700 Subject: [PATCH] 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 Reviewed-by: Brian Paul Acked-by: Kenneth Graunke Reviewed-by: Eric Anholt Reviewed-by: Keith Whitwell --- src/mesa/drivers/dri/i965/brw_draw_upload.c | 4 +--- 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 66c42aa..9acec45 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 6400c8f..8e1e3ff 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; -- 2.7.4