diff options
author | Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> | 2020-06-30 16:29:16 -0400 |
---|---|---|
committer | Marge Bot <eric+marge@anholt.net> | 2020-07-07 01:13:39 +0000 |
commit | 95afda39a667553db1e8089a99fbcd40537efd2d (patch) | |
tree | 5a65b7dc4afdd448943e73ce6f8233a627bf7af4 | |
parent | 37204588dab37c16c24178c881e28976291dd50a (diff) |
panfrost: Allocate space for multisampling
As an effective depth. Ugly but matches the blob.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5782>
-rw-r--r-- | src/gallium/drivers/panfrost/pan_resource.c | 15 |
1 files changed, 14 insertions, 1 deletions
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); |