VSF Documented
drm.h
Go to the documentation of this file.
1/*
2 * DRM (Direct Rendering Manager) interface definitions
3 *
4 * This header defines the standard DRM ioctl interface structures and constants
5 * used for display management in Linux systems.
6 */
7
8#ifndef _DRM_H_
9#define _DRM_H_
10
11#include <stdint.h>
12#include <sys/ioctl.h>
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18/* DRM device types */
19#define DRM_NAME "drm"
20#define DRM_IOCTL_BASE 'd'
21
22/* DRM lock flags */
23#define _DRM_LOCK_HELD 0x80000000U
24#define _DRM_LOCK_CONT 0x40000000U
25
26/* DRM handle types */
31
32/* DRM memory mapping types */
40 DRM_GEM = 6
41};
42
43/* DRM memory mapping flags */
47 DRM_LOCKED = 0x04,
48 DRM_KERNEL = 0x08,
51 DRM_REMOVABLE = 0x40
52};
53
54/* DRM lock structure */
55struct drm_lock {
57 enum {
64};
65
66/* DRM version information */
71 size_t name_len;
72 char *name;
73 size_t date_len;
74 char *date;
75 size_t desc_len;
76 char *desc;
77};
78
79/* DRM unique identification */
80struct drm_unique {
81 size_t unique_len;
82 char *unique;
83};
84
85/* DRM memory map */
86struct drm_map {
87 unsigned long offset;
88 unsigned long size;
92 int mtrr;
93};
94
95/* DRM client information */
96struct drm_client {
97 int idx;
98 int auth;
99 unsigned long pid;
100 unsigned long uid;
101 unsigned long magic;
102 unsigned long iocs;
103};
104
105/* DRM statistics */
106struct drm_stats {
107 unsigned long count;
108 struct {
109 unsigned long value;
110 enum {
124 } data[15];
125};
126
127/* DRM version setting */
133};
134
135/* DRM authentication */
136struct drm_auth {
138};
139
140/* DRM context */
143 DRM_CONTEXT_2DONLY = 0x02
145
146struct drm_ctx {
149};
150
151/* DRM DMA flags */
158 DRM_DMA_LARGER_OK = 0x40
160
161/* GEM (Graphics Execution Manager) objects */
165};
166
170};
171
176};
177
178/* DRM PRIME (DMA-BUF) */
184};
185
186/* DRM capabilities */
190};
191
192#define DRM_CAP_DUMB_BUFFER 0x1
193#define DRM_CAP_VBLANK_HIGH_CRTC 0x2
194#define DRM_CAP_DUMB_PREFERRED_DEPTH 0x3
195#define DRM_CAP_DUMB_PREFER_SHADOW 0x4
196#define DRM_CAP_PRIME 0x5
197#define DRM_PRIME_CAP_IMPORT 0x1
198#define DRM_PRIME_CAP_EXPORT 0x2
199#define DRM_CAP_TIMESTAMP_MONOTONIC 0x6
200#define DRM_CAP_ASYNC_PAGE_FLIP 0x7
201#define DRM_CAP_CURSOR_WIDTH 0x8
202#define DRM_CAP_CURSOR_HEIGHT 0x9
203#define DRM_CAP_ADDFB2_MODIFIERS 0x10
204#define DRM_CAP_PAGE_FLIP_TARGET 0x11
205#define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12
206#define DRM_CAP_SYNCOBJ 0x13
207#define DRM_CAP_SYNCOBJ_TIMELINE 0x14
208
209/* Client capabilities */
213};
214
215#define DRM_CLIENT_CAP_STEREO_3D 1
216#define DRM_CLIENT_CAP_UNIVERSAL_PLANES 2
217#define DRM_CLIENT_CAP_ATOMIC 3
218#define DRM_CLIENT_CAP_ASPECT_RATIO 4
219#define DRM_CLIENT_CAP_WRITEBACK_CONNECTORS 5
220
221/* Ioctl helper macros */
222#define DRM_IO(nr) _IO(DRM_IOCTL_BASE, nr)
223#define DRM_IOR(nr, type) _IOR(DRM_IOCTL_BASE, nr, type)
224#define DRM_IOW(nr, type) _IOW(DRM_IOCTL_BASE, nr, type)
225#define DRM_IOWR(nr, type) _IOWR(DRM_IOCTL_BASE, nr, type)
226
227/* DRM ioctls */
228#define DRM_IOCTL_VERSION DRM_IOWR(0x00, struct drm_version)
229#define DRM_IOCTL_GET_UNIQUE DRM_IOWR(0x01, struct drm_unique)
230#define DRM_IOCTL_GET_MAGIC DRM_IOR(0x02, struct drm_auth)
231#define DRM_IOCTL_IRQ_BUSID DRM_IOWR(0x03, struct drm_irq_busid)
232#define DRM_IOCTL_GET_MAP DRM_IOWR(0x04, struct drm_map)
233#define DRM_IOCTL_GET_CLIENT DRM_IOWR(0x05, struct drm_client)
234#define DRM_IOCTL_GET_STATS DRM_IOR(0x06, struct drm_stats)
235#define DRM_IOCTL_SET_VERSION DRM_IOWR(0x07, struct drm_set_version)
236#define DRM_IOCTL_MODESET_CTL DRM_IOW(0x08, struct drm_modeset_ctl)
237#define DRM_IOCTL_GEM_CLOSE DRM_IOW(0x09, struct drm_gem_close)
238#define DRM_IOCTL_GEM_FLINK DRM_IOWR(0x0a, struct drm_gem_flink)
239#define DRM_IOCTL_GEM_OPEN DRM_IOWR(0x0b, struct drm_gem_open)
240#define DRM_IOCTL_GET_CAP DRM_IOWR(0x0c, struct drm_get_cap)
241#define DRM_IOCTL_SET_CLIENT_CAP DRM_IOW(0x0d, struct drm_set_client_cap)
242
243#define DRM_IOCTL_SET_MASTER DRM_IO(0x0e)
244#define DRM_IOCTL_DROP_MASTER DRM_IO(0x0f)
245
246#define DRM_IOCTL_PRIME_HANDLE_TO_FD DRM_IOWR(0x12, struct drm_prime_handle)
247#define DRM_IOCTL_PRIME_FD_TO_HANDLE DRM_IOWR(0x13, struct drm_prime_handle)
248
249#ifdef __cplusplus
250}
251#endif
252
253#endif /* _DRM_H_ */
uint32_t drm_magic_t
Definition drm.h:30
uint32_t drm_context_t
Definition drm.h:28
drm_dma_flags
Definition drm.h:152
@ DRM_DMA_LARGER_OK
Definition drm.h:158
@ DRM_DMA_WAIT
Definition drm.h:156
@ DRM_DMA_PRIORITY
Definition drm.h:155
@ DRM_DMA_SMALLER_OK
Definition drm.h:157
@ DRM_DMA_WHILE_LOCKED
Definition drm.h:154
@ DRM_DMA_BLOCK
Definition drm.h:153
uint32_t drm_drawable_t
Definition drm.h:29
drm_ctx_flags
Definition drm.h:141
@ DRM_CONTEXT_PRESERVED
Definition drm.h:142
@ DRM_CONTEXT_2DONLY
Definition drm.h:143
uint32_t drm_handle_t
Definition drm.h:27
drm_map_type
Definition drm.h:33
@ DRM_SCATTER_GATHER
Definition drm.h:38
@ DRM_AGP
Definition drm.h:37
@ DRM_FRAME_BUFFER
Definition drm.h:34
@ DRM_CONSISTENT
Definition drm.h:39
@ DRM_GEM
Definition drm.h:40
@ DRM_SHM
Definition drm.h:36
@ DRM_REGISTERS
Definition drm.h:35
drm_map_flags
Definition drm.h:44
@ DRM_KERNEL
Definition drm.h:48
@ DRM_REMOVABLE
Definition drm.h:51
@ DRM_LOCKED
Definition drm.h:47
@ DRM_WRITE_COMBINING
Definition drm.h:49
@ DRM_RESTRICTED
Definition drm.h:45
@ DRM_CONTAINS_LOCK
Definition drm.h:50
@ DRM_READ_ONLY
Definition drm.h:46
unsigned uint32_t
Definition stdint.h:9
int int32_t
Definition stdint.h:8
unsigned long long uint64_t
Definition stdint.h:11
Definition drm.h:136
drm_magic_t magic
Definition drm.h:137
Definition drm.h:96
int idx
Definition drm.h:97
unsigned long magic
Definition drm.h:101
unsigned long iocs
Definition drm.h:102
unsigned long pid
Definition drm.h:99
unsigned long uid
Definition drm.h:100
int auth
Definition drm.h:98
Definition drm.h:146
enum drm_ctx_flags flags
Definition drm.h:147
int handle
Definition drm.h:148
Definition drm.h:162
uint32_t handle
Definition drm.h:163
uint32_t pad
Definition drm.h:164
Definition drm.h:172
uint32_t name
Definition drm.h:173
uint32_t handle
Definition drm.h:174
uint64_t size
Definition drm.h:175
Definition drm.h:187
uint64_t capability
Definition drm.h:188
uint64_t value
Definition drm.h:189
Definition drm.h:55
@ DRM_KERNEL_CONTEXT
Definition drm.h:62
@ DRM_LOCK_FLUSH
Definition drm.h:60
@ DRM_LOCK_FLUSH_ALL
Definition drm.h:61
@ DRM_LOCK_READY
Definition drm.h:58
@ DRM_LOCK_QUIESCENT
Definition drm.h:59
enum drm_lock::@980 lock
int context
Definition drm.h:56
Definition drm.h:86
unsigned long size
Definition drm.h:88
enum drm_map_flags flags
Definition drm.h:90
drm_handle_t handle
Definition drm.h:91
unsigned long offset
Definition drm.h:87
enum drm_map_type type
Definition drm.h:89
int mtrr
Definition drm.h:92
Definition drm.h:179
uint32_t handle
Definition drm.h:180
uint32_t flags
Definition drm.h:181
int32_t fd
Definition drm.h:182
uint32_t pad
Definition drm.h:183
Definition drm.h:210
uint64_t value
Definition drm.h:212
uint64_t capability
Definition drm.h:211
Definition drm.h:128
int drm_dd_major
Definition drm.h:131
int drm_di_minor
Definition drm.h:130
int drm_di_major
Definition drm.h:129
int drm_dd_minor
Definition drm.h:132
Definition drm.h:106
struct drm_stats::@981 data[15]
@ DRM_STAT_SPECIAL
Definition drm.h:121
unsigned long value
Definition drm.h:109
@ DRM_STAT_DMA
Definition drm.h:120
unsigned long count
Definition drm.h:107
@ DRM_STAT_LOCKS
Definition drm.h:115
@ DRM_STAT_MISSED
Definition drm.h:122
@ DRM_STAT_CLOSES
Definition drm.h:113
@ DRM_STAT_PRIMARY
Definition drm.h:118
@ DRM_STAT_UNLOCKS
Definition drm.h:116
enum drm_stats::@981::@982 type
@ DRM_STAT_LOCK
Definition drm.h:111
@ DRM_STAT_SECONDARY
Definition drm.h:119
@ DRM_STAT_IOCTLS
Definition drm.h:114
@ DRM_STAT_IRQ
Definition drm.h:117
@ DRM_STAT_OPENS
Definition drm.h:112
Definition drm.h:80
size_t unique_len
Definition drm.h:81
char * unique
Definition drm.h:82
Definition drm.h:67
char * date
Definition drm.h:74
char * name
Definition drm.h:72
int version_patchlevel
Definition drm.h:70
size_t date_len
Definition drm.h:73
int version_minor
Definition drm.h:69
char * desc
Definition drm.h:76
size_t desc_len
Definition drm.h:75
int version_major
Definition drm.h:68
size_t name_len
Definition drm.h:71
Generated from commit: vsfteam/vsf@85be636