panfrost: Move the BO API to its own header
authorBoris Brezillon <boris.brezillon@collabora.com>
Sat, 14 Sep 2019 07:58:55 +0000 (09:58 +0200)
committerBoris Brezillon <boris.brezillon@collabora.com>
Wed, 18 Sep 2019 08:29:13 +0000 (10:29 +0200)
Right now, the BO API is spread over pan_{allocate,resource,screen}.h.
Let's move all BO related definitions to a separate header file.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
16 files changed:
src/gallium/drivers/panfrost/pan_allocate.c
src/gallium/drivers/panfrost/pan_allocate.h
src/gallium/drivers/panfrost/pan_assemble.c
src/gallium/drivers/panfrost/pan_blend_cso.c
src/gallium/drivers/panfrost/pan_bo.c
src/gallium/drivers/panfrost/pan_bo.h [new file with mode: 0644]
src/gallium/drivers/panfrost/pan_context.c
src/gallium/drivers/panfrost/pan_instancing.c
src/gallium/drivers/panfrost/pan_job.c
src/gallium/drivers/panfrost/pan_mfbd.c
src/gallium/drivers/panfrost/pan_resource.c
src/gallium/drivers/panfrost/pan_resource.h
src/gallium/drivers/panfrost/pan_screen.c
src/gallium/drivers/panfrost/pan_screen.h
src/gallium/drivers/panfrost/pan_sfbd.c
src/gallium/drivers/panfrost/pan_varyings.c

index e7970c1be2d41dcd7dc0e3a55183292654c1fede..bdf6f26b77b88da22af7e69a88ec2aa481092641 100644 (file)
@@ -29,6 +29,7 @@
 #include <assert.h>
 #include <panfrost-misc.h>
 #include <panfrost-job.h>
+#include "pan_bo.h"
 #include "pan_context.h"
 
 /* TODO: What does this actually have to be? */
index a80eadaffce86d97d0646479ba9794fa0b08dbc5..f18218fb32a11c2443cf9884fe07b78d4afc5b3c 100644 (file)
@@ -43,26 +43,6 @@ struct panfrost_transfer {
         mali_ptr gpu;
 };
 
-struct panfrost_bo {
-        /* Must be first for casting */
-        struct list_head link;
-
-        struct pipe_reference reference;
-
-        /* Mapping for the entire object (all levels) */
-        uint8_t *cpu;
-
-        /* GPU address for the object */
-        mali_ptr gpu;
-
-        /* Size of all entire trees */
-        size_t size;
-
-        int gem_handle;
-
-        uint32_t flags;
-};
-
 struct panfrost_transfer
 panfrost_allocate_transient(struct panfrost_batch *batch, size_t sz);
 
index cc4822a2361536a66161e78dde525c715488767e..afd16abb2d21d23789f7bc3afee61a753b25db74 100644 (file)
@@ -25,6 +25,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include "pan_bo.h"
 #include "pan_context.h"
 
 #include "compiler/nir/nir.h"
index c61ffe203c4cdb80468e4fa5d5fc9f97b869b9bd..83492e1ed03d6a3665dd0d4fa838b83a98ee42e8 100644 (file)
@@ -29,6 +29,7 @@
 #include "util/u_memory.h"
 #include "pan_blend_shaders.h"
 #include "pan_blending.h"
