Mesa (master): panfrost: Remove all old allocators

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jul 15 15:04:04 UTC 2019


Module: Mesa
Branch: master
Commit: 1ffca961abe7d4f3dfc7884745ed9a96209c2731
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1ffca961abe7d4f3dfc7884745ed9a96209c2731

Author: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Date:   Fri Jul 12 16:45:44 2019 -0700

panfrost: Remove all old allocators

With the new refactor, this all becomes dead code.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>

---

 src/gallium/drivers/panfrost/pan_allocate.c | 49 ---------------------
 src/gallium/drivers/panfrost/pan_allocate.h | 46 --------------------
 src/gallium/drivers/panfrost/pan_resource.c | 66 -----------------------------
 src/gallium/drivers/panfrost/pan_resource.h |  1 -
 src/gallium/drivers/panfrost/pan_screen.c   |  1 -
 src/gallium/drivers/panfrost/pan_screen.h   |  3 --
 src/panfrost/pandecode/decode.h             |  1 +
 7 files changed, 1 insertion(+), 166 deletions(-)

diff --git a/src/gallium/drivers/panfrost/pan_allocate.c b/src/gallium/drivers/panfrost/pan_allocate.c
index a07eba8b8f6..3f83e3f29c2 100644
--- a/src/gallium/drivers/panfrost/pan_allocate.c
+++ b/src/gallium/drivers/panfrost/pan_allocate.c
@@ -34,28 +34,6 @@
 /* TODO: What does this actually have to be? */
 #define ALIGNMENT 128
 
-/* Allocate a mapped chunk directly from a heap */
-
-struct panfrost_transfer
-panfrost_allocate_chunk(struct panfrost_context *ctx, size_t size, unsigned heap_id)
-{
-        size = ALIGN_POT(size, ALIGNMENT);
-
-        struct pipe_context *gallium = (struct pipe_context *) ctx;
-        struct panfrost_screen *screen = pan_screen(gallium->screen);
-
-        struct pb_slab_entry *entry = pb_slab_alloc(&screen->slabs, size, heap_id);
-        struct panfrost_memory_entry *p_entry = (struct panfrost_memory_entry *) entry;
-        struct panfrost_memory *backing = (struct panfrost_memory *) entry->slab;
-
-        struct panfrost_transfer transfer = {
-                .cpu = backing->bo->cpu + p_entry->offset,
-                .gpu = backing->bo->gpu + p_entry->offset
-        };
-
-        return transfer;
-}
-
 /* Allocate a new transient slab */
 
 static struct panfrost_bo *
@@ -224,14 +202,6 @@ pandev_upload(int cheating_offset, int *stack_bottom, mali_ptr base, void *base_
         return base + offset;
 }
 
-/* Upload immediately after the last allocation */
-
-mali_ptr
-pandev_upload_sequential(mali_ptr base, void *base_map, const void *data, size_t sz)
-{
-        return pandev_upload(last_offset, NULL, base, base_map, data, sz, /* false */ true);
-}
-
 /* Simplified APIs for the real driver, rather than replays */
 
 mali_ptr
@@ -246,22 +216,3 @@ panfrost_upload(struct panfrost_memory *mem, const void *data, size_t sz, bool n
 
         return pandev_upload(-1, &mem->stack_bottom, mem->bo->gpu, mem->bo->cpu, data, sz, no_pad);
 }
-
-mali_ptr
-panfrost_upload_sequential(struct panfrost_memory *mem, const void *data, size_t sz)
-{
-        return pandev_upload(last_offset, &mem->stack_bottom, mem->bo->gpu, mem->bo->cpu, data, sz, true);
-}
-
-/* Simplified interface to allocate a chunk without any upload, to allow
- * zero-copy uploads. This is particularly useful when the copy would happen
- * anyway, for instance with texture swizzling. */
-
-void *
-panfrost_allocate_transfer(struct panfrost_memory *mem, size_t sz, mali_ptr *gpu)
-{
-        int offset = pandev_allocate_offset(&mem->stack_bottom, sz);
-
-        *gpu = mem->bo->gpu + offset;
-        return mem->bo->cpu + offset;
-}
diff --git a/src/gallium/drivers/panfrost/pan_allocate.h b/src/gallium/drivers/panfrost/pan_allocate.h
index 45c86b7cb7b..fcb00bfcfd1 100644
--- a/src/gallium/drivers/panfrost/pan_allocate.h
+++ b/src/gallium/drivers/panfrost/pan_allocate.h
@@ -28,28 +28,11 @@
 #include <unistd.h>
 #include <sys/mman.h>
 #include <stdbool.h>
