panfrost: Control tiler memory usage
authorAlyssa Rosenzweig <alyssa@collabora.com>
Thu, 31 Mar 2022 14:39:51 +0000 (10:39 -0400)
committerMarge Bot <emma+marge@anholt.net>
Thu, 7 Apr 2022 15:11:04 +0000 (15:11 +0000)
Ensure we don't hit OOM when rendering at 8192x8192 on Valhall by disabling
the smallest bin size of the hierarchy mask.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15795>

src/panfrost/lib/pan_cs.c

index b76d408..76e69f4 100644 (file)
@@ -867,6 +867,15 @@ GENX(pan_emit_tiler_ctx)(const struct panfrost_device *dev,
         pan_pack(out, TILER_CONTEXT, tiler) {
                 /* TODO: Select hierarchy mask more effectively */
                 tiler.hierarchy_mask = (max_levels >= 8) ? 0xFF : 0x28;
+
+                /* For large framebuffers, disable the smallest bin size to
+                 * avoid pathological tiler memory usage. Required to avoid OOM
+                 * on dEQP-GLES31.functional.fbo.no_attachments.maximums.all on
+                 * Mali-G57.
+                 */
+                if (MAX2(fb_width, fb_height) >= 4096)
+                        tiler.hierarchy_mask &= ~1;
+
                 tiler.fb_width = fb_width;
                 tiler.fb_height = fb_height;
                 tiler.heap = heap;