+#include "pan_bo.h"
 
 /* A given Gallium blend state can be encoded to the hardware in numerous,
  * dramatically divergent ways due to the interactions of blending with
index 7f14b3e3638bc94008bb48e1397c94cefec986fa..e6a5c972ead9ff83d78af02a3c6ab71fd54b4d57 100644 (file)
@@ -29,7 +29,7 @@
 #include <pthread.h>
 #include "drm-uapi/panfrost_drm.h"
 
-#include "pan_resource.h"
+#include "pan_bo.h"
 #include "pan_screen.h"
 #include "pan_util.h"
 #include "pandecode/decode.h"
diff --git a/src/gallium/drivers/panfrost/pan_bo.h b/src/gallium/drivers/panfrost/pan_bo.h
new file mode 100644 (file)
index 0000000..6d17ebe
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * © Copyright 2019 Alyssa Rosenzweig
+ * © Copyright 2019 Collabora, Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+#ifndef __PAN_BO_H__
+#define __PAN_BO_H__
+
+#include <panfrost-misc.h>
+#include "pipe/p_state.h"
+#include "util/list.h"
+
+struct panfrost_screen;
+
+/* Flags for allocated memory */
+
+/* This memory region is executable */
+#define PAN_BO_EXECUTE            (1 << 0)
+
+/* This memory region should be lazily allocated and grow-on-page-fault. Must
+ * be used in conjunction with INVISIBLE */
+#define PAN_BO_GROWABLE           (1 << 1)
+
+/* This memory region should not be mapped to the CPU */
+#define PAN_BO_INVISIBLE          (1 << 2)
+
+/* This memory region will be used for varyings and needs to have the cache
+ * bits twiddled accordingly */
+#define PAN_BO_COHERENT_LOCAL     (1 << 3)
+
+/* This region may not be used immediately and will not mmap on allocate
+ * (semantically distinct from INVISIBLE, which cannot never be mmaped) */
+#define PAN_BO_DELAY_MMAP         (1 << 4)
+
+struct panfrost_bo {
+        /* Must be first for casting */
+        struct list_head link;
+
+        struct pipe_reference reference;
+
+        /* Mapping for the entire object (all levels) */
+        uint8_t *cpu;
+
+        /* GPU address for the object */
+        mali_ptr gpu;
+
+        /* Size of all entire trees */
+        size_t size;
+
+        int gem_handle;
+
+        uint32_t flags;
+};
+
+void
+panfrost_bo_reference(struct panfrost_bo *bo);
+void
+panfrost_bo_unreference(struct pipe_screen *screen, struct panfrost_bo *bo);
+struct panfrost_bo *
+panfrost_bo_create(struct panfrost_screen *screen, size_t size,
+                   uint32_t flags);
+void
+panfrost_bo_mmap(struct panfrost_screen *screen, struct panfrost_bo *bo);
+void
+panfrost_bo_release(struct panfrost_screen *screen, struct panfrost_bo *bo,
+                    bool cacheable);
+struct panfrost_bo *
+panfrost_bo_import(struct panfrost_screen *screen, int fd);
+int
+panfrost_bo_export(struct panfrost_screen *screen, const struct panfrost_bo *bo);
+struct panfrost_bo *
+panfrost_bo_cache_fetch(struct panfrost_screen *screen,
+                       size_t size, uint32_t flags);
+bool
+panfrost_bo_cache_put(struct panfrost_screen *screen,
+                      struct panfrost_bo *bo);
+void
+panfrost_bo_cache_evict_all(struct panfrost_screen *screen);
+
+#endif /* __PAN_BO_H__ */
index f01ddf18b105d7e520185ba8ce2e7cdff3667c71..d3e08c03ffadb112c9a2423e53d8b1fcc01b5577 100644 (file)
@@ -27,6 +27,7 @@
 #include <sys/poll.h>
 #include <errno.h>
 
+#include "pan_bo.h"
 #include "pan_context.h"
 #include "pan_format.h"
 
index e7e1f1d0e12bc130e77f1020781bd9ec805bba50..806823f0da0d38e9f0d7d77e1a786770ee5470ec 100644 (file)
@@ -23,6 +23,7 @@
  *
  */
 
+#include "pan_bo.h"
 #include "pan_context.h"
 
 /* See mali_job for notes on how this works. But basically, for small vertex
index 839e19c16442d71844614e5e65fdd9c5ef369108..80ed730944b7d5f8316b07c2fc572f467f9f47f1 100644 (file)
@@ -27,6 +27,7 @@
 
 #include "drm-uapi/panfrost_drm.h"
 
+#include "pan_bo.h"
 #include "pan_context.h"
 #include "util/hash_table.h"
 #include "util/ralloc.h"
index fcddec2bf22e20bb27aeff8dc250eb33cc4ab455..b01f8289bf9cac5767611a098c937fd54c38401c 100644 (file)
@@ -22,6 +22,7 @@
  *
  */
 
+#include "pan_bo.h"
 #include "pan_context.h"
 #include "pan_util.h"
 #include "pan_format.h"
index 91f30450e54cb301f2f51d26302c5c957ba6c98b..97ab2f9d9a4ecda0fda5566562b6b45462d7a8c1 100644 (file)
@@ -41,6 +41,7 @@
 #include "util/u_transfer_helper.h"
 #include "util/u_gen_mipmap.h"
 
