From 189a59751352208cb0386131f9ad82256ec9bed9 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 17 Sep 2010 12:51:04 +1000 Subject: r600g: use malloc bufmgr for constant buffers --- src/gallium/winsys/r600/drm/radeon.c | 7 +++++++ src/gallium/winsys/r600/drm/radeon_priv.h | 1 + src/gallium/winsys/r600/drm/radeon_ws_bo.c | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/gallium/winsys/r600/drm/radeon.c b/src/gallium/winsys/r600/drm/radeon.c index 2135b07ab6..7b88075c56 100644 --- a/src/gallium/winsys/r600/drm/radeon.c +++ b/src/gallium/winsys/r600/drm/radeon.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "xf86drm.h" #include "radeon_priv.h" #include "radeon_drm.h" @@ -125,6 +126,10 @@ struct radeon *radeon_new(int fd, unsigned device) __func__, radeon->device); break; } + + radeon->mman = pb_malloc_bufmgr_create(); + if (!radeon->mman) + return NULL; return radeon; } @@ -143,6 +148,8 @@ struct radeon *radeon_decref(struct radeon *radeon) if (--radeon->refcount > 0) { return NULL; } + + radeon->mman->destroy(radeon->mman); drmClose(radeon->fd); free(radeon); return NULL; diff --git a/src/gallium/winsys/r600/drm/radeon_priv.h b/src/gallium/winsys/r600/drm/radeon_priv.h index 49fe1a6ead..cb18d159a0 100644 --- a/src/gallium/winsys/r600/drm/radeon_priv.h +++ b/src/gallium/winsys/r600/drm/radeon_priv.h @@ -87,6 +87,7 @@ struct radeon { struct radeon_stype_info *stype; unsigned max_states; boolean use_mem_constant; /* true for evergreen */ + struct pb_manager *mman; /* malloc manager */ }; struct radeon_ws_bo { diff --git a/src/gallium/winsys/r600/drm/radeon_ws_bo.c b/src/gallium/winsys/r600/drm/radeon_ws_bo.c index 422e298a8d..09e379f837 100644 --- a/src/gallium/winsys/r600/drm/radeon_ws_bo.c +++ b/src/gallium/winsys/r600/drm/radeon_ws_bo.c @@ -12,7 +12,7 @@ struct radeon_ws_bo *radeon_ws_bo(struct radeon *radeon, if (radeon->use_mem_constant && (usage & PIPE_BIND_CONSTANT_BUFFER)) { desc.alignment = alignment; desc.usage = usage; - ws_bo->pb = pb_malloc_buffer_create(size, &desc); + ws_bo->pb = radeon->mman->create_buffer(radeon->mman, size, &desc); if (ws_bo->pb == NULL) { free(ws_bo); return NULL; -- cgit v1.2.3