diff options
author | Marek Olšák <[email protected]> | 2011-04-21 12:54:56 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2011-04-21 15:51:18 +0200 |
commit | f9dafcb8f242a6f0d06ff3dcb2d4bb7d73b91b57 (patch) | |
tree | 8fd7a9804abc5c017d58853edade58045d6874cf /src/mesa | |
parent | 883d8a0b449b53d83cc5970d2ce50df536aef55f (diff) |
st/mesa: implement CopyBufferSubData using resource_copy_region
Reviewed-by: Jakob Bornecrantz <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/state_tracker/st_cb_bufferobjects.c | 23 |
1 files changed, 4 insertions, 19 deletions
diff --git a/src/mesa/state_tracker/st_cb_bufferobjects.c b/src/mesa/state_tracker/st_cb_bufferobjects.c index b9b606d539c..1e489b29d93 100644 --- a/src/mesa/state_tracker/st_cb_bufferobjects.c +++ b/src/mesa/state_tracker/st_cb_bufferobjects.c @@ -408,9 +408,7 @@ st_copy_buffer_subdata(struct gl_context *ctx, struct pipe_context *pipe = st_context(ctx)->pipe; struct st_buffer_object *srcObj = st_buffer_object(src); struct st_buffer_object *dstObj = st_buffer_object(dst); - struct pipe_transfer *src_transfer; - struct pipe_transfer *dst_transfer; - ubyte *srcPtr, *dstPtr; + struct pipe_box box; if(!size) return; @@ -419,23 +417,10 @@ st_copy_buffer_subdata(struct gl_context *ctx, assert(!src->Pointer); assert(!dst->Pointer); - srcPtr = (ubyte *) pipe_buffer_map_range(pipe, - srcObj->buffer, - readOffset, size, - PIPE_TRANSFER_READ, - &src_transfer); + u_box_1d(readOffset, size, &box); - dstPtr = (ubyte *) pipe_buffer_map_range(pipe, - dstObj->buffer, - writeOffset, size, - PIPE_TRANSFER_WRITE, - &dst_transfer); - - if (srcPtr && dstPtr) - memcpy(dstPtr + writeOffset, srcPtr + readOffset, size); - - pipe_buffer_unmap(pipe, src_transfer); - pipe_buffer_unmap(pipe, dst_transfer); + pipe->resource_copy_region(pipe, dstObj->buffer, 0, writeOffset, 0, 0, + srcObj->buffer, 0, &box); } |