summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>2020-06-30 16:29:16 -0400
committerMarge Bot <eric+marge@anholt.net>2020-07-07 01:13:39 +0000
commit95afda39a667553db1e8089a99fbcd40537efd2d (patch)
tree5a65b7dc4afdd448943e73ce6f8233a627bf7af4
parent37204588dab37c16c24178c881e28976291dd50a (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.c15
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);