• 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()
71 bo->dev = fd_device_ref(dev); in bo_from_handle()
72 bo->size = size; in bo_from_handle()
73 bo->handle = handle; in bo_from_handle()
74 atomic_set(&bo->refcnt, 1); in bo_from_handle()
75 list_inithead(&bo->list); in bo_from_handle()
77 drmHashInsert(dev->handle_table, handle, bo); in bo_from_handle()
78 return bo; in bo_from_handle()
85 struct fd_bo *bo = NULL; in bo_new() local
89 bo = fd_bo_cache_alloc(cache, &size, flags); in bo_new()
90 if (bo) in bo_new()
91 return bo; in bo_new()
98 bo = bo_from_handle(dev, size, handle); in bo_new()
101 VG_BO_ALLOC(bo); in bo_new()
103 return bo; in bo_new()
109 struct fd_bo *bo = bo_new(dev, size, flags, &dev->bo_cache); in fd_bo_new() local
110 if (bo) in fd_bo_new()
111 bo->bo_reuse = BO_CACHE; in fd_bo_new()
112 return bo; in fd_bo_new()
123 struct fd_bo *bo = bo_new(dev, size, flags, &dev->ring_cache); in fd_bo_new_ring() local
124 if (bo) in fd_bo_new_ring()
125 bo->bo_reuse = RING_CACHE; in fd_bo_new_ring()
126 return bo; in fd_bo_new_ring()
132 struct fd_bo *bo = NULL; in fd_bo_from_handle() local
136 bo = lookup_bo(dev->handle_table, handle); in fd_bo_from_handle()
137 if (bo) in fd_bo_from_handle()
140 bo = bo_from_handle(dev, size, handle); in fd_bo_from_handle()
142 VG_BO_ALLOC(bo); in fd_bo_from_handle()
147 return bo; in fd_bo_from_handle()
155 struct fd_bo *bo; in fd_bo_from_dmabuf() local
164 bo = lookup_bo(dev->handle_table, handle); in fd_bo_from_dmabuf()
165 if (bo) in fd_bo_from_dmabuf()
172 bo = bo_from_handle(dev, size, handle); in fd_bo_from_dmabuf()
174 VG_BO_ALLOC(bo); in fd_bo_from_dmabuf()
179 return bo; in fd_bo_from_dmabuf()
187 struct fd_bo *bo; in fd_bo_from_name() local
192 bo = lookup_bo(dev->name_table, name); in fd_bo_from_name()
193 if (bo) in fd_bo_from_name()
201 bo = lookup_bo(dev->handle_table, req.handle); in fd_bo_from_name()
202 if (bo) in fd_bo_from_name()
205 bo = bo_from_handle(dev, req.size, req.handle); in fd_bo_from_name()
206 if (bo) { in fd_bo_from_name()
207 set_name(bo, name); in fd_bo_from_name()
208 VG_BO_ALLOC(bo); in fd_bo_from_name()
214 return bo; in fd_bo_from_name()
217 drm_public uint64_t fd_bo_get_iova(struct fd_bo *bo) in fd_bo_get_iova() argument
219 return bo->funcs->iova(bo); in fd_bo_get_iova()
222 drm_public void fd_bo_put_iova(struct fd_bo *bo) in fd_bo_put_iova() argument
227 drm_public struct fd_bo * fd_bo_ref(struct fd_bo *bo) in fd_bo_ref() argument
229 atomic_inc(&bo->refcnt); in fd_bo_ref()
230 return bo; in fd_bo_ref()
233 drm_public void fd_bo_del(struct fd_bo *bo) in fd_bo_del() argument
235 struct fd_device *dev = bo->dev; in fd_bo_del()
237 if (!atomic_dec_and_test(&bo->refcnt)) in fd_bo_del()
242 if ((bo->bo_reuse == BO_CACHE) && (fd_bo_cache_free(&dev->bo_cache, bo) == 0)) in fd_bo_del()
244 if ((bo->bo_reuse == RING_CACHE) && (fd_bo_cache_free(&dev->ring_cache, bo) == 0)) in fd_bo_del()
247 bo_del(bo); in fd_bo_del()
254 drm_private void bo_del(struct fd_bo *bo) in bo_del() argument
256 VG_BO_FREE(bo); in bo_del()
258 if (bo->map) in bo_del()
259 drm_munmap(bo->map, bo->size); in bo_del()
265 if (bo->handle) { in bo_del()
267 .handle = bo->handle, in bo_del()
269 drmHashDelete(bo->dev->handle_table, bo->handle); in bo_del()
270 if (bo->name) in bo_del()
271 drmHashDelete(bo->dev->name_table, bo->name); in bo_del()
272 drmIoctl(bo->dev->fd, DRM_IOCTL_GEM_CLOSE, &req); in bo_del()
275 bo->funcs->destroy(bo); in bo_del()
278 drm_public int fd_bo_get_name(struct fd_bo *bo, uint32_t *name) in fd_bo_get_name() argument
280 if (!bo->name) { in fd_bo_get_name()
282 .handle = bo->handle, in fd_bo_get_name()
286 ret = drmIoctl(bo->dev->fd, DRM_IOCTL_GEM_FLINK, &req); in fd_bo_get_name()
292 set_name(bo, req.name); in fd_bo_get_name()
294 bo->bo_reuse = NO_CACHE; in fd_bo_get_name()
297 *name = bo->name; in fd_bo_get_name()
302 drm_public uint32_t fd_bo_handle(struct fd_bo *bo) in fd_bo_handle() argument
304 return bo->handle; in fd_bo_handle()
307 drm_public int fd_bo_dmabuf(struct fd_bo *bo) in fd_bo_dmabuf() argument
311 ret = drmPrimeHandleToFD(bo->dev->fd, bo->handle, DRM_CLOEXEC, in fd_bo_dmabuf()
318 bo->bo_reuse = NO_CACHE; in fd_bo_dmabuf()
323 drm_public uint32_t fd_bo_size(struct fd_bo *bo) in fd_bo_size() argument
325 return bo->size; in fd_bo_size()
328 drm_public void * fd_bo_map(struct fd_bo *bo) in fd_bo_map() argument
330 if (!bo->map) { in fd_bo_map()
334 ret = bo->funcs->offset(bo, &offset); in fd_bo_map()
339 bo->map = drm_mmap(0, bo->size, PROT_READ | PROT_WRITE, MAP_SHARED, in fd_bo_map()
340 bo->dev->fd, offset); in fd_bo_map()
341 if (bo->map == MAP_FAILED) { in fd_bo_map()
343 bo->map = NULL; in fd_bo_map()
346 return bo->map; in fd_bo_map()
350 drm_public int fd_bo_cpu_prep(struct fd_bo *bo, struct fd_pipe *pipe, uint32_t op) in fd_bo_cpu_prep() argument
352 return bo->funcs->cpu_prep(bo, pipe, op); in fd_bo_cpu_prep()
355 drm_public void fd_bo_cpu_fini(struct fd_bo *bo) in fd_bo_cpu_fini() argument
357 bo->funcs->cpu_fini(bo); in fd_bo_cpu_fini()