Home | History | Annotate | Download | only in tegra

Lines Matching refs:bo

42 static void drm_tegra_bo_free(struct drm_tegra_bo *bo)
44 struct drm_tegra *drm = bo->drm;
47 if (bo->map)
48 munmap(bo->map, bo->size);
51 args.handle = bo->handle;
55 free(bo);
112 struct drm_tegra_bo *bo;
118 bo = calloc(1, sizeof(*bo));
119 if (!bo)
122 atomic_set(&bo->ref, 1);
123 bo->flags = flags;
124 bo->size = size;
125 bo->drm = drm;
135 free(bo);
139 bo->handle = args.handle;
141 *bop = bo;
149 struct drm_tegra_bo *bo;
154 bo = calloc(1, sizeof(*bo));
155 if (!bo)
158 atomic_set(&bo->ref, 1);
159 bo->handle = handle;
160 bo->flags = flags;
161 bo->size = size;
162 bo->drm = drm;
164 *bop = bo;
172 struct drm_tegra_bo *bo;
201 int drm_tegra_bo_name_get(struct drm_tegra_bo *bo, uint32_t *name)
206 args.handle = bo->handle;
208 *name = bo->name;
212 ret = drmIoctl(bo->drm->fd, DRM_IOCTL_GEM_FLINK, &args);
218 bo->name = args.name;
219 *name = bo->name;
224 struct drm_tegra_bo *drm_tegra_bo_ref(struct drm_tegra_bo *bo)
226 if (bo)
227 atomic_inc(&bo->ref);
229 return bo;
232 void drm_tegra_bo_unref(struct drm_tegra_bo *bo)
234 if (bo && atomic_dec_and_test(&bo->ref))
235 drm_tegra_bo_free(bo);
238 int drm_tegra_bo_get_handle(struct drm_tegra_bo *bo, uint32_t *handle)
240 if (!bo || !handle)
243 *handle = bo->handle;
248 int drm_tegra_bo_map(struct drm_tegra_bo *bo, void **ptr)
250 struct drm_tegra *drm = bo->drm;
252 if (!bo->map) {
257 args.handle = bo->handle;
264 bo->offset = args.offset;
266 bo->map = mmap(0, bo->size, PROT_READ | PROT_WRITE, MAP_SHARED,
267 drm->fd, bo->offset);
268 if (bo->map == MAP_FAILED) {
269 bo->map = NULL;
275 *ptr = bo->map;
280 int drm_tegra_bo_unmap(struct drm_tegra_bo *bo)
282 if (!bo)
285 if (!bo->map)
288 if (munmap(bo->map, bo->size))
291 bo->map = NULL;
296 int drm_tegra_bo_get_flags(struct drm_tegra_bo *bo, uint32_t *flags)
299 struct drm_tegra *drm = bo->drm;
302 if (!bo)
306 args.handle = bo->handle;
319 int drm_tegra_bo_set_flags(struct drm_tegra_bo *bo, uint32_t flags)
322 struct drm_tegra *drm = bo->drm;
325 if (!bo)
329 args.handle = bo->handle;
340 int drm_tegra_bo_get_tiling(struct drm_tegra_bo *bo,
344 struct drm_tegra *drm = bo->drm;
347 if (!bo)
351 args.handle = bo->handle;
366 int drm_tegra_bo_set_tiling(struct drm_tegra_bo *bo,
370 struct drm_tegra *drm = bo->drm;
373 if (!bo)
377 args.handle = bo->handle;