From: Eric Anholt Date: Wed, 18 May 2016 19:29:02 +0000 (-0700) Subject: vc4: Size transfer temporary mappings appropriately for full maps of 3D. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a507dcc1601d436f6b68fc59a8a8393773d6fd8b;p=mesa.git vc4: Size transfer temporary mappings appropriately for full maps of 3D. We don't really support reading/writing of 3D textures since the hardware doesn't do 3D, but we do need to make sure that a pipe_transfer for them has enough space to store the image. This was previously not a problem because the state tracker only mapped a slice at a time until fb9fe352ea41c7e3633ba2c483c59b73c529845b. Fixes glean glsl1 tests, which all have setup of a 3D texture at the start. --- diff --git a/src/gallium/drivers/vc4/vc4_resource.c b/src/gallium/drivers/vc4/vc4_resource.c index a360e192b3f..20f137a8e17 100644 --- a/src/gallium/drivers/vc4/vc4_resource.c +++ b/src/gallium/drivers/vc4/vc4_resource.c @@ -294,9 +294,9 @@ vc4_resource_transfer_map(struct pipe_context *pctx, ptrans->box.height = align(ptrans->box.height, utile_h); ptrans->stride = ptrans->box.width * rsc->cpp; - ptrans->layer_stride = ptrans->stride; + ptrans->layer_stride = ptrans->stride * ptrans->box.height; - trans->map = malloc(ptrans->stride * ptrans->box.height); + trans->map = malloc(ptrans->layer_stride * ptrans->box.depth); if (usage & PIPE_TRANSFER_READ || ptrans->box.width != orig_width || ptrans->box.height != orig_height) {