[Intel-gfx] [PATCH] intel: When re-use cache is full, wait instead of allocating

Keith Packard keithp at keithp.com
Tue Dec 16 00:08:13 CET 2008


This limits application memory usage by waiting for the GPU to free memory
rather than simply continuing to allocate more memory.

Signed-off-by: Keith Packard <keithp at keithp.com>
---
 libdrm/intel/intel_bufmgr_gem.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/libdrm/intel/intel_bufmgr_gem.c b/libdrm/intel/intel_bufmgr_gem.c
index 323007a..9f6ef68 100644
--- a/libdrm/intel/intel_bufmgr_gem.c
+++ b/libdrm/intel/intel_bufmgr_gem.c
@@ -350,8 +350,12 @@ drm_intel_gem_bo_alloc(drm_intel_bufmgr *bufmgr, const char *name,
 	bo_gem = bucket->head;
         busy.handle = bo_gem->gem_handle;
 
-        ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_BUSY, &busy);
-        alloc_from_cache = (ret == 0 && busy.busy == 0);
+	if (bucket->max_entries != -1 && bucket->num_entries >= bucket->max_entries)
+	    alloc_from_cache = 1;
+	else {
+	    ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_BUSY, &busy);
+	    alloc_from_cache = (ret == 0 && busy.busy == 0);
+	}
 
 	if (alloc_from_cache) {
 	    bucket->head = bo_gem->next;
-- 
1.5.6.5




More information about the Intel-gfx mailing list