summaryrefslogtreecommitdiff
path: root/src/sna/kgem.h
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-12-07 17:24:42 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2012-12-07 17:24:42 +0000
commit52405b2aed492dc7f76fbf082122842f621e7c06 (patch)
tree5cf35e31649549d555024a5ed642a7edb52eead6 /src/sna/kgem.h
parent4b7bbb2a23b03bac63f864c33f47fab88dedbf67 (diff)
sna: Only inspect the target ring for busyness
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/sna/kgem.h')
-rw-r--r--src/sna/kgem.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/sna/kgem.h b/src/sna/kgem.h
index 8a3a4fa2..ccefc48f 100644
--- a/src/sna/kgem.h
+++ b/src/sna/kgem.h
@@ -274,6 +274,7 @@ int kgem_bo_get_swizzling(struct kgem *kgem, struct kgem_bo *bo);
void kgem_bo_retire(struct kgem *kgem, struct kgem_bo *bo);
bool kgem_retire(struct kgem *kgem);
+
bool __kgem_is_idle(struct kgem *kgem);
static inline bool kgem_is_idle(struct kgem *kgem)
{
@@ -285,6 +286,15 @@ static inline bool kgem_is_idle(struct kgem *kgem)
return __kgem_is_idle(kgem);
}
+bool __kgem_ring_is_idle(struct kgem *kgem, int ring);
+static inline bool kgem_ring_is_idle(struct kgem *kgem, int ring)
+{
+ if (list_is_empty(&kgem->requests[ring]))
+ return true;
+
+ return __kgem_ring_is_idle(kgem, ring);
+}
+
void _kgem_submit(struct kgem *kgem);
static inline void kgem_submit(struct kgem *kgem)
{
@@ -294,7 +304,7 @@ static inline void kgem_submit(struct kgem *kgem)
static inline bool kgem_flush(struct kgem *kgem)
{
- return kgem->flush && list_is_empty(&kgem->requests[kgem->ring]);
+ return kgem->flush && kgem_ring_is_idle(kgem, kgem->ring);
}
static inline void kgem_bo_submit(struct kgem *kgem, struct kgem_bo *bo)