aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-05-11 08:54:06 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2010-05-11 08:54:06 +0100
commit07e7589d86624e9c1ca4c38d00cf6886e1445ae2 (patch)
tree6c7bc3531b1aa444a414de4ebfd22f31fd6a5b16
parent7ca558494dd3f68f29bb6ca981de9b8f49620b60 (diff)
intel: query whether a buffer is reusable.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--intel/intel_bufmgr.c7
-rw-r--r--intel/intel_bufmgr.h1
-rw-r--r--intel/intel_bufmgr_gem.c9
-rw-r--r--intel/intel_bufmgr_priv.h7
4 files changed, 24 insertions, 0 deletions
diff --git a/intel/intel_bufmgr.c b/intel/intel_bufmgr.c
index ce21a332..9144fdd4 100644
--- a/intel/intel_bufmgr.c
+++ b/intel/intel_bufmgr.c
@@ -229,6 +229,13 @@ int drm_intel_bo_disable_reuse(drm_intel_bo *bo)
return 0;
}
+int drm_intel_bo_is_reusable(drm_intel_bo *bo)
+{
+ if (bo->bufmgr->bo_is_reusable)
+ return bo->bufmgr->bo_is_reusable(bo);
+ return 0;
+}
+
int drm_intel_bo_busy(drm_intel_bo *bo)
{
if (bo->bufmgr->bo_busy)
diff --git a/intel/intel_bufmgr.h b/intel/intel_bufmgr.h
index 0984ab08..cbcddb65 100644
--- a/intel/intel_bufmgr.h
+++ b/intel/intel_bufmgr.h
@@ -126,6 +126,7 @@ int drm_intel_bo_busy(drm_intel_bo *bo);
int drm_intel_bo_madvise(drm_intel_bo *bo, int madv);
int drm_intel_bo_disable_reuse(drm_intel_bo *bo);
+int drm_intel_bo_is_reusable(drm_intel_bo *bo);
int drm_intel_bo_references(drm_intel_bo *bo, drm_intel_bo *target_bo);
/* drm_intel_bufmgr_gem.c */
diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
index 8fa5631d..9daa89ad 100644
--- a/intel/intel_bufmgr_gem.c
+++ b/intel/intel_bufmgr_gem.c
@@ -1904,6 +1904,14 @@ drm_intel_gem_bo_disable_reuse(drm_intel_bo *bo)
}
static int
+drm_intel_gem_bo_is_reusable(drm_intel_bo *bo)
+{
+ drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
+
+ return bo_gem->reusable;
+}
+
+static int
_drm_intel_gem_bo_references(drm_intel_bo *bo, drm_intel_bo *target_bo)
{
drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
@@ -2060,6 +2068,7 @@ drm_intel_bufmgr_gem_init(int fd, int batch_size)
bufmgr_gem->bufmgr.check_aperture_space =
drm_intel_gem_check_aperture_space;
bufmgr_gem->bufmgr.bo_disable_reuse = drm_intel_gem_bo_disable_reuse;
+ bufmgr_gem->bufmgr.bo_is_reusable = drm_intel_gem_bo_is_reusable;
bufmgr_gem->bufmgr.get_pipe_from_crtc_id =
drm_intel_gem_get_pipe_from_crtc_id;
bufmgr_gem->bufmgr.bo_references = drm_intel_gem_bo_references;
diff --git a/intel/intel_bufmgr_priv.h b/intel/intel_bufmgr_priv.h
index fb84e70f..f987d97a 100644
--- a/intel/intel_bufmgr_priv.h
+++ b/intel/intel_bufmgr_priv.h
@@ -247,6 +247,13 @@ struct _drm_intel_bufmgr {
int (*bo_disable_reuse) (drm_intel_bo *bo);
/**
+ * Query whether a buffer is reusable.
+ *
+ * \param bo Buffer to query
+ */
+ int (*bo_is_reusable) (drm_intel_bo *bo);
+
+ /**
*
* Return the pipe associated with a crtc_id so that vblank
* synchronization can use the correct data in the request.