From: Brian Paul Date: Mon, 24 Jun 2013 22:15:02 +0000 (-0600) Subject: svga: allow 3D transfers in svga_texture_transfer_map() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0b994961ff58654f330c51caacf9698f7dafd6b6;p=mesa.git svga: allow 3D transfers in svga_texture_transfer_map() Reviewed-by: Jose Fonseca --- diff --git a/src/gallium/drivers/svga/svga_resource_texture.c b/src/gallium/drivers/svga/svga_resource_texture.c index 49509303553..4feca53df07 100644 --- a/src/gallium/drivers/svga/svga_resource_texture.c +++ b/src/gallium/drivers/svga/svga_resource_texture.c @@ -258,7 +258,6 @@ svga_texture_transfer_map(struct pipe_context *pipe, if (usage & PIPE_TRANSFER_MAP_DIRECTLY) return NULL; - assert(box->depth == 1); st = CALLOC_STRUCT(svga_transfer); if (!st) return NULL; @@ -268,19 +267,19 @@ svga_texture_transfer_map(struct pipe_context *pipe, st->base.usage = usage; st->base.box = *box; st->base.stride = nblocksx*util_format_get_blocksize(texture->format); - st->base.layer_stride = 0; + st->base.layer_stride = st->base.stride * nblocksy; st->hw_nblocksy = nblocksy; st->hwbuf = svga_winsys_buffer_create(svga, 1, 0, - st->hw_nblocksy*st->base.stride); + st->hw_nblocksy * st->base.stride * box->depth); while(!st->hwbuf && (st->hw_nblocksy /= 2)) { st->hwbuf = svga_winsys_buffer_create(svga, 1, 0, - st->hw_nblocksy*st->base.stride); + st->hw_nblocksy * st->base.stride * box->depth); } if(!st->hwbuf)