static inline void kgem_bo_submit(struct kgem *kgem, struct kgem_bo *bo)
{
+ assert(bo->refcnt);
if (bo->exec)
_kgem_submit(kgem);
}
static inline bool kgem_bo_can_blt(struct kgem *kgem,
struct kgem_bo *bo)
{
+ assert(bo->refcnt);
+
if (bo->tiling == I915_TILING_Y) {
DBG(("%s: can not blt to handle=%d, tiling=Y\n",
__FUNCTION__, bo->handle));
static inline void kgem_bo_mark_busy(struct kgem_bo *bo, int ring)
{
+ assert(bo->refcnt);
bo->rq = (struct kgem_request *)((uintptr_t)bo->rq | ring);
}
static inline void kgem_bo_mark_unreusable(struct kgem_bo *bo)
{
+ assert(bo->refcnt);
while (bo->proxy) {
bo->flush = true;
bo = bo->proxy;
+ assert(bo->refcnt);
}
bo->flush = true;
bo->reusable = false;
DBG(("%s: handle=%d (proxy? %d)\n", __FUNCTION__,
bo->handle, bo->proxy != NULL));
+ assert(bo->refcnt);
+
bo->exec->flags |= LOCAL_EXEC_OBJECT_WRITE;
bo->needs_flush = bo->gpu_dirty = true;
list_move(&bo->request, &RQ(bo->rq)->buffers);
struct kgem_bo *bo,
bool write)
{
+ assert(bo->refcnt);
+
if (bo->purged || (bo->scanout && write))
return false;