summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/radeon/radeon_bo_drm.h
diff options
context:
space:
mode:
authorPauli Nieminen <suokkos@gmail.com>2009-08-20 17:57:37 +0300
committerPauli Nieminen <suokkos@gmail.com>2009-08-23 13:39:32 +0300
commit66bbafb6f9d44da3baddac6d948ba361182dde2a (patch)
treeaf8dab98c577b013f422290f65eb2730d4f5ffe8 /src/mesa/drivers/dri/radeon/radeon_bo_drm.h
parentbf6d0ae5980a48b24ace49030eca221dcbec163f (diff)
radeon: Check from kernel if dma buffer is idle.
This makes sure that objects are leaving wait list only when they are processed by gpu. Signed-off-by: Pauli Nieminen <suokkos@gmail.com>
Diffstat (limited to 'src/mesa/drivers/dri/radeon/radeon_bo_drm.h')
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_bo_drm.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/radeon/radeon_bo_drm.h b/src/mesa/drivers/dri/radeon/radeon_bo_drm.h
index 8789e3ab09..24ba0fa2f3 100644
--- a/src/mesa/drivers/dri/radeon/radeon_bo_drm.h
+++ b/src/mesa/drivers/dri/radeon/radeon_bo_drm.h
@@ -73,6 +73,7 @@ struct radeon_bo_funcs {
uint32_t pitch);
int (*bo_get_tiling)(struct radeon_bo *bo, uint32_t *tiling_flags,
uint32_t *pitch);
+ int (*bo_is_busy)(struct radeon_bo *bo, uint32_t *domain);
};
struct radeon_bo_manager {
@@ -170,6 +171,15 @@ static inline int _radeon_bo_wait(struct radeon_bo *bo,
return bo->bom->funcs->bo_wait(bo);
}
+static inline int _radeon_bo_is_busy(struct radeon_bo *bo,
+ uint32_t *domain,
+ const char *file,
+ const char *func,
+ int line)
+{
+ return bo->bom->funcs->bo_is_busy(bo, domain);
+}
+
static inline int radeon_bo_set_tiling(struct radeon_bo *bo,
uint32_t tiling_flags, uint32_t pitch)
{
@@ -203,5 +213,7 @@ static inline int radeon_bo_is_static(struct radeon_bo *bo)
_radeon_bo_debug(bo, opcode, __FILE__, __FUNCTION__, __LINE__)
#define radeon_bo_wait(bo) \
_radeon_bo_wait(bo, __FILE__, __func__, __LINE__)
+#define radeon_bo_is_busy(bo, domain) \
+ _radeon_bo_is_busy(bo, busy, domain, __FILE__, __func__, __LINE__)
#endif