----- Original Message -----
> ---
> src/gallium/auxiliary/util/u_transfer.c | 34
> ++++++++++++++++++------------
> 1 files changed, 20 insertions(+), 14 deletions(-)
>
> diff --git a/src/gallium/auxiliary/util/u_transfer.c
> b/src/gallium/auxiliary/util/u_transfer.c
> index 1fa8d94..f1c2a09 100644
> --- a/src/gallium/auxiliary/util/u_transfer.c
> +++ b/src/gallium/auxiliary/util/u_transfer.c
> @@ -18,8 +18,6 @@ void u_default_transfer_inline_write( struct
> pipe_context *pipe,
> {
> struct pipe_transfer *transfer = NULL;
> uint8_t *map = NULL;
> - const uint8_t *src_data = data;
> - unsigned i;
>
> assert(!(usage & PIPE_TRANSFER_READ));
>
> @@ -45,18 +43,26 @@ void u_default_transfer_inline_write( struct
> pipe_context *pipe,
> if (map == NULL)
> goto out;
>
> - for (i = 0; i < box->depth; i++) {
> - util_copy_rect(map,
> - resource->format,
> - transfer->stride, /* bytes */
> - 0, 0,
> - box->width,
> - box->height,
> - src_data,
> - stride, /* bytes */
> - 0, 0);
> - map += transfer->layer_stride;
> - src_data += layer_stride;
> + if (resource->target == PIPE_BUFFER) {
> + memcpy(map, data, box->width);
Not sure if it was email's fault, but indentation looks off.
Please also these sanity checks:
assert(box->width == 1);
assert(box->depth == 1);
Otherwise looks great.
Another alternative would be to have special cases in util_copy_rect for width
== 1 && depth == 1, but I think the special case here is worth it, given the
buffer simplicity.
Jose
_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev