From e869481ef30d0c3576d402816fa341ea1e21456a Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Wed, 2 Jan 2019 13:24:31 -0500 Subject: [PATCH] freedreno: fix staging resource size for arrays A 2d-array texture (for example), should get the # of array elements from box->depth, rather than depth0 which is minified. Fixes dEQP-GLES3.functional.shaders.texture_functions.texture.sampler2darray_bias_float_fragment with tiled textures. Reported-by: Kristian H. Kristensen Signed-off-by: Rob Clark --- src/gallium/drivers/freedreno/freedreno_resource.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/freedreno/freedreno_resource.c b/src/gallium/drivers/freedreno/freedreno_resource.c index 838881cf150..f19f38add85 100644 --- a/src/gallium/drivers/freedreno/freedreno_resource.c +++ b/src/gallium/drivers/freedreno/freedreno_resource.c @@ -294,8 +294,16 @@ fd_alloc_staging(struct fd_context *ctx, struct fd_resource *rsc, tmpl.width0 = box->width; tmpl.height0 = box->height; - tmpl.depth0 = box->depth; - tmpl.array_size = 1; + /* for array textures, box->depth is the array_size, otherwise + * for 3d textures, it is the depth: + */ + if (tmpl.array_size > 1) { + tmpl.array_size = box->depth; + tmpl.depth0 = 1; + } else { + tmpl.array_size = 1; + tmpl.depth0 = box->depth; + } tmpl.last_level = 0; tmpl.bind |= PIPE_BIND_LINEAR; -- 2.30.2