+#include "pan_bo.h"
 #include "pan_context.h"
 #include "pan_screen.h"
 #include "pan_resource.h"
index 6ed3d1fd60e848125ad4790a602f53adc62eb538..22404a609e12c0f6a65576b1c20a3f86b46a173b 100644 (file)
@@ -57,12 +57,6 @@ struct panfrost_slice {
         bool initialized;
 };
 
-void
-panfrost_bo_reference(struct panfrost_bo *bo);
-
-void
-panfrost_bo_unreference(struct pipe_screen *screen, struct panfrost_bo *bo);
-
 struct panfrost_resource {
         struct pipe_resource base;
         struct {
index 54ef2efd3b12df239c5a5ac9f4a3e053190248da..dae8b941f1ea29b29f706cc86416145228fbfca3 100644 (file)
@@ -43,6 +43,7 @@
 #include "drm-uapi/drm_fourcc.h"
 #include "drm-uapi/panfrost_drm.h"
 
+#include "pan_bo.h"
 #include "pan_screen.h"
 #include "pan_resource.h"
 #include "pan_public.h"
index c93064ad9685721572fdc3fe565ee960bd1c0f04..fdc47df00ea1fdcb31ac44cb20dad5689530cd80 100644 (file)
@@ -47,26 +47,6 @@ struct panfrost_screen;
 /* Driver limits */
 #define PAN_MAX_CONST_BUFFERS 16
 
-/* Flags for allocated memory */
-
-/* This memory region is executable */
-#define PAN_BO_EXECUTE            (1 << 0)
-
-/* This memory region should be lazily allocated and grow-on-page-fault. Must
- * be used in conjunction with INVISIBLE */
-#define PAN_BO_GROWABLE           (1 << 1)
-
-/* This memory region should not be mapped to the CPU */
-#define PAN_BO_INVISIBLE          (1 << 2)
-
-/* This memory region will be used for varyings and needs to have the cache
- * bits twiddled accordingly */
-#define PAN_BO_COHERENT_LOCAL     (1 << 3)
-
-/* This region may not be used immediately and will not mmap on allocate
- * (semantically distinct from INVISIBLE, which cannot never be mmaped) */
-#define PAN_BO_DELAY_MMAP         (1 << 4)
-
 /* Transient slab size. This is a balance between fragmentation against cache
  * locality and ease of bookkeeping */
 
@@ -123,31 +103,4 @@ pan_screen(struct pipe_screen *p)
 struct panfrost_fence *
 panfrost_fence_create(struct panfrost_context *ctx);
 
-struct panfrost_bo *
-panfrost_bo_create(struct panfrost_screen *screen, size_t size,
-                       uint32_t flags);
-void
-panfrost_bo_mmap(struct panfrost_screen *screen, struct panfrost_bo *bo);
-void
-panfrost_bo_release(struct panfrost_screen *screen, struct panfrost_bo *bo,
-                    bool cacheable);
-struct panfrost_bo *
-panfrost_bo_import(struct panfrost_screen *screen, int fd);
-int
-panfrost_bo_export(struct panfrost_screen *screen, const struct panfrost_bo *bo);
-
-struct panfrost_bo *
-panfrost_bo_cache_fetch(
-                struct panfrost_screen *screen,
-                size_t size, uint32_t flags);
-
-bool
-panfrost_bo_cache_put(
-                struct panfrost_screen *screen,
-                struct panfrost_bo *bo);
-
-void
-panfrost_bo_cache_evict_all(
-                struct panfrost_screen *screen);
-
 #endif /* PAN_SCREEN_H */
index bf49ddfc1a0fb91bf2a78f7e4d44950580344822..b5e18f07045ee5efb7fec70c61406a9a7bae59a0 100644 (file)
@@ -22,6 +22,7 @@
  *
  */
 
+#include "pan_bo.h"
 #include "pan_context.h"
 #include "pan_util.h"
 #include "pan_format.h"
index 7adfc3ec4c7d56b31e923bf8286e54ea47476b5b..9dbd1e2ebacfe592a46a1fa25a1b4eaf8ec2c4db 100644 (file)
@@ -23,6 +23,7 @@
  *
  */
 
+#include "pan_bo.h"
 #include "pan_context.h"
 #include "util/u_prim.h"