From: Charmaine Lee Date: Wed, 30 Aug 2017 21:26:41 +0000 (-0700) Subject: vbo: fix offset in minmax cache key X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2d93b462b4d978b0da417b35a7470e336bc4e783;p=mesa.git vbo: fix offset in minmax cache key Instead of saving primitive offset in the minmax cache key, save the actual buffer offset which is used in the cache lookup. Fixes rendering artifact seen with GoogleEarth when run with VMware driver. v2: Per Brian's comment, initialize offset to avoid compiler warning. Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Brian Paul --- diff --git a/src/mesa/vbo/vbo_minmax_index.c b/src/mesa/vbo/vbo_minmax_index.c index 4c17a086628..58a2af49aca 100644 --- a/src/mesa/vbo/vbo_minmax_index.c +++ b/src/mesa/vbo/vbo_minmax_index.c @@ -245,6 +245,7 @@ vbo_get_minmax_index(struct gl_context *ctx, _mesa_primitive_restart_index(ctx, ib->index_size); const char *indices; GLuint i; + GLintptr offset = 0; indices = (char *) ib->ptr + prim->start * ib->index_size; if (_mesa_is_bufferobj(ib->obj)) { @@ -254,7 +255,8 @@ vbo_get_minmax_index(struct gl_context *ctx, count, min_index, max_index)) return; - indices = ctx->Driver.MapBufferRange(ctx, (GLintptr) indices, size, + offset = indices; + indices = ctx->Driver.MapBufferRange(ctx, offset, size, GL_MAP_READ_BIT, ib->obj, MAP_INTERNAL); } @@ -337,8 +339,8 @@ vbo_get_minmax_index(struct gl_context *ctx, } if (_mesa_is_bufferobj(ib->obj)) { - vbo_minmax_cache_store(ctx, ib->obj, ib->index_size, prim->start, count, - *min_index, *max_index); + vbo_minmax_cache_store(ctx, ib->obj, ib->index_size, offset, + count, *min_index, *max_index); ctx->Driver.UnmapBuffer(ctx, ib->obj, MAP_INTERNAL); } }