1 | /* SPDX-License-Identifier: MIT */ |
2 | #ifndef __NOUVEAU_GEM_H__ |
3 | #define __NOUVEAU_GEM_H__ |
4 | |
5 | #include "nouveau_drv.h" |
6 | #include "nouveau_bo.h" |
7 | |
8 | extern const struct drm_gem_object_funcs nouveau_gem_object_funcs; |
9 | |
10 | static inline struct nouveau_bo * |
11 | nouveau_gem_object(struct drm_gem_object *gem) |
12 | { |
13 | return gem ? container_of(gem, struct nouveau_bo, bo.base) : NULL; |
14 | } |
15 | |
16 | /* nouveau_gem.c */ |
17 | extern int nouveau_gem_new(struct nouveau_cli *, u64 size, int align, |
18 | uint32_t domain, uint32_t tile_mode, |
19 | uint32_t tile_flags, struct nouveau_bo **); |
20 | extern void nouveau_gem_object_del(struct drm_gem_object *); |
21 | extern int nouveau_gem_object_open(struct drm_gem_object *, struct drm_file *); |
22 | extern void nouveau_gem_object_close(struct drm_gem_object *, |
23 | struct drm_file *); |
24 | extern int nouveau_gem_ioctl_new(struct drm_device *, void *, |
25 | struct drm_file *); |
26 | extern int nouveau_gem_ioctl_pushbuf(struct drm_device *, void *, |
27 | struct drm_file *); |
28 | extern int nouveau_gem_ioctl_cpu_prep(struct drm_device *, void *, |
29 | struct drm_file *); |
30 | extern int nouveau_gem_ioctl_cpu_fini(struct drm_device *, void *, |
31 | struct drm_file *); |
32 | extern int nouveau_gem_ioctl_info(struct drm_device *, void *, |
33 | struct drm_file *); |
34 | |
35 | extern int nouveau_gem_prime_pin(struct drm_gem_object *); |
36 | extern void nouveau_gem_prime_unpin(struct drm_gem_object *); |
37 | extern struct sg_table *nouveau_gem_prime_get_sg_table(struct drm_gem_object *); |
38 | extern struct drm_gem_object *nouveau_gem_prime_import_sg_table( |
39 | struct drm_device *, struct dma_buf_attachment *, struct sg_table *); |
40 | struct dma_buf *nouveau_gem_prime_export(struct drm_gem_object *gobj, |
41 | int flags); |
42 | #endif |
43 | |