• Home
  • Raw
  • Download

Lines Matching refs:bo

33 drm_private void bo_del(struct fd_bo *bo);
36 static void set_name(struct fd_bo *bo, uint32_t name) in set_name() argument
38 bo->name = name; in set_name()
40 drmHashInsert(bo->dev->name_table, name, bo); in set_name()
46 struct fd_bo *bo = NULL; in lookup_bo() local
47 if (!drmHashLookup(tbl, key, (void **)&bo)) { in lookup_bo()
49 bo = fd_bo_ref(bo); in lookup_bo()
52 list_delinit(&bo->list); in lookup_bo()
54 return bo; in lookup_bo()
61 struct fd_bo *bo; in bo_from_handle() local
63 bo = dev->funcs->bo_from_handle(dev, size, handle); in bo_from_handle()
64 if (!bo) { in bo_from_handle()
68 bo->dev = fd_device_ref(dev); in bo_from_handle()
69 bo->size = size; in bo_from_handle()
70 bo->handle = handle; in bo_from_handle()
71 atomic_set(&bo->refcnt, 1); in bo_from_handle()
72 list_inithead(&bo->list); in bo_from_handle()
74 drmHashInsert(dev->handle_table, handle, bo); in bo_from_handle()
75 return bo; in bo_from_handle()
82 struct fd_bo *bo = NULL; in bo_new() local
86 bo = fd_bo_cache_alloc(cache, &size, flags); in bo_new()
87 if (bo) in bo_new()
88 return bo; in bo_new()
95 bo = bo_from_handle(dev, size, handle); in bo_new()
98 VG_BO_ALLOC(bo); in bo_new()
100 return bo; in bo_new()
106 struct fd_bo *bo = bo_new(dev, size, flags, &dev->bo_cache); in fd_bo_new() local
107 if (bo) in fd_bo_new()
108 bo->bo_reuse = BO_CACHE; in fd_bo_new()
109 return bo; in fd_bo_new()
120 struct fd_bo *bo = bo_new(dev, size, flags, &dev->ring_cache); in fd_bo_new_ring() local
121 if (bo) in fd_bo_new_ring()
122 bo->bo_reuse = RING_CACHE; in fd_bo_new_ring()
123 return bo; in fd_bo_new_ring()
129 struct fd_bo *bo = NULL; in fd_bo_from_handle() local
133 bo = lookup_bo(dev->handle_table, handle); in fd_bo_from_handle()
134 if (bo) in fd_bo_from_handle()
137 bo = bo_from_handle(dev, size, handle); in fd_bo_from_handle()
139 VG_BO_ALLOC(bo); in fd_bo_from_handle()
144 return bo; in fd_bo_from_handle()
152 struct fd_bo *bo; in fd_bo_from_dmabuf() local
161 bo = lookup_bo(dev->handle_table, handle); in fd_bo_from_dmabuf()
162 if (bo) in fd_bo_from_dmabuf()
169 bo = bo_from_handle(dev, size, handle); in fd_bo_from_dmabuf()
171 VG_BO_ALLOC(bo); in fd_bo_from_dmabuf()
176 return bo; in fd_bo_from_dmabuf()
184 struct fd_bo *bo; in fd_bo_from_name() local
189 bo = lookup_bo(dev->name_table, name); in fd_bo_from_name()
190 if (bo) in fd_bo_from_name()
198 bo = lookup_bo(dev->handle_table, req.handle); in fd_bo_from_name()
199 if (bo) in fd_bo_from_name()
202 bo = bo_from_handle(dev, req.size, req.handle); in fd_bo_from_name()
203 if (bo) { in fd_bo_from_name()
204 set_name(bo, name); in fd_bo_from_name()
205 VG_BO_ALLOC(bo); in fd_bo_from_name()
211 return bo; in fd_bo_from_name()
214 drm_public uint64_t fd_bo_get_iova(struct fd_bo *bo) in fd_bo_get_iova() argument
216 return bo->funcs->iova(bo); in fd_bo_get_iova()
219 drm_public void fd_bo_put_iova(struct fd_bo *bo) in fd_bo_put_iova() argument
224 drm_public struct fd_bo * fd_bo_ref(struct fd_bo *bo) in fd_bo_ref() argument
226 atomic_inc(&bo->refcnt); in fd_bo_ref()
227 return bo; in fd_bo_ref()
230 drm_public void fd_bo_del(struct fd_bo *bo) in fd_bo_del() argument
232 struct fd_device *dev = bo->dev; in fd_bo_del()
234 if (!atomic_dec_and_test(&bo->refcnt)) in fd_bo_del()
239 if ((bo->bo_reuse == BO_CACHE) && (fd_bo_cache_free(&dev->bo_cache, bo) == 0)) in fd_bo_del()
241 if ((bo->bo_reuse == RING_CACHE) && (fd_bo_cache_free(&dev->ring_cache, bo) == 0)) in fd_bo_del()
244 bo_del(bo); in fd_bo_del()
251 drm_private void bo_del(struct fd_bo *bo) in bo_del() argument
253 VG_BO_FREE(bo); in bo_del()
255 if (bo->map) in bo_del()
256 drm_munmap(bo->map, bo->size); in bo_del()
262 if (bo->handle) { in bo_del()
263 drmHashDelete(bo->dev->handle_table, bo->handle); in bo_del()
264 if (bo->name) in bo_del()
265 drmHashDelete(bo->dev->name_table, bo->name); in bo_del()
266 drmCloseBufferHandle(bo->dev->fd, bo->handle); in bo_del()
269 bo->funcs->destroy(bo); in bo_del()
272 drm_public int fd_bo_get_name(struct fd_bo *bo, uint32_t *name) in fd_bo_get_name() argument
274 if (!bo->name) { in fd_bo_get_name()
276 .handle = bo->handle, in fd_bo_get_name()
280 ret = drmIoctl(bo->dev->fd, DRM_IOCTL_GEM_FLINK, &req); in fd_bo_get_name()
286 set_name(bo, req.name); in fd_bo_get_name()
288 bo->bo_reuse = NO_CACHE; in fd_bo_get_name()
291 *name = bo->name; in fd_bo_get_name()
296 drm_public uint32_t fd_bo_handle(struct fd_bo *bo) in fd_bo_handle() argument
298 return bo->handle; in fd_bo_handle()
301 drm_public int fd_bo_dmabuf(struct fd_bo *bo) in fd_bo_dmabuf() argument
305 ret = drmPrimeHandleToFD(bo->dev->fd, bo->handle, DRM_CLOEXEC, in fd_bo_dmabuf()
312 bo->bo_reuse = NO_CACHE; in fd_bo_dmabuf()
317 drm_public uint32_t fd_bo_size(struct fd_bo *bo) in fd_bo_size() argument
319 return bo->size; in fd_bo_size()
322 drm_public void * fd_bo_map(struct fd_bo *bo) in fd_bo_map() argument
324 if (!bo->map) { in fd_bo_map()
328 ret = bo->funcs->offset(bo, &offset); in fd_bo_map()
333 bo->map = drm_mmap(0, bo->size, PROT_READ | PROT_WRITE, MAP_SHARED, in fd_bo_map()
334 bo->dev->fd, offset); in fd_bo_map()
335 if (bo->map == MAP_FAILED) { in fd_bo_map()
337 bo->map = NULL; in fd_bo_map()
340 return bo->map; in fd_bo_map()
344 drm_public int fd_bo_cpu_prep(struct fd_bo *bo, struct fd_pipe *pipe, uint32_t op) in fd_bo_cpu_prep() argument
346 return bo->funcs->cpu_prep(bo, pipe, op); in fd_bo_cpu_prep()
349 drm_public void fd_bo_cpu_fini(struct fd_bo *bo) in fd_bo_cpu_fini() argument
351 bo->funcs->cpu_fini(bo); in fd_bo_cpu_fini()