• Home
  • Raw
  • Download

Lines Matching refs:bo

163 	struct omap_bo *bo = NULL;  in lookup_bo()  local
164 if (!drmHashLookup(dev->handle_table, handle, (void **)&bo)) { in lookup_bo()
166 bo = omap_bo_ref(bo); in lookup_bo()
168 return bo; in lookup_bo()
175 struct omap_bo *bo = calloc(sizeof(*bo), 1); in bo_from_handle() local
176 if (!bo) { in bo_from_handle()
183 bo->dev = omap_device_ref(dev); in bo_from_handle()
184 bo->handle = handle; in bo_from_handle()
185 bo->fd = -1; in bo_from_handle()
186 atomic_set(&bo->refcnt, 1); in bo_from_handle()
188 drmHashInsert(dev->handle_table, handle, bo); in bo_from_handle()
189 return bo; in bo_from_handle()
196 struct omap_bo *bo = NULL; in omap_bo_new_impl() local
211 bo = bo_from_handle(dev, req.handle); in omap_bo_new_impl()
215 bo->size = round_up(size.tiled.width, PAGE_SIZE) * size.tiled.height; in omap_bo_new_impl()
217 bo->size = size.bytes; in omap_bo_new_impl()
220 return bo; in omap_bo_new_impl()
223 free(bo); in omap_bo_new_impl()
258 struct omap_bo *omap_bo_ref(struct omap_bo *bo) in omap_bo_ref() argument
260 atomic_inc(&bo->refcnt); in omap_bo_ref()
261 return bo; in omap_bo_ref()
265 static int get_buffer_info(struct omap_bo *bo) in get_buffer_info() argument
268 .handle = bo->handle, in get_buffer_info()
270 int ret = drmCommandWriteRead(bo->dev->fd, DRM_OMAP_GEM_INFO, in get_buffer_info()
277 bo->offset = req.offset; in get_buffer_info()
278 bo->size = req.size; in get_buffer_info()
287 struct omap_bo *bo = NULL; in omap_bo_from_name() local
298 bo = lookup_bo(dev, req.handle); in omap_bo_from_name()
299 if (!bo) { in omap_bo_from_name()
300 bo = bo_from_handle(dev, req.handle); in omap_bo_from_name()
301 bo->name = name; in omap_bo_from_name()
306 return bo; in omap_bo_from_name()
310 free(bo); in omap_bo_from_name()
321 struct omap_bo *bo = NULL; in omap_bo_from_dmabuf() local
334 bo = lookup_bo(dev, req.handle); in omap_bo_from_dmabuf()
335 if (!bo) { in omap_bo_from_dmabuf()
336 bo = bo_from_handle(dev, req.handle); in omap_bo_from_dmabuf()
341 return bo; in omap_bo_from_dmabuf()
345 free(bo); in omap_bo_from_dmabuf()
350 void omap_bo_del(struct omap_bo *bo) in omap_bo_del() argument
352 if (!bo) { in omap_bo_del()
356 if (!atomic_dec_and_test(&bo->refcnt)) in omap_bo_del()
359 if (bo->map) { in omap_bo_del()
360 munmap(bo->map, bo->size); in omap_bo_del()
363 if (bo->fd >= 0) { in omap_bo_del()
364 close(bo->fd); in omap_bo_del()
367 if (bo->handle) { in omap_bo_del()
369 .handle = bo->handle, in omap_bo_del()
372 drmHashDelete(bo->dev->handle_table, bo->handle); in omap_bo_del()
373 drmIoctl(bo->dev->fd, DRM_IOCTL_GEM_CLOSE, &req); in omap_bo_del()
377 omap_device_del(bo->dev); in omap_bo_del()
379 free(bo); in omap_bo_del()
383 int omap_bo_get_name(struct omap_bo *bo, uint32_t *name) in omap_bo_get_name() argument
385 if (!bo->name) { in omap_bo_get_name()
387 .handle = bo->handle, in omap_bo_get_name()
391 ret = drmIoctl(bo->dev->fd, DRM_IOCTL_GEM_FLINK, &req); in omap_bo_get_name()
396 bo->name = req.name; in omap_bo_get_name()
399 *name = bo->name; in omap_bo_get_name()
404 uint32_t omap_bo_handle(struct omap_bo *bo) in omap_bo_handle() argument
406 return bo->handle; in omap_bo_handle()
412 int omap_bo_dmabuf(struct omap_bo *bo) in omap_bo_dmabuf() argument
414 if (bo->fd < 0) { in omap_bo_dmabuf()
416 .handle = bo->handle, in omap_bo_dmabuf()
421 ret = drmIoctl(bo->dev->fd, DRM_IOCTL_PRIME_HANDLE_TO_FD, &req); in omap_bo_dmabuf()
426 bo->fd = req.fd; in omap_bo_dmabuf()
428 return dup(bo->fd); in omap_bo_dmabuf()
431 uint32_t omap_bo_size(struct omap_bo *bo) in omap_bo_size() argument
433 if (!bo->size) { in omap_bo_size()
434 get_buffer_info(bo); in omap_bo_size()
436 return bo->size; in omap_bo_size()
439 void *omap_bo_map(struct omap_bo *bo) in omap_bo_map() argument
441 if (!bo->map) { in omap_bo_map()
442 if (!bo->offset) { in omap_bo_map()
443 get_buffer_info(bo); in omap_bo_map()
446 bo->map = mmap(0, bo->size, PROT_READ | PROT_WRITE, in omap_bo_map()
447 MAP_SHARED, bo->dev->fd, bo->offset); in omap_bo_map()
448 if (bo->map == MAP_FAILED) { in omap_bo_map()
449 bo->map = NULL; in omap_bo_map()
452 return bo->map; in omap_bo_map()
455 int omap_bo_cpu_prep(struct omap_bo *bo, enum omap_gem_op op) in omap_bo_cpu_prep() argument
458 .handle = bo->handle, in omap_bo_cpu_prep()
461 return drmCommandWrite(bo->dev->fd, in omap_bo_cpu_prep()
465 int omap_bo_cpu_fini(struct omap_bo *bo, enum omap_gem_op op) in omap_bo_cpu_fini() argument
468 .handle = bo->handle, in omap_bo_cpu_fini()
472 return drmCommandWrite(bo->dev->fd, in omap_bo_cpu_fini()