-#include "pipebuffer/pb_slab.h"
 
 #include <panfrost-misc.h>
 
 struct panfrost_context;
 
-/* Texture memory */
-
-#define HEAP_TEXTURE 0
-
-/* Single-frame (transient) command stream memory, done at the block scale
- * rather than the individual cmdstream alllocation scale. We use pb_alloc for
- * pooling, but we have to implement our own logic atop the API for performance
- * reasons when considering many low-latency tiny heterogenous allocations */
-
-#define HEAP_TRANSIENT 1
-
-/* Multi-frame descriptor memory (replaces what used to be
- * cmdstream_persistent), for long-living small allocations */
-
-#define HEAP_DESCRIPTOR 2
-
 /* Represents a fat pointer for GPU-mapped memory, returned from the transient
  * allocator and not used for much else */
 
@@ -74,39 +57,16 @@ struct panfrost_bo {
 };
 
 struct panfrost_memory {
-        /* Subclassing slab object */
-        struct pb_slab slab;
-
         /* Backing for the slab in memory */
         struct panfrost_bo *bo;
         int stack_bottom;
 };
 
-/* Slab entry sizes range from 2^min to 2^max. In this case, we range from 1k
- * to 16MB. Numbers are kind of arbitrary but these seem to work alright in
- * practice. */
-
-#define MIN_SLAB_ENTRY_SIZE (10)
-#define MAX_SLAB_ENTRY_SIZE (24)
-
-struct panfrost_memory_entry {
-        /* Subclass */
-        struct pb_slab_entry base;
-
-        /* Have we been freed? */
-        bool freed;
-
-        /* Offset into the slab of the entry */
-        off_t offset;
-};
-
 /* Functions for replay */
 mali_ptr pandev_upload(int cheating_offset, int *stack_bottom, mali_ptr base, void *base_map, const void *data, size_t sz, bool no_pad);
-mali_ptr pandev_upload_sequential(mali_ptr base, void *base_map, const void *data, size_t sz);
 
 /* Functions for the actual Galliumish driver */
 mali_ptr panfrost_upload(struct panfrost_memory *mem, const void *data, size_t sz, bool no_pad);
-mali_ptr panfrost_upload_sequential(struct panfrost_memory *mem, const void *data, size_t sz);
 
 struct panfrost_transfer
 panfrost_allocate_transient(struct panfrost_context *ctx, size_t sz);
@@ -114,9 +74,6 @@ panfrost_allocate_transient(struct panfrost_context *ctx, size_t sz);
 mali_ptr
 panfrost_upload_transient(struct panfrost_context *ctx, const void *data, size_t sz);
 
-void *
-panfrost_allocate_transfer(struct panfrost_memory *mem, size_t sz, mali_ptr *gpu);
-
 static inline mali_ptr
 panfrost_reserve(struct panfrost_memory *mem, size_t sz)
 {
@@ -124,7 +81,4 @@ panfrost_reserve(struct panfrost_memory *mem, size_t sz)
         return mem->bo->gpu + (mem->stack_bottom - sz);
 }
 
-struct panfrost_transfer
-panfrost_allocate_chunk(struct panfrost_context *ctx, size_t size, unsigned heap_id);
-
 #endif /* __PAN_ALLOCATE_H__ */
diff --git a/src/gallium/drivers/panfrost/pan_resource.c b/src/gallium/drivers/panfrost/pan_resource.c
index cdff805ab13..5f6eaa42c98 100644
--- a/src/gallium/drivers/panfrost/pan_resource.c
+++ b/src/gallium/drivers/panfrost/pan_resource.c
@@ -633,54 +633,6 @@ panfrost_transfer_flush_region(struct pipe_context *pctx,
         }
 }
 
-static struct pb_slab *
-panfrost_slab_alloc(void *priv, unsigned heap, unsigned entry_size, unsigned group_index)
-{
-        struct panfrost_screen *screen = (struct panfrost_screen *) priv;
-        struct panfrost_memory *mem = rzalloc(screen, struct panfrost_memory);
-
-        size_t slab_size = (1 << (MAX_SLAB_ENTRY_SIZE + 1));
-
-        mem->slab.num_entries = slab_size / entry_size;
-        mem->slab.num_free = mem->slab.num_entries;
-
-        LIST_INITHEAD(&mem->slab.free);
-        for (unsigned i = 0; i < mem->slab.num_entries; ++i) {
-                /* Create a slab entry */
-                struct panfrost_memory_entry *entry = rzalloc(mem, struct panfrost_memory_entry);
-                entry->offset = entry_size * i;
-
-                entry->base.slab = &mem->slab;
-                entry->base.group_index = group_index;
-
-                LIST_ADDTAIL(&entry->base.head, &mem->slab.free);
-        }
-
-        /* Actually allocate the memory from kernel-space. Mapped, same_va, no
-         * special flags */
-
-        panfrost_drm_allocate_slab(screen, mem, slab_size / 4096, true, 0, 0, 0);
-
-        return &mem->slab;
-}
-
-static bool
-panfrost_slab_can_reclaim(void *priv, struct pb_slab_entry *entry)
-{
-        struct panfrost_memory_entry *p_entry = (struct panfrost_memory_entry *) entry;
-        return p_entry->freed;
-}
-
-static void
-panfrost_slab_free(void *priv, struct pb_slab *slab)
-{
-        struct panfrost_memory *mem = (struct panfrost_memory *) slab;
-        struct panfrost_screen *screen = (struct panfrost_screen *) priv;
-
-        panfrost_drm_free_slab(screen, mem);
-        ralloc_free(mem);
-}
-
 static void
 panfrost_invalidate_resource(struct pipe_context *pctx, struct pipe_resource *prsc)
 {
@@ -791,24 +743,6 @@ panfrost_resource_screen_init(struct panfrost_screen *pscreen)
         pscreen->base.transfer_helper = u_transfer_helper_create(&transfer_vtbl,
                                         true, false,
                                         true, true);
-
-        pb_slabs_init(&pscreen->slabs,
-                      MIN_SLAB_ENTRY_SIZE,
-                      MAX_SLAB_ENTRY_SIZE,
-
-                      3, /* Number of heaps */
-
-                      pscreen,
-
-                      panfrost_slab_can_reclaim,
-                      panfrost_slab_alloc,
-                      panfrost_slab_free);
-}
-
-void
-panfrost_resource_screen_deinit(struct panfrost_screen *pscreen)
-{
-        pb_slabs_deinit(&pscreen->slabs);
 }
 
 void
diff --git a/src/gallium/drivers/panfrost/pan_resource.h b/src/gallium/drivers/panfrost/pan_resource.h
index f7c13e7ec10..3814c2b27eb 100644
--- a/src/gallium/drivers/panfrost/pan_resource.h
+++ b/src/gallium/drivers/panfrost/pan_resource.h
@@ -109,7 +109,6 @@ panfrost_get_texture_address(
         unsigned level, unsigned face);
 
 void panfrost_resource_screen_init(struct panfrost_screen *screen);
-void panfrost_resource_screen_deinit(struct panfrost_screen *screen);
 
 void panfrost_resource_context_init(struct pipe_context *pctx);
 
diff --git a/src/gallium/drivers/panfrost/pan_screen.c b/src/gallium/drivers/panfrost/pan_screen.c
index 599ef8a82e7..2d8ecdf2068 100644
--- a/src/gallium/drivers/panfrost/pan_screen.c
+++ b/src/gallium/drivers/panfrost/pan_screen.c
@@ -438,7 +438,6 @@ static void
 panfrost_destroy_screen(struct pipe_screen *pscreen)
 {
         struct panfrost_screen *screen = pan_screen(pscreen);
-        panfrost_resource_screen_deinit(screen);
         ralloc_free(screen);
 }
 
diff --git a/src/gallium/drivers/panfrost/pan_screen.h b/src/gallium/drivers/panfrost/pan_screen.h
index 8a01baabaf4..3a0e544c1a6 100644
--- a/src/gallium/drivers/panfrost/pan_screen.h
+++ b/src/gallium/drivers/panfrost/pan_screen.h
@@ -85,9 +85,6 @@ struct panfrost_screen {
 
         struct renderonly *ro;
 
-        /* Memory management is based on subdividing slabs with AMD's allocator */
-        struct pb_slabs slabs;
-
         /* Transient memory management is based on borrowing fixed-size slabs
          * off the screen (loaning them out to the batch). Dynamic array
          * container of panfrost_bo */
diff --git a/src/panfrost/pandecode/decode.h b/src/panfrost/pandecode/decode.h
index e1d09c6a90a..3db0c0d7091 100644
--- a/src/panfrost/pandecode/decode.h
+++ b/src/panfrost/pandecode/decode.h
@@ -26,6 +26,7 @@
 #ifndef __PAN_DECODE_H__
 #define __PAN_DECODE_H__
 
+#include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
 #include <panfrost-job.h>




More information about the mesa-commit mailing list