From 95afda39a667553db1e8089a99fbcd40537efd2d Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Tue, 30 Jun 2020 16:29:16 -0400 Subject: panfrost: Allocate space for multisampling As an effective depth. Ugly but matches the blob. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/gallium/drivers/panfrost/pan_resource.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/panfrost/pan_resource.c b/src/gallium/drivers/panfrost/pan_resource.c index 303c4a8da55..d0879ba00c9 100644 --- a/src/gallium/drivers/panfrost/pan_resource.c +++ b/src/gallium/drivers/panfrost/pan_resource.c @@ -272,6 +272,16 @@ panfrost_setup_slices(struct panfrost_resource *pres, size_t *bo_size) unsigned depth = res->depth0; unsigned bytes_per_pixel = util_format_get_blocksize(pres->internal_format); + /* MSAA is implemented as a 3D texture with z corresponding to the + * sample #, horrifyingly enough */ + + bool msaa = res->nr_samples > 1; + + if (msaa) { + assert(depth == 1); + depth = res->nr_samples; + } + assert(depth > 0); /* Tiled operates blockwise; linear is packed. Also, anything @@ -361,7 +371,10 @@ panfrost_setup_slices(struct panfrost_resource *pres, size_t *bo_size) width = u_minify(width, 1); height = u_minify(height, 1); - depth = u_minify(depth, 1); + + /* Don't mipmap the sample count */ + if (!msaa) + depth = u_minify(depth, 1); } assert(res->array_size); -- cgit v1.2.3