panfrost: Rename panfrost_create_pool() into panfrost_pool_init()
[mesa.git] / src / panfrost / lib / pan_pool.c
index 3451e1b9da1ccbed1d8a130ec1df29be745d9f6c..5fc7cc041f649b7e8f72bf1916055d463ba85dc5 100644 (file)
@@ -56,29 +56,26 @@ panfrost_pool_alloc_backing(struct pan_pool *pool, size_t bo_sz)
         return bo;
 }
 
-struct pan_pool
-panfrost_create_pool(void *memctx, struct panfrost_device *dev,
-                unsigned create_flags, bool prealloc)
+void
+panfrost_pool_init(struct pan_pool *pool, void *memctx,
+                   struct panfrost_device *dev,
+                   unsigned create_flags, bool prealloc)
 {
-        struct pan_pool pool = {
-                .dev = dev,
-                .create_flags = create_flags,
-                .transient_offset = 0,
-                .transient_bo = NULL
-        };
-
-        pool.bos = _mesa_hash_table_create(memctx, _mesa_hash_pointer,
+        memset(pool, 0, sizeof(*pool));
+        pool->dev = dev;
+        pool->create_flags = create_flags;
+        pool->bos = _mesa_hash_table_create(memctx, _mesa_hash_pointer,
                         _mesa_key_pointer_equal);
 
         if (prealloc)
-                panfrost_pool_alloc_backing(&pool, TRANSIENT_SLAB_SIZE);
-
-        return pool;
+                panfrost_pool_alloc_backing(pool, TRANSIENT_SLAB_SIZE);
 }
 
 struct panfrost_transfer
 panfrost_pool_alloc_aligned(struct pan_pool *pool, size_t sz, unsigned alignment)
 {
+        assert(alignment == util_next_power_of_two(alignment));
+
         /* Find or create a suitable BO */
         struct panfrost_bo *bo = pool->transient_bo;
         unsigned offset = ALIGN_POT(pool->transient_offset, alignment);
@@ -103,7 +100,13 @@ panfrost_pool_alloc_aligned(struct pan_pool *pool, size_t sz, unsigned alignment
 mali_ptr
 panfrost_pool_upload(struct pan_pool *pool, const void *data, size_t sz)
 {
-        struct panfrost_transfer transfer = panfrost_pool_alloc(pool, sz);
+        return panfrost_pool_upload_aligned(pool, data, sz, sz);
+}
+
+mali_ptr
+panfrost_pool_upload_aligned(struct pan_pool *pool, const void *data, size_t sz, unsigned alignment)
+{
+        struct panfrost_transfer transfer = panfrost_pool_alloc_aligned(pool, sz, alignment);
         memcpy(transfer.cpu, data, sz);
         return transfer.gpu;
 }