Lines Matching refs:ib
59 struct radeon_ib *ib, struct radeon_vm *vm, in radeon_ib_get() argument
64 r = radeon_sa_bo_new(&rdev->ring_tmp_bo, &ib->sa_bo, size, 256); in radeon_ib_get()
70 radeon_sync_create(&ib->sync); in radeon_ib_get()
72 ib->ring = ring; in radeon_ib_get()
73 ib->fence = NULL; in radeon_ib_get()
74 ib->ptr = radeon_sa_bo_cpu_addr(ib->sa_bo); in radeon_ib_get()
75 ib->vm = vm; in radeon_ib_get()
80 ib->gpu_addr = drm_suballoc_soffset(ib->sa_bo) + RADEON_VA_IB_OFFSET; in radeon_ib_get()
82 ib->gpu_addr = radeon_sa_bo_gpu_addr(ib->sa_bo); in radeon_ib_get()
84 ib->is_const_ib = false; in radeon_ib_get()
97 void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib *ib) in radeon_ib_free() argument
99 radeon_sync_free(rdev, &ib->sync, ib->fence); in radeon_ib_free()
100 radeon_sa_bo_free(&ib->sa_bo, ib->fence); in radeon_ib_free()
101 radeon_fence_unref(&ib->fence); in radeon_ib_free()
125 int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib, in radeon_ib_schedule() argument
128 struct radeon_ring *ring = &rdev->ring[ib->ring]; in radeon_ib_schedule()
131 if (!ib->length_dw || !ring->ready) { in radeon_ib_schedule()
145 if (ib->vm) { in radeon_ib_schedule()
147 vm_id_fence = radeon_vm_grab_id(rdev, ib->vm, ib->ring); in radeon_ib_schedule()
148 radeon_sync_fence(&ib->sync, vm_id_fence); in radeon_ib_schedule()
152 r = radeon_sync_rings(rdev, &ib->sync, ib->ring); in radeon_ib_schedule()
159 if (ib->vm) in radeon_ib_schedule()
160 radeon_vm_flush(rdev, ib->vm, ib->ring, in radeon_ib_schedule()
161 ib->sync.last_vm_update); in radeon_ib_schedule()
167 radeon_ring_ib_execute(rdev, ib->ring, ib); in radeon_ib_schedule()
168 r = radeon_fence_emit(rdev, &ib->fence, ib->ring); in radeon_ib_schedule()
175 const_ib->fence = radeon_fence_ref(ib->fence); in radeon_ib_schedule()
178 if (ib->vm) in radeon_ib_schedule()
179 radeon_vm_fence(rdev, ib->vm, ib->fence); in radeon_ib_schedule()