winsys/amdgpu: make amdgpu_bo_unmap non-static
[mesa.git] / src / gallium / winsys / amdgpu / drm / amdgpu_bo.h
index 10b095d7a1c58984dd283362e5c7dc09a2d8b973..ace651dff4f15ded248667f8d6d6c721070116d3 100644 (file)
  * next paragraph) shall be included in all copies or substantial portions
  * of the Software.
  */
-/*
- * Authors:
- *      Marek Olšák <maraeo@gmail.com>
- */
 
 #ifndef AMDGPU_BO_H
 #define AMDGPU_BO_H
@@ -70,13 +66,14 @@ struct amdgpu_winsys_bo {
          bool use_reusable_pool;
 
          struct list_head global_list_item;
+
+         uint32_t kms_handle;
       } real;
       struct {
          struct pb_slab_entry entry;
          struct amdgpu_winsys_bo *real;
       } slab;
       struct {
-         mtx_t commit_lock;
          amdgpu_va_handle va_handle;
          enum radeon_bo_flag flags;
 
@@ -91,13 +88,15 @@ struct amdgpu_winsys_bo {
    } u;
 
    struct amdgpu_winsys *ws;
-   void *user_ptr; /* from buffer_from_ptr */
+   void *cpu_ptr; /* for user_ptr and permanent maps */
 
    amdgpu_bo_handle bo; /* NULL for slab entries and sparse buffers */
    bool sparse;
+   bool is_user_ptr;
    uint32_t unique_id;
    uint64_t va;
    enum radeon_bo_domain initial_domain;
+   enum radeon_bo_flag flags;
 
    /* how many command streams is this bo referenced in? */
    int num_cs_references;
@@ -116,7 +115,7 @@ struct amdgpu_winsys_bo {
    unsigned max_fences;
    struct pipe_fence_handle **fences;
 
-   bool is_local;
+   simple_mtx_t lock;
 };
 
 struct amdgpu_slab {
@@ -126,13 +125,25 @@ struct amdgpu_slab {
 };
 
 bool amdgpu_bo_can_reclaim(struct pb_buffer *_buf);
+struct pb_buffer *amdgpu_bo_create(struct amdgpu_winsys *ws,
+                                   uint64_t size,
+                                   unsigned alignment,
+                                   enum radeon_bo_domain domain,
+                                   enum radeon_bo_flag flags);
 void amdgpu_bo_destroy(struct pb_buffer *_buf);
-void amdgpu_bo_init_functions(struct amdgpu_winsys *ws);
+void *amdgpu_bo_map(struct pb_buffer *buf,
+                    struct radeon_cmdbuf *rcs,
+                    enum pipe_transfer_usage usage);
+void amdgpu_bo_unmap(struct pb_buffer *buf);
+void amdgpu_bo_init_functions(struct amdgpu_screen_winsys *ws);
 
 bool amdgpu_bo_can_reclaim_slab(void *priv, struct pb_slab_entry *entry);
-struct pb_slab *amdgpu_bo_slab_alloc(void *priv, unsigned heap,
-                                     unsigned entry_size,
-                                     unsigned group_index);
+struct pb_slab *amdgpu_bo_slab_alloc_encrypted(void *priv, unsigned heap,
+                                               unsigned entry_size,
+                                               unsigned group_index);
+struct pb_slab *amdgpu_bo_slab_alloc_normal(void *priv, unsigned heap,
+                                            unsigned entry_size,
+                                            unsigned group_index);
 void amdgpu_bo_slab_free(void *priv, struct pb_slab *slab);
 
 static inline