diff options
-rw-r--r-- | src/sna/kgem.c | 18 | ||||
-rw-r--r-- | src/sna/kgem.h | 2 |
2 files changed, 10 insertions, 10 deletions
diff --git a/src/sna/kgem.c b/src/sna/kgem.c index 2138f1a2..200c7555 100644 --- a/src/sna/kgem.c +++ b/src/sna/kgem.c @@ -3716,9 +3716,6 @@ bool kgem_check_bo(struct kgem *kgem, ...) int num_exec = 0; int num_pages = 0; - if (kgem_flush(kgem)) - return false; - va_start(ap, kgem); while ((bo = va_arg(ap, struct kgem_bo *))) { if (bo->exec) @@ -3740,6 +3737,9 @@ bool kgem_check_bo(struct kgem *kgem, ...) if (!num_pages) return true; + if (kgem_flush(kgem)) + return false; + if (kgem->aperture > kgem->aperture_low && kgem_is_idle(kgem)) { DBG(("%s: current aperture usage (%d) is greater than low water mark (%d)\n", __FUNCTION__, kgem->aperture, kgem->aperture_low)); @@ -3765,9 +3765,6 @@ bool kgem_check_bo_fenced(struct kgem *kgem, struct kgem_bo *bo) { uint32_t size; - if (kgem_flush(kgem)) - return false; - while (bo->proxy) bo = bo->proxy; if (bo->exec) { @@ -3786,6 +3783,9 @@ bool kgem_check_bo_fenced(struct kgem *kgem, struct kgem_bo *bo) return true; } + if (kgem_flush(kgem)) + return false; + if (kgem->nexec >= KGEM_EXEC_SIZE(kgem) - 1) return false; @@ -3820,9 +3820,6 @@ bool kgem_check_many_bo_fenced(struct kgem *kgem, ...) int num_pages = 0; int fenced_size = 0; - if (kgem_flush(kgem)) - return false; - va_start(ap, kgem); while ((bo = va_arg(ap, struct kgem_bo *))) { while (bo->proxy) @@ -3860,6 +3857,9 @@ bool kgem_check_many_bo_fenced(struct kgem *kgem, ...) } if (num_pages) { + if (kgem_flush(kgem)) + return false; + if (kgem->aperture > kgem->aperture_low && kgem_is_idle(kgem)) return false; diff --git a/src/sna/kgem.h b/src/sna/kgem.h index 2d04b53c..8a3a4fa2 100644 --- a/src/sna/kgem.h +++ b/src/sna/kgem.h @@ -294,7 +294,7 @@ static inline void kgem_submit(struct kgem *kgem) static inline bool kgem_flush(struct kgem *kgem) { - return kgem->flush && kgem_is_idle(kgem); + return kgem->flush && list_is_empty(&kgem->requests[kgem->ring]); } static inline void kgem_bo_submit(struct kgem *kgem, struct kgem_bo *bo) |