VSF Documented
Main Page
Related Pages
Topics
Namespaces
Data Structures
Files
Examples
File List
Globals
source
shell
sys
linux
include
drm
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
15
extern
"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 */
27
typedef
uint32_t
drm_handle_t
;
28
typedef
uint32_t
drm_context_t
;
29
typedef
uint32_t
drm_drawable_t
;
30
typedef
uint32_t
drm_magic_t
;
31
32
/* DRM memory mapping types */
33
enum
drm_map_type
{
34
DRM_FRAME_BUFFER
= 0,
35
DRM_REGISTERS
= 1,
36
DRM_SHM
= 2,
37
DRM_AGP
= 3,
38
DRM_SCATTER_GATHER
= 4,
39
DRM_CONSISTENT
= 5,
40
DRM_GEM
= 6
41
};
42
43
/* DRM memory mapping flags */
44
enum
drm_map_flags
{
45
DRM_RESTRICTED
= 0x01,
46
DRM_READ_ONLY
= 0x02,
47
DRM_LOCKED
= 0x04,
48
DRM_KERNEL
= 0x08,
49
DRM_WRITE_COMBINING
= 0x10,
50
DRM_CONTAINS_LOCK
= 0x20,
51
DRM_REMOVABLE
= 0x40
52
};
53
54
/* DRM lock structure */
55
struct
drm_lock
{
56
int
context
;
57
enum
{
58
DRM_LOCK_READY
= 0,
59
DRM_LOCK_QUIESCENT
= 1,
60
DRM_LOCK_FLUSH
= 2,
61
DRM_LOCK_FLUSH_ALL
= 3,
62
DRM_KERNEL_CONTEXT
= 4
63
}
lock
;
64
};
65
66
/* DRM version information */
67
struct
drm_version
{
68
int
version_major
;
69
int
version_minor
;
70
int
version_patchlevel
;
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 */
80
struct
drm_unique
{
81
size_t
unique_len
;
82
char
*
unique
;
83
};
84
85
/* DRM memory map */
86
struct
drm_map
{
87
unsigned
long
offset
;
88
unsigned
long
size
;
89
enum
drm_map_type
type
;
90
enum
drm_map_flags
flags
;
91
drm_handle_t
handle
;
92
int
mtrr
;
93
};
94
95
/* DRM client information */
96
struct
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 */
106
struct
drm_stats
{
107
unsigned
long
count
;
108
struct
{
109
unsigned
long
value
;
110
enum
{
111
DRM_STAT_LOCK
,
112
DRM_STAT_OPENS
,
113
DRM_STAT_CLOSES
,
114
DRM_STAT_IOCTLS
,
115
DRM_STAT_LOCKS
,
116
DRM_STAT_UNLOCKS
,
117
DRM_STAT_IRQ
,
118
DRM_STAT_PRIMARY
,
119
DRM_STAT_SECONDARY
,
120
DRM_STAT_DMA
,
121
DRM_STAT_SPECIAL
,
122
DRM_STAT_MISSED
123
}
type
;
124
}
data
[15];
125
};
126
127
/* DRM version setting */
128
struct
drm_set_version
{
129
int
drm_di_major
;
130
int
drm_di_minor
;
131
int
drm_dd_major
;
132
int
drm_dd_minor
;
133
};
134
135
/* DRM authentication */
136
struct
drm_auth
{
137
drm_magic_t
magic
;
138
};
139
140
/* DRM context */
141
enum
drm_ctx_flags
{
142
DRM_CONTEXT_PRESERVED
= 0x01,
143
DRM_CONTEXT_2DONLY
= 0x02
144
};
145
146
struct
drm_ctx
{
147
enum
drm_ctx_flags
flags
;
148
int
handle
;
149
};
150
151
/* DRM DMA flags */
152
enum
drm_dma_flags
{
153
DRM_DMA_BLOCK
= 0x01,
154
DRM_DMA_WHILE_LOCKED
= 0x02,
155
DRM_DMA_PRIORITY
= 0x04,
156
DRM_DMA_WAIT
= 0x10,
157
DRM_DMA_SMALLER_OK
= 0x20,
158
DRM_DMA_LARGER_OK
= 0x40
159
};
160
161
/* GEM (Graphics Execution Manager) objects */
162
struct
drm_gem_close
{
163
uint32_t
handle
;
164
uint32_t
pad
;
165
};
166
167
struct
drm_gem_flink
{
168
uint32_t
handle
;
169
uint32_t
name
;
170
};
171
172
struct
drm_gem_open
{
173
uint32_t
name
;
174
uint32_t
handle
;
175
uint64_t
size
;
176
};
177
178
/* DRM PRIME (DMA-BUF) */
179
struct
drm_prime_handle
{
180
uint32_t
handle
;
181
uint32_t
flags
;
182
int32_t
fd
;
183
uint32_t
pad
;
184
};
185
186
/* DRM capabilities */
187
struct
drm_get_cap
{
188
uint64_t
capability
;
189
uint64_t
value
;
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 */
210
struct
drm_set_client_cap
{
211
uint64_t
capability
;
212
uint64_t
value
;
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_ */
drm_magic_t
uint32_t drm_magic_t
Definition
drm.h:30
drm_context_t
uint32_t drm_context_t
Definition
drm.h:28
drm_dma_flags
drm_dma_flags
Definition
drm.h:152
DRM_DMA_LARGER_OK
@ DRM_DMA_LARGER_OK
Definition
drm.h:158
DRM_DMA_WAIT
@ DRM_DMA_WAIT
Definition
drm.h:156
DRM_DMA_PRIORITY
@ DRM_DMA_PRIORITY
Definition
drm.h:155
DRM_DMA_SMALLER_OK
@ DRM_DMA_SMALLER_OK
Definition
drm.h:157
DRM_DMA_WHILE_LOCKED
@ DRM_DMA_WHILE_LOCKED
Definition
drm.h:154
DRM_DMA_BLOCK
@ DRM_DMA_BLOCK
Definition
drm.h:153
drm_drawable_t
uint32_t drm_drawable_t
Definition
drm.h:29
drm_ctx_flags
drm_ctx_flags
Definition
drm.h:141
DRM_CONTEXT_PRESERVED
@ DRM_CONTEXT_PRESERVED
Definition
drm.h:142
DRM_CONTEXT_2DONLY
@ DRM_CONTEXT_2DONLY
Definition
drm.h:143
drm_handle_t
uint32_t drm_handle_t
Definition
drm.h:27
drm_map_type
drm_map_type
Definition
drm.h:33
DRM_SCATTER_GATHER
@ DRM_SCATTER_GATHER
Definition
drm.h:38
DRM_AGP
@ DRM_AGP
Definition
drm.h:37
DRM_FRAME_BUFFER
@ DRM_FRAME_BUFFER
Definition
drm.h:34
DRM_CONSISTENT
@ DRM_CONSISTENT
Definition
drm.h:39
DRM_GEM
@ DRM_GEM
Definition
drm.h:40
DRM_SHM
@ DRM_SHM
Definition
drm.h:36
DRM_REGISTERS
@ DRM_REGISTERS
Definition
drm.h:35
drm_map_flags
drm_map_flags
Definition
drm.h:44
DRM_KERNEL
@ DRM_KERNEL
Definition
drm.h:48
DRM_REMOVABLE
@ DRM_REMOVABLE
Definition
drm.h:51
DRM_LOCKED
@ DRM_LOCKED
Definition
drm.h:47
DRM_WRITE_COMBINING
@ DRM_WRITE_COMBINING
Definition
drm.h:49
DRM_RESTRICTED
@ DRM_RESTRICTED
Definition
drm.h:45
DRM_CONTAINS_LOCK
@ DRM_CONTAINS_LOCK
Definition
drm.h:50
DRM_READ_ONLY
@ DRM_READ_ONLY
Definition
drm.h:46
stdint.h
uint32_t
unsigned uint32_t
Definition
stdint.h:9
int32_t
int int32_t
Definition
stdint.h:8
uint64_t
unsigned long long uint64_t
Definition
stdint.h:11
drm_auth
Definition
drm.h:136
drm_auth::magic
drm_magic_t magic
Definition
drm.h:137
drm_client
Definition
drm.h:96
drm_client::idx
int idx
Definition
drm.h:97
drm_client::magic
unsigned long magic
Definition
drm.h:101
drm_client::iocs
unsigned long iocs
Definition
drm.h:102
drm_client::pid
unsigned long pid
Definition
drm.h:99
drm_client::uid
unsigned long uid
Definition
drm.h:100
drm_client::auth
int auth
Definition
drm.h:98
drm_ctx
Definition
drm.h:146
drm_ctx::flags
enum drm_ctx_flags flags
Definition
drm.h:147
drm_ctx::handle
int handle
Definition
drm.h:148
drm_gem_close
Definition
drm.h:162
drm_gem_close::handle
uint32_t handle
Definition
drm.h:163
drm_gem_close::pad
uint32_t pad
Definition
drm.h:164
drm_gem_flink
Definition
drm.h:167
drm_gem_flink::name
uint32_t name
Definition
drm.h:169
drm_gem_flink::handle
uint32_t handle
Definition
drm.h:168
drm_gem_open
Definition
drm.h:172
drm_gem_open::name
uint32_t name
Definition
drm.h:173
drm_gem_open::handle
uint32_t handle
Definition
drm.h:174
drm_gem_open::size
uint64_t size
Definition
drm.h:175
drm_get_cap
Definition
drm.h:187
drm_get_cap::capability
uint64_t capability
Definition
drm.h:188
drm_get_cap::value
uint64_t value
Definition
drm.h:189
drm_lock
Definition
drm.h:55
drm_lock::DRM_KERNEL_CONTEXT
@ DRM_KERNEL_CONTEXT
Definition
drm.h:62
drm_lock::DRM_LOCK_FLUSH
@ DRM_LOCK_FLUSH
Definition
drm.h:60
drm_lock::DRM_LOCK_FLUSH_ALL
@ DRM_LOCK_FLUSH_ALL
Definition
drm.h:61
drm_lock::DRM_LOCK_READY
@ DRM_LOCK_READY
Definition
drm.h:58
drm_lock::DRM_LOCK_QUIESCENT
@ DRM_LOCK_QUIESCENT
Definition
drm.h:59
drm_lock::lock
enum drm_lock::@980 lock
drm_lock::context
int context
Definition
drm.h:56
drm_map
Definition
drm.h:86
drm_map::size
unsigned long size
Definition
drm.h:88
drm_map::flags
enum drm_map_flags flags
Definition
drm.h:90
drm_map::handle
drm_handle_t handle
Definition
drm.h:91
drm_map::offset
unsigned long offset
Definition
drm.h:87
drm_map::type
enum drm_map_type type
Definition
drm.h:89
drm_map::mtrr
int mtrr
Definition
drm.h:92
drm_prime_handle
Definition
drm.h:179
drm_prime_handle::handle
uint32_t handle
Definition
drm.h:180
drm_prime_handle::flags
uint32_t flags
Definition
drm.h:181
drm_prime_handle::fd
int32_t fd
Definition
drm.h:182
drm_prime_handle::pad
uint32_t pad
Definition
drm.h:183
drm_set_client_cap
Definition
drm.h:210
drm_set_client_cap::value
uint64_t value
Definition
drm.h:212
drm_set_client_cap::capability
uint64_t capability
Definition
drm.h:211
drm_set_version
Definition
drm.h:128
drm_set_version::drm_dd_major
int drm_dd_major
Definition
drm.h:131
drm_set_version::drm_di_minor
int drm_di_minor
Definition
drm.h:130
drm_set_version::drm_di_major
int drm_di_major
Definition
drm.h:129
drm_set_version::drm_dd_minor
int drm_dd_minor
Definition
drm.h:132
drm_stats
Definition
drm.h:106
drm_stats::data
struct drm_stats::@981 data[15]
drm_stats::DRM_STAT_SPECIAL
@ DRM_STAT_SPECIAL
Definition
drm.h:121
drm_stats::value
unsigned long value
Definition
drm.h:109
drm_stats::DRM_STAT_DMA
@ DRM_STAT_DMA
Definition
drm.h:120
drm_stats::count
unsigned long count
Definition
drm.h:107
drm_stats::DRM_STAT_LOCKS
@ DRM_STAT_LOCKS
Definition
drm.h:115
drm_stats::DRM_STAT_MISSED
@ DRM_STAT_MISSED
Definition
drm.h:122
drm_stats::DRM_STAT_CLOSES
@ DRM_STAT_CLOSES
Definition
drm.h:113
drm_stats::DRM_STAT_PRIMARY
@ DRM_STAT_PRIMARY
Definition
drm.h:118
drm_stats::DRM_STAT_UNLOCKS
@ DRM_STAT_UNLOCKS
Definition
drm.h:116
drm_stats::type
enum drm_stats::@981::@982 type
drm_stats::DRM_STAT_LOCK
@ DRM_STAT_LOCK
Definition
drm.h:111
drm_stats::DRM_STAT_SECONDARY
@ DRM_STAT_SECONDARY
Definition
drm.h:119
drm_stats::DRM_STAT_IOCTLS
@ DRM_STAT_IOCTLS
Definition
drm.h:114
drm_stats::DRM_STAT_IRQ
@ DRM_STAT_IRQ
Definition
drm.h:117
drm_stats::DRM_STAT_OPENS
@ DRM_STAT_OPENS
Definition
drm.h:112
drm_unique
Definition
drm.h:80
drm_unique::unique_len
size_t unique_len
Definition
drm.h:81
drm_unique::unique
char * unique
Definition
drm.h:82
drm_version
Definition
drm.h:67
drm_version::date
char * date
Definition
drm.h:74
drm_version::name
char * name
Definition
drm.h:72
drm_version::version_patchlevel
int version_patchlevel
Definition
drm.h:70
drm_version::date_len
size_t date_len
Definition
drm.h:73
drm_version::version_minor
int version_minor
Definition
drm.h:69
drm_version::desc
char * desc
Definition
drm.h:76
drm_version::desc_len
size_t desc_len
Definition
drm.h:75
drm_version::version_major
int version_major
Definition
drm.h:68
drm_version::name_len
size_t name_len
Definition
drm.h:71
ioctl.h
Generated from commit:
vsfteam/vsf@85be636