• Home
  • Raw
  • Download

Lines Matching refs:bo

31 drm_private void bo_del(struct etna_bo *bo);
34 static void set_name(struct etna_bo *bo, uint32_t name) in set_name() argument
36 bo->name = name; in set_name()
38 drmHashInsert(bo->dev->name_table, name, bo); in set_name()
42 drm_private void bo_del(struct etna_bo *bo) in bo_del() argument
44 if (bo->map) in bo_del()
45 drm_munmap(bo->map, bo->size); in bo_del()
47 if (bo->name) in bo_del()
48 drmHashDelete(bo->dev->name_table, bo->name); in bo_del()
50 if (bo->handle) { in bo_del()
52 .handle = bo->handle, in bo_del()
55 drmHashDelete(bo->dev->handle_table, bo->handle); in bo_del()
56 drmIoctl(bo->dev->fd, DRM_IOCTL_GEM_CLOSE, &req); in bo_del()
59 free(bo); in bo_del()
65 struct etna_bo *bo = NULL; in lookup_bo() local
67 if (!drmHashLookup(tbl, handle, (void **)&bo)) { in lookup_bo()
69 bo = etna_bo_ref(bo); in lookup_bo()
72 list_delinit(&bo->list); in lookup_bo()
75 return bo; in lookup_bo()
82 struct etna_bo *bo = calloc(sizeof(*bo), 1); in bo_from_handle() local
84 if (!bo) { in bo_from_handle()
94 bo->dev = etna_device_ref(dev); in bo_from_handle()
95 bo->size = size; in bo_from_handle()
96 bo->handle = handle; in bo_from_handle()
97 bo->flags = flags; in bo_from_handle()
98 atomic_set(&bo->refcnt, 1); in bo_from_handle()
99 list_inithead(&bo->list); in bo_from_handle()
101 drmHashInsert(dev->handle_table, handle, bo); in bo_from_handle()
103 return bo; in bo_from_handle()
110 struct etna_bo *bo; in etna_bo_new() local
116 bo = etna_bo_cache_alloc(&dev->bo_cache, &size, flags); in etna_bo_new()
117 if (bo) in etna_bo_new()
118 return bo; in etna_bo_new()
127 bo = bo_from_handle(dev, size, req.handle, flags); in etna_bo_new()
128 bo->reuse = 1; in etna_bo_new()
131 return bo; in etna_bo_new()
134 struct etna_bo *etna_bo_ref(struct etna_bo *bo) in etna_bo_ref() argument
136 atomic_inc(&bo->refcnt); in etna_bo_ref()
138 return bo; in etna_bo_ref()
142 static int get_buffer_info(struct etna_bo *bo) in get_buffer_info() argument
146 .handle = bo->handle, in get_buffer_info()
149 ret = drmCommandWriteRead(bo->dev->fd, DRM_ETNAVIV_GEM_INFO, in get_buffer_info()
156 bo->offset = req.offset; in get_buffer_info()
164 struct etna_bo *bo; in etna_bo_from_name() local
172 bo = lookup_bo(dev->name_table, name); in etna_bo_from_name()
173 if (bo) in etna_bo_from_name()
181 bo = lookup_bo(dev->handle_table, req.handle); in etna_bo_from_name()
182 if (bo) in etna_bo_from_name()
185 bo = bo_from_handle(dev, req.size, req.handle, 0); in etna_bo_from_name()
186 if (bo) in etna_bo_from_name()
187 set_name(bo, name); in etna_bo_from_name()
192 return bo; in etna_bo_from_name()
201 struct etna_bo *bo; in etna_bo_from_dmabuf() local
217 bo = lookup_bo(dev->handle_table, handle); in etna_bo_from_dmabuf()
218 if (bo) in etna_bo_from_dmabuf()
225 bo = bo_from_handle(dev, size, handle, 0); in etna_bo_from_dmabuf()
230 return bo; in etna_bo_from_dmabuf()
234 void etna_bo_del(struct etna_bo *bo) in etna_bo_del() argument
236 struct etna_device *dev = bo->dev; in etna_bo_del()
238 if (!bo) in etna_bo_del()
241 if (!atomic_dec_and_test(&bo->refcnt)) in etna_bo_del()
246 if (bo->reuse && (etna_bo_cache_free(&dev->bo_cache, bo) == 0)) in etna_bo_del()
249 bo_del(bo); in etna_bo_del()
256 int etna_bo_get_name(struct etna_bo *bo, uint32_t *name) in etna_bo_get_name() argument
258 if (!bo->name) { in etna_bo_get_name()
260 .handle = bo->handle, in etna_bo_get_name()
264 ret = drmIoctl(bo->dev->fd, DRM_IOCTL_GEM_FLINK, &req); in etna_bo_get_name()
270 set_name(bo, req.name); in etna_bo_get_name()
272 bo->reuse = 0; in etna_bo_get_name()
275 *name = bo->name; in etna_bo_get_name()
280 uint32_t etna_bo_handle(struct etna_bo *bo) in etna_bo_handle() argument
282 return bo->handle; in etna_bo_handle()
288 int etna_bo_dmabuf(struct etna_bo *bo) in etna_bo_dmabuf() argument
292 ret = drmPrimeHandleToFD(bo->dev->fd, bo->handle, DRM_CLOEXEC, in etna_bo_dmabuf()
299 bo->reuse = 0; in etna_bo_dmabuf()
304 uint32_t etna_bo_size(struct etna_bo *bo) in etna_bo_size() argument
306 return bo->size; in etna_bo_size()
309 void *etna_bo_map(struct etna_bo *bo) in etna_bo_map() argument
311 if (!bo->map) { in etna_bo_map()
312 if (!bo->offset) { in etna_bo_map()
313 get_buffer_info(bo); in etna_bo_map()
316 bo->map = drm_mmap(0, bo->size, PROT_READ | PROT_WRITE, in etna_bo_map()
317 MAP_SHARED, bo->dev->fd, bo->offset); in etna_bo_map()
318 if (bo->map == MAP_FAILED) { in etna_bo_map()
320 bo->map = NULL; in etna_bo_map()
324 return bo->map; in etna_bo_map()
327 int etna_bo_cpu_prep(struct etna_bo *bo, uint32_t op) in etna_bo_cpu_prep() argument
330 .handle = bo->handle, in etna_bo_cpu_prep()
336 return drmCommandWrite(bo->dev->fd, DRM_ETNAVIV_GEM_CPU_PREP, in etna_bo_cpu_prep()
340 void etna_bo_cpu_fini(struct etna_bo *bo) in etna_bo_cpu_fini() argument
343 .handle = bo->handle, in etna_bo_cpu_fini()
346 drmCommandWrite(bo->dev->fd, DRM_ETNAVIV_GEM_CPU_FINI, in etna_bo_cpu_fini()