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

Brian Paul brianp at vmware.com
Thu Jan 5 07:13:00 PST 2012


On 01/05/2012 07:53 AM, Marek Olšák wrote:
> I think we can also set MAP_INVALIDATE_RANGE_BIT when mapping the dst
> buffer. Looks good otherwise.

Right.  I'll add that before pushing.

-Brian


> 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