1 /* 2 * This header was generated from the Linux kernel headers by update_headers.py, 3 * to provide necessary information from kernel to userspace, such as constants, 4 * structures, and macros, and thus, contains no copyrightable information. 5 */ 6 #ifndef __NOUVEAU_DRM_H__ 7 #define __NOUVEAU_DRM_H__ 8 #define DRM_NOUVEAU_EVENT_NVIF 0x80000000 9 #include "drm.h" 10 #if defined(__cplusplus) 11 extern "C" { 12 #endif 13 #define NOUVEAU_GEM_DOMAIN_CPU (1 << 0) 14 #define NOUVEAU_GEM_DOMAIN_VRAM (1 << 1) 15 #define NOUVEAU_GEM_DOMAIN_GART (1 << 2) 16 #define NOUVEAU_GEM_DOMAIN_MAPPABLE (1 << 3) 17 #define NOUVEAU_GEM_DOMAIN_COHERENT (1 << 4) 18 #define NOUVEAU_GEM_TILE_COMP 0x00030000 19 #define NOUVEAU_GEM_TILE_LAYOUT_MASK 0x0000ff00 20 #define NOUVEAU_GEM_TILE_16BPP 0x00000001 21 #define NOUVEAU_GEM_TILE_32BPP 0x00000002 22 #define NOUVEAU_GEM_TILE_ZETA 0x00000004 23 #define NOUVEAU_GEM_TILE_NONCONTIG 0x00000008 24 struct drm_nouveau_gem_info { 25 __u32 handle; 26 __u32 domain; 27 __u64 size; 28 __u64 offset; 29 __u64 map_handle; 30 __u32 tile_mode; 31 __u32 tile_flags; 32 }; 33 struct drm_nouveau_gem_new { 34 struct drm_nouveau_gem_info info; 35 __u32 channel_hint; 36 __u32 align; 37 }; 38 #define NOUVEAU_GEM_MAX_BUFFERS 1024 39 struct drm_nouveau_gem_pushbuf_bo_presumed { 40 __u32 valid; 41 __u32 domain; 42 __u64 offset; 43 }; 44 struct drm_nouveau_gem_pushbuf_bo { 45 __u64 user_priv; 46 __u32 handle; 47 __u32 read_domains; 48 __u32 write_domains; 49 __u32 valid_domains; 50 struct drm_nouveau_gem_pushbuf_bo_presumed presumed; 51 }; 52 #define NOUVEAU_GEM_RELOC_LOW (1 << 0) 53 #define NOUVEAU_GEM_RELOC_HIGH (1 << 1) 54 #define NOUVEAU_GEM_RELOC_OR (1 << 2) 55 #define NOUVEAU_GEM_MAX_RELOCS 1024 56 struct drm_nouveau_gem_pushbuf_reloc { 57 __u32 reloc_bo_index; 58 __u32 reloc_bo_offset; 59 __u32 bo_index; 60 __u32 flags; 61 __u32 data; 62 __u32 vor; 63 __u32 tor; 64 }; 65 #define NOUVEAU_GEM_MAX_PUSH 512 66 struct drm_nouveau_gem_pushbuf_push { 67 __u32 bo_index; 68 __u32 pad; 69 __u64 offset; 70 __u64 length; 71 }; 72 struct drm_nouveau_gem_pushbuf { 73 __u32 channel; 74 __u32 nr_buffers; 75 __u64 buffers; 76 __u32 nr_relocs; 77 __u32 nr_push; 78 __u64 relocs; 79 __u64 push; 80 __u32 suffix0; 81 __u32 suffix1; 82 __u64 vram_available; 83 __u64 gart_available; 84 }; 85 #define NOUVEAU_GEM_CPU_PREP_NOWAIT 0x00000001 86 #define NOUVEAU_GEM_CPU_PREP_WRITE 0x00000004 87 struct drm_nouveau_gem_cpu_prep { 88 __u32 handle; 89 __u32 flags; 90 }; 91 struct drm_nouveau_gem_cpu_fini { 92 __u32 handle; 93 }; 94 #define DRM_NOUVEAU_GETPARAM 0x00 95 #define DRM_NOUVEAU_SETPARAM 0x01 96 #define DRM_NOUVEAU_CHANNEL_ALLOC 0x02 97 #define DRM_NOUVEAU_CHANNEL_FREE 0x03 98 #define DRM_NOUVEAU_GROBJ_ALLOC 0x04 99 #define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC 0x05 100 #define DRM_NOUVEAU_GPUOBJ_FREE 0x06 101 #define DRM_NOUVEAU_NVIF 0x07 102 #define DRM_NOUVEAU_GEM_NEW 0x40 103 #define DRM_NOUVEAU_GEM_PUSHBUF 0x41 104 #define DRM_NOUVEAU_GEM_CPU_PREP 0x42 105 #define DRM_NOUVEAU_GEM_CPU_FINI 0x43 106 #define DRM_NOUVEAU_GEM_INFO 0x44 107 #define DRM_IOCTL_NOUVEAU_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_NEW, struct drm_nouveau_gem_new) 108 #define DRM_IOCTL_NOUVEAU_GEM_PUSHBUF DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_PUSHBUF, struct drm_nouveau_gem_pushbuf) 109 #define DRM_IOCTL_NOUVEAU_GEM_CPU_PREP DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_PREP, struct drm_nouveau_gem_cpu_prep) 110 #define DRM_IOCTL_NOUVEAU_GEM_CPU_FINI DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_FINI, struct drm_nouveau_gem_cpu_fini) 111 #define DRM_IOCTL_NOUVEAU_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_INFO, struct drm_nouveau_gem_info) 112 #if defined(__cplusplus) 113 } 114 #endif 115 #endif 116