Lines Matching defs:ib

57  * @ib: IB object returned
65 struct radeon_ib *ib, struct radeon_vm *vm,
70 r = radeon_sa_bo_new(rdev, &rdev->ring_tmp_bo, &ib->sa_bo, size, 256, true);
76 r = radeon_semaphore_create(rdev, &ib->semaphore);
81 ib->ring = ring;
82 ib->fence = NULL;
83 ib->ptr = radeon_sa_bo_cpu_addr(ib->sa_bo);
84 ib->vm = vm;
86 /* ib pool is bound at RADEON_VA_IB_OFFSET in virtual address
89 ib->gpu_addr = ib->sa_bo->soffset + RADEON_VA_IB_OFFSET;
91 ib->gpu_addr = radeon_sa_bo_gpu_addr(ib->sa_bo);
93 ib->is_const_ib = false;
95 ib->sync_to[i] = NULL;
104 * @ib: IB object to free
108 void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib *ib)
110 radeon_semaphore_free(rdev, &ib->semaphore, ib->fence);
111 radeon_sa_bo_free(rdev, &ib->sa_bo, ib->fence);
112 radeon_fence_unref(&ib->fence);
119 * @ib: IB object to schedule
135 int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib,
138 struct radeon_ring *ring = &rdev->ring[ib->ring];
142 if (!ib->length_dw || !ring->ready) {
143 /* TODO: Nothings in the ib we should report. */
144 dev_err(rdev->dev, "couldn't schedule ib\n");
155 struct radeon_fence *fence = ib->sync_to[i];
156 if (radeon_fence_need_sync(fence, ib->ring)) {
158 radeon_semaphore_sync_rings(rdev, ib->semaphore,
159 fence->ring, ib->ring);
160 radeon_fence_note_sync(fence, ib->ring);
165 radeon_semaphore_free(rdev, &ib->semaphore, NULL);
168 if (ib->vm && !ib->vm->last_flush) {
169 radeon_ring_vm_flush(rdev, ib->ring, ib->vm);
175 radeon_ring_ib_execute(rdev, ib->ring, ib);
176 r = radeon_fence_emit(rdev, &ib->fence, ib->ring);
183 const_ib->fence = radeon_fence_ref(ib->fence);
186 if (ib->vm && !ib->vm->last_flush) {
187 ib->vm->last_flush = radeon_fence_ref(ib->fence);