summaryrefslogtreecommitdiffstats
path: root/src/gallium/winsys/radeon/drm/radeon_drm_bo.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/winsys/radeon/drm/radeon_drm_bo.h')
-rw-r--r--src/gallium/winsys/radeon/drm/radeon_drm_bo.h23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_bo.h b/src/gallium/winsys/radeon/drm/radeon_drm_bo.h
index a9f31c0..b9a4a05 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_bo.h
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_bo.h
@@ -34,23 +34,32 @@
#include "radeon_drm_winsys.h"
#include "os/os_thread.h"
+#include "pipebuffer/pb_slab.h"
struct radeon_bo {
struct pb_buffer base;
- struct pb_cache_entry cache_entry;
+ union {
+ struct {
+ struct pb_cache_entry cache_entry;
+
+ void *ptr;
+ pipe_mutex map_mutex;
+ unsigned map_count;
+ bool use_reusable_pool;
+ } real;
+ struct {
+ struct pb_slab_entry entry;
+ struct radeon_bo *real;
+ } slab;
+ } u;
struct radeon_drm_winsys *rws;
void *user_ptr; /* from buffer_from_ptr */
- void *ptr;
- pipe_mutex map_mutex;
- unsigned map_count;
-
- uint32_t handle;
+ uint32_t handle; /* 0 for slab entries */
uint32_t flink_name;
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;