#define AMDGPU_BO_H
#include "amdgpu_winsys.h"
-#include "pipebuffer/pb_bufmgr.h"
-
-struct amdgpu_bo_desc {
- struct pb_desc base;
-
- enum radeon_bo_domain initial_domain;
- unsigned flags;
-};
struct amdgpu_winsys_bo {
struct pb_buffer base;
+ struct pb_cache_entry cache_entry;
- struct amdgpu_winsys *rws;
+ struct amdgpu_winsys *ws;
void *user_ptr; /* from buffer_from_ptr */
amdgpu_bo_handle bo;
+ int map_count;
uint32_t unique_id;
amdgpu_va_handle va_handle;
uint64_t va;
enum radeon_bo_domain initial_domain;
+ bool use_reusable_pool;
/* how many command streams is this bo referenced in? */
int num_cs_references;
+ /* how many command streams, which are being emitted in a separate
+ * thread, is this bo referenced in? */
+ volatile int num_active_ioctls;
+
/* whether buffer_get_handle or buffer_from_handle was called,
* it can only transition from false to true
*/
volatile int is_shared; /* bool (int for atomicity) */
- /* Fences for buffer synchronization. */
- struct pipe_fence_handle *fence[RING_LAST];
+ /* Fence for buffer synchronization. */
+ struct pipe_fence_handle *fence;
+
+ struct list_head global_list_item;
};
-struct pb_manager *amdgpu_bomgr_create(struct amdgpu_winsys *rws);
-void amdgpu_bomgr_init_functions(struct amdgpu_winsys *ws);
+bool amdgpu_bo_can_reclaim(struct pb_buffer *_buf);
+void amdgpu_bo_destroy(struct pb_buffer *_buf);
+void amdgpu_bo_init_functions(struct amdgpu_winsys *ws);
+
+static inline
+struct amdgpu_winsys_bo *amdgpu_winsys_bo(struct pb_buffer *bo)
+{
+ return (struct amdgpu_winsys_bo *)bo;
+}
static inline
void amdgpu_winsys_bo_reference(struct amdgpu_winsys_bo **dst,