[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