sna: Mollify an assert to allow us to call busy_ioctl on a GTT write
The code was being careful in making sure that only a BO with an outstanding GPU write was being flushed. We need to relax that assertion to allow us to call busy_ioctl after only GTT writes. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
7d91051c50
commit
1392f296a3
|
|
@ -4182,16 +4182,14 @@ void _kgem_bo_destroy(struct kgem *kgem, struct kgem_bo *bo)
|
|||
|
||||
void __kgem_flush(struct kgem *kgem, struct kgem_bo *bo)
|
||||
{
|
||||
assert(bo->rq);
|
||||
assert(bo->exec == NULL);
|
||||
assert(bo->needs_flush);
|
||||
|
||||
/* The kernel will emit a flush *and* update its own flushing lists. */
|
||||
if (!__kgem_busy(kgem, bo->handle))
|
||||
if (bo->exec == NULL && !__kgem_busy(kgem, bo->handle))
|
||||
__kgem_bo_clear_busy(bo);
|
||||
|
||||
DBG(("%s: handle=%d, busy?=%d\n",
|
||||
__FUNCTION__, bo->handle, bo->rq != NULL));
|
||||
DBG(("%s: handle=%d, busy?=%d, flushed?=%d\n",
|
||||
__FUNCTION__, bo->handle, bo->rq != NULL, bo->exec == NULL));
|
||||
}
|
||||
|
||||
inline static bool needs_semaphore(struct kgem *kgem, struct kgem_bo *bo)
|
||||
|
|
|
|||
|
|
@ -338,10 +338,15 @@ static inline void kgem_bo_flush(struct kgem *kgem, struct kgem_bo *bo)
|
|||
return;
|
||||
|
||||
/* If the kernel fails to emit the flush, then it will be forced when
|
||||
* we assume direct access. And as the useual failure is EIO, we do
|
||||
* not actualy care.
|
||||
* we assume direct access. And as the usual failure is EIO, we do
|
||||
* not actually care.
|
||||
*/
|
||||
__kgem_flush(kgem, bo);
|
||||
|
||||
/* Whatever actually happens, we can regard the GTT write domain
|
||||
* as being flushed.
|
||||
*/
|
||||
bo->gtt_dirty = false;
|
||||
}
|
||||
|
||||
static inline struct kgem_bo *kgem_bo_reference(struct kgem_bo *bo)
|
||||
|
|
|
|||
Loading…
Reference in New Issue