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>
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user