[Mesa-dev] [PATCH] vbo: fix offset in minmax cache key
Brian Paul
brianp at vmware.com
Thu Aug 31 17:52:53 UTC 2017
Reviewed-by: Brian Paul <brianp at vmware.com>
On 08/30/2017 11:20 PM, Charmaine Lee wrote:
> 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 at lists.freedesktop.org
> ---
> src/mesa/vbo/vbo_minmax_index.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/vbo/vbo_minmax_index.c b/src/mesa/vbo/vbo_minmax_index.c
> index 4c17a08..58a2af4 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);
> }
> }
>
More information about the mesa-dev
mailing list