[Mesa-dev] [PATCH] mesa: only map src/dest regions in _mesa_copy_buffer_subdata()

Marek Olšák maraeo at gmail.com
Thu Jan 5 06:53:04 PST 2012


I think we can also set MAP_INVALIDATE_RANGE_BIT when mapping the dst
buffer. Looks good otherwise.

Marek

On Wed, Jan 4, 2012 at 10:55 PM, Brian Paul <brianp at vmware.com> wrote:
> We were wastefully mapping the whole source/dest buffers before.
> ---
>  src/mesa/main/bufferobj.c |   12 ++++++------
>  1 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
> index 66957e4..c4a7b8d 100644
> --- a/src/mesa/main/bufferobj.c
> +++ b/src/mesa/main/bufferobj.c
> @@ -502,19 +502,19 @@ _mesa_copy_buffer_subdata(struct gl_context *ctx,
>                           GLintptr readOffset, GLintptr writeOffset,
>                           GLsizeiptr size)
>  {
> -   GLubyte *srcPtr, *dstPtr;
> +   void *srcPtr, *dstPtr;
>
>    /* buffer should not already be mapped */
>    assert(!_mesa_bufferobj_mapped(src));
>    assert(!_mesa_bufferobj_mapped(dst));
>
> -   srcPtr = (GLubyte *) ctx->Driver.MapBufferRange(ctx, 0, src->Size,
> -                                                  GL_MAP_READ_BIT, src);
> -   dstPtr = (GLubyte *) ctx->Driver.MapBufferRange(ctx, 0, dst->Size,
> -                                                  GL_MAP_WRITE_BIT, dst);
> +   srcPtr = ctx->Driver.MapBufferRange(ctx, readOffset, size,
> +                                       GL_MAP_READ_BIT, src);
> +   dstPtr = ctx->Driver.MapBufferRange(ctx, writeOffset, size,
> +                                       GL_MAP_WRITE_BIT, dst);
>
>    if (srcPtr && dstPtr)
> -      memcpy(dstPtr + writeOffset, srcPtr + readOffset, size);
> +      memcpy(dstPtr, srcPtr, size);
>
>    ctx->Driver.UnmapBuffer(ctx, src);
>    ctx->Driver.UnmapBuffer(ctx, dst);
> --
> 1.7.3.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list