panfrost: Drop panfrost_vt_emit_shared_memory

Let's reuse the same routines across Midgard/Bifrost so we get proper
handling of spilling.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7206>
diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c
index 0f7987b..83234bd 100644
--- a/src/gallium/drivers/panfrost/pan_cmdstream.c
+++ b/src/gallium/drivers/panfrost/pan_cmdstream.c
@@ -52,32 +52,6 @@
                PAN_BO_ACCESS_VERTEX_TILER;
 }
 
-mali_ptr
-panfrost_vt_emit_shared_memory(struct panfrost_batch *batch)
-{
-        struct panfrost_device *dev = pan_device(batch->ctx->base.screen);
-
-        struct panfrost_ptr t =
-                panfrost_pool_alloc_aligned(&batch->pool,
-                                            MALI_LOCAL_STORAGE_LENGTH,
-                                            64);
-
-        pan_pack(t.cpu, LOCAL_STORAGE, ls) {
-                ls.wls_instances = MALI_LOCAL_STORAGE_NO_WORKGROUP_MEM;
-                if (batch->stack_size) {
-                        struct panfrost_bo *stack =
-                                panfrost_batch_get_scratchpad(batch, batch->stack_size,
-                                                              dev->thread_tls_alloc,
-                                                              dev->core_count);
-
-                        ls.tls_size = panfrost_get_stack_shift(batch->stack_size);
-                        ls.tls_base_pointer = stack->ptr.gpu;
-                }
-        }
-
-        return t.gpu;
-}
-
 /* Gets a GPU address for the associated index buffer. Only gauranteed to be
  * good for the duration of the draw (transient), could last longer. Also get
  * the bounds on the index buffer for the range accessed by the draw. We do
diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.h b/src/gallium/drivers/panfrost/pan_cmdstream.h
index 6ed36bd..dfc67da 100644
--- a/src/gallium/drivers/panfrost/pan_cmdstream.h
+++ b/src/gallium/drivers/panfrost/pan_cmdstream.h
@@ -66,9 +66,6 @@
                           mali_ptr *buffers);
 
 mali_ptr
-panfrost_vt_emit_shared_memory(struct panfrost_batch *batch);
-
-mali_ptr
 panfrost_get_index_buffer_bounded(struct panfrost_context *ctx,
                                   const struct pipe_draw_info *info,
                                   unsigned *min_index, unsigned *max_index);
diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index 588b5f6..3ff1d75 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -483,9 +483,7 @@
 
         unsigned vertex_count = ctx->vertex_count;
 
-        mali_ptr shared_mem = is_bifrost ?
-                panfrost_vt_emit_shared_memory(batch) :
-                panfrost_batch_reserve_framebuffer(batch);
+        mali_ptr shared_mem = panfrost_batch_reserve_framebuffer(batch);
 
         unsigned min_index = 0, max_index = 0;
         mali_ptr indices = 0;
diff --git a/src/gallium/drivers/panfrost/pan_job.c b/src/gallium/drivers/panfrost/pan_job.c
index 8170ba1..22b0b34 100644
--- a/src/gallium/drivers/panfrost/pan_job.c
+++ b/src/gallium/drivers/panfrost/pan_job.c
@@ -727,25 +727,26 @@
 {
         struct panfrost_device *dev = pan_device(batch->ctx->base.screen);
 
-        /* If we haven't, reserve space for the framebuffer */
+        /* If we haven't, reserve space for the thread storage descriptor (or a
+         * full framebuffer descriptor on Midgard) */
 
         if (!batch->framebuffer.gpu) {
-                unsigned size = (dev->quirks & MIDGARD_SFBD) ?
+                unsigned size = (dev->quirks & IS_BIFROST) ?
+                        MALI_LOCAL_STORAGE_LENGTH :
+                        (dev->quirks & MIDGARD_SFBD) ?
                         MALI_SINGLE_TARGET_FRAMEBUFFER_LENGTH :
                         MALI_MULTI_TARGET_FRAMEBUFFER_LENGTH;
 
                 batch->framebuffer = panfrost_pool_alloc_aligned(&batch->pool, size, 64);
 
                 /* Tag the pointer */
-                if (!(dev->quirks & MIDGARD_SFBD))
+                if (!(dev->quirks & (MIDGARD_SFBD | IS_BIFROST)))
                         batch->framebuffer.gpu |= MALI_FBD_TAG_IS_MFBD;
         }
 
         return batch->framebuffer.gpu;
 }
 
-
-
 static void
 panfrost_load_surface(struct panfrost_batch *batch, struct pipe_surface *surf, unsigned loc)
 {
@@ -863,7 +864,7 @@
                         panfrost_batch_get_bifrost_tiler(batch, vertex_count);
                 panfrost_load_bifrost(&batch->pool, &batch->scoreboard,
                                       blend_shader,
-                                      panfrost_vt_emit_shared_memory(batch),
+                                      batch->framebuffer.gpu,
                                       tiler,
                                       transfer.gpu, vertex_count,
                                       &img, loc);
diff --git a/src/gallium/drivers/panfrost/pan_mfbd.c b/src/gallium/drivers/panfrost/pan_mfbd.c
index 27b7896..01c4ef0 100644
--- a/src/gallium/drivers/panfrost/pan_mfbd.c
+++ b/src/gallium/drivers/panfrost/pan_mfbd.c
@@ -556,10 +556,10 @@
         struct panfrost_device *dev = pan_device(batch->ctx->base.screen);
         void *fb = batch->framebuffer.cpu;
 
+        panfrost_mfbd_emit_local_storage(batch, fb);
+
         if (dev->quirks & IS_BIFROST)
-                panfrost_mfbd_emit_bifrost_parameters(batch, fb);
-        else
-                panfrost_mfbd_emit_local_storage(batch, fb);
+                return;
 
         pan_section_pack(fb, MULTI_TARGET_FRAMEBUFFER, PARAMETERS, params) {
                 params.width = batch->key.width;
@@ -572,10 +572,7 @@
                 params.render_target_count = MAX2(batch->key.nr_cbufs, 1);
         }
 
-        if (dev->quirks & IS_BIFROST)
-                panfrost_mfbd_emit_bifrost_tiler(batch, fb, vertex_count);
-        else
-                panfrost_mfbd_emit_midgard_tiler(batch, fb, vertex_count);
+        panfrost_mfbd_emit_midgard_tiler(batch, fb, vertex_count);
 }
 
 /* Creates an MFBD for the FRAGMENT section of the bound framebuffer */