XenevaOS
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Enumerations
drm.h File Reference
#include <stdint.h>
#include <sys/ioccom.h>
#include <sys/types.h>
#include "drm_mode.h"
Include dependency graph for drm.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  drm_clip_rect
 
struct  drm_drawable_info
 
struct  drm_tex_region
 
struct  drm_hw_lock
 
struct  drm_version
 
struct  drm_unique
 
struct  drm_list
 
struct  drm_block
 
struct  drm_control
 
struct  drm_ctx_priv_map
 
struct  drm_map
 
struct  drm_client
 
struct  drm_stats
 
struct  drm_lock
 
struct  drm_buf_desc
 
struct  drm_buf_info
 
struct  drm_buf_free
 
struct  drm_buf_pub
 
struct  drm_buf_map
 
struct  drm_dma
 
struct  drm_ctx
 
struct  drm_ctx_res
 
struct  drm_draw
 
struct  drm_update_draw
 
struct  drm_auth
 
struct  drm_irq_busid
 
struct  drm_wait_vblank_request
 
struct  drm_wait_vblank_reply
 
union  drm_wait_vblank
 
struct  drm_modeset_ctl
 
struct  drm_agp_mode
 
struct  drm_agp_buffer
 
struct  drm_agp_binding
 
struct  drm_agp_info
 
struct  drm_scatter_gather
 
struct  drm_set_version
 
struct  drm_gem_close
 
struct  drm_gem_flink
 
struct  drm_gem_open
 
struct  drm_gem_change_handle
 
struct  drm_get_cap
 
struct  drm_set_client_cap
 
struct  drm_prime_handle
 
struct  drm_syncobj_create
 
struct  drm_syncobj_destroy
 
struct  drm_syncobj_handle
 
struct  drm_syncobj_transfer
 
struct  drm_syncobj_wait
 
struct  drm_syncobj_timeline_wait
 
struct  drm_syncobj_eventfd
 
struct  drm_syncobj_array
 
struct  drm_syncobj_timeline_array
 
struct  drm_crtc_get_sequence
 
struct  drm_crtc_queue_sequence
 
struct  drm_set_client_name
 
struct  drm_event
 
struct  drm_event_vblank
 
struct  drm_event_crtc_sequence
 

Macros

#define DRM_NAME   "drm"
 
#define DRM_MIN_ORDER   5
 
#define DRM_MAX_ORDER   22
 
#define DRM_RAM_PERCENT   10
 
#define _DRM_LOCK_HELD   0x80000000U
 
#define _DRM_LOCK_CONT   0x40000000U
 
#define _DRM_LOCK_IS_HELD(lock)   ((lock) & _DRM_LOCK_HELD)
 
#define _DRM_LOCK_IS_CONT(lock)   ((lock) & _DRM_LOCK_CONT)
 
#define _DRM_LOCKING_CONTEXT(lock)   ((lock) & ~(_DRM_LOCK_HELD|_DRM_LOCK_CONT))
 
#define _DRM_VBLANK_HIGH_CRTC_SHIFT   1
 
#define _DRM_VBLANK_TYPES_MASK   (_DRM_VBLANK_ABSOLUTE | _DRM_VBLANK_RELATIVE)
 
#define _DRM_VBLANK_FLAGS_MASK
 
#define _DRM_PRE_MODESET   1
 
#define _DRM_POST_MODESET   2
 
#define DRM_SYNCOBJ_CREATE_SIGNALED   (1 << 0)
 

Typedefs

typedef int8_t __s8
 
typedef uint8_t __u8
 
typedef int16_t __s16
 
typedef uint16_t __u16
 
typedef int32_t __s32
 
typedef uint32_t __u32
 
typedef int64_t __s64
 
typedef uint64_t __u64
 
typedef size_t __kernel_size_t
 
typedef unsigned long drm_handle_t
 
typedef unsigned int drm_context_t
 
typedef unsigned int drm_drawable_t
 
typedef unsigned int drm_magic_t
 

Enumerations

enum  drm_map_type {
  _DRM_FRAME_BUFFER = 0 , _DRM_REGISTERS = 1 , _DRM_SHM = 2 , _DRM_AGP = 3 ,
  _DRM_SCATTER_GATHER = 4 , _DRM_CONSISTENT = 5
}
 
enum  drm_map_flags {
  _DRM_RESTRICTED = 0x01 , _DRM_READ_ONLY = 0x02 , _DRM_LOCKED = 0x04 , _DRM_KERNEL = 0x08 ,
  _DRM_WRITE_COMBINING = 0x10 , _DRM_CONTAINS_LOCK = 0x20 , _DRM_REMOVABLE = 0x40 , _DRM_DRIVER = 0x80
}
 
enum  drm_stat_type {
  _DRM_STAT_LOCK , _DRM_STAT_OPENS , _DRM_STAT_CLOSES , _DRM_STAT_IOCTLS ,
  _DRM_STAT_LOCKS , _DRM_STAT_UNLOCKS , _DRM_STAT_VALUE , _DRM_STAT_BYTE ,
  _DRM_STAT_COUNT , _DRM_STAT_IRQ , _DRM_STAT_PRIMARY , _DRM_STAT_SECONDARY ,
  _DRM_STAT_DMA , _DRM_STAT_SPECIAL , _DRM_STAT_MISSED
}
 
enum  drm_lock_flags {
  _DRM_LOCK_READY = 0x01 , _DRM_LOCK_QUIESCENT = 0x02 , _DRM_LOCK_FLUSH = 0x04 , _DRM_LOCK_FLUSH_ALL = 0x08 ,
  _DRM_HALT_ALL_QUEUES = 0x10 , _DRM_HALT_CUR_QUEUES = 0x20
}
 
enum  drm_dma_flags {
  _DRM_DMA_BLOCK = 0x01 , _DRM_DMA_WHILE_LOCKED = 0x02 , _DRM_DMA_PRIORITY = 0x04 , _DRM_DMA_WAIT = 0x10 ,
  _DRM_DMA_SMALLER_OK = 0x20 , _DRM_DMA_LARGER_OK = 0x40
}
 
enum  drm_ctx_flags { _DRM_CONTEXT_PRESERVED = 0x01 , _DRM_CONTEXT_2DONLY = 0x02 }
 
enum  drm_drawable_info_type_t { DRM_DRAWABLE_CLIPRECTS }
 
enum  drm_vblank_seq_type {
  _DRM_VBLANK_ABSOLUTE = 0x0 , _DRM_VBLANK_RELATIVE = 0x1 , _DRM_VBLANK_HIGH_CRTC_MASK = 0x0000003e , _DRM_VBLANK_EVENT = 0x4000000 ,
  _DRM_VBLANK_FLIP = 0x8000000 , _DRM_VBLANK_NEXTONMISS = 0x10000000 , _DRM_VBLANK_SECONDARY = 0x20000000 , _DRM_VBLANK_SIGNAL = 0x40000000
}
 

: Name of object being opened.

struct drm_gem_open - Argument for &DRM_IOCTL_GEM_OPEN ioctl.

@handle: Returned handle for the object. @size: Returned size of the object

Open an object using the global name, returning a handle and the size.

This handle (of course) holds a reference to the object, so the object will not go away until the handle is deleted.

#define DRM_CAP_DUMB_BUFFER   0x1
 
#define DRM_CAP_VBLANK_HIGH_CRTC   0x2
 
#define DRM_CAP_DUMB_PREFERRED_DEPTH   0x3
 
#define DRM_CAP_DUMB_PREFER_SHADOW   0x4
 
#define DRM_CAP_PRIME   0x5
 
#define DRM_PRIME_CAP_IMPORT   0x1
 
#define DRM_PRIME_CAP_EXPORT   0x2
 
#define DRM_CAP_TIMESTAMP_MONOTONIC   0x6
 
#define DRM_CAP_ASYNC_PAGE_FLIP   0x7
 
#define DRM_CAP_CURSOR_WIDTH   0x8
 
#define DRM_CAP_CURSOR_HEIGHT   0x9
 
#define DRM_CAP_ADDFB2_MODIFIERS   0x10
 
#define DRM_CAP_PAGE_FLIP_TARGET   0x11
 
#define DRM_CAP_CRTC_IN_VBLANK_EVENT   0x12
 
#define DRM_CAP_SYNCOBJ   0x13
 
#define DRM_CAP_SYNCOBJ_TIMELINE   0x14
 
#define DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP   0x15
 
#define DRM_CLIENT_CAP_STEREO_3D   1
 
#define DRM_CLIENT_CAP_UNIVERSAL_PLANES   2
 
#define DRM_CLIENT_CAP_ATOMIC   3
 
#define DRM_CLIENT_CAP_ASPECT_RATIO   4
 
#define DRM_CLIENT_CAP_WRITEBACK_CONNECTORS   5
 
#define DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT   6
 
#define DRM_CLIENT_CAP_PLANE_COLOR_PIPELINE   7
 
#define DRM_RDWR   O_RDWR
 
#define DRM_CLOEXEC   O_CLOEXEC
 
#define DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE   (1 << 0)
 
#define DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_TIMELINE   (1 << 1)
 
#define DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE   (1 << 0)
 
#define DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_TIMELINE   (1 << 1)
 
#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL   (1 << 0)
 
#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT   (1 << 1)
 
#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE   (1 << 2) /* wait for time point to become available */
 
#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE   (1 << 3) /* set fence deadline to deadline_nsec */
 
#define DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED   (1 << 0) /* last available point on timeline syncobj */
 
#define DRM_CRTC_SEQUENCE_RELATIVE   0x00000001 /* sequence is relative to current */
 
#define DRM_CRTC_SEQUENCE_NEXT_ON_MISS   0x00000002 /* Use next sequence if we've missed */
 
#define DRM_CLIENT_NAME_MAX_LEN   64
 
#define DRM_IOCTL_BASE   'd'
 
#define DRM_IO(nr)   _IO(DRM_IOCTL_BASE,nr)
 
#define DRM_IOR(nr, type)   _IOR(DRM_IOCTL_BASE,nr,type)
 
#define DRM_IOW(nr, type)   _IOW(DRM_IOCTL_BASE,nr,type)
 
#define DRM_IOWR(nr, type)   _IOWR(DRM_IOCTL_BASE,nr,type)
 
#define DRM_IOCTL_VERSION   DRM_IOWR(0x00, struct drm_version)
 
#define DRM_IOCTL_GET_UNIQUE   DRM_IOWR(0x01, struct drm_unique)
 
#define DRM_IOCTL_GET_MAGIC   DRM_IOR( 0x02, struct drm_auth)
 
#define DRM_IOCTL_IRQ_BUSID   DRM_IOWR(0x03, struct drm_irq_busid)
 
#define DRM_IOCTL_GET_MAP   DRM_IOWR(0x04, struct drm_map)
 
#define DRM_IOCTL_GET_CLIENT   DRM_IOWR(0x05, struct drm_client)
 
#define DRM_IOCTL_GET_STATS   DRM_IOR( 0x06, struct drm_stats)
 
#define DRM_IOCTL_SET_VERSION   DRM_IOWR(0x07, struct drm_set_version)
 
#define DRM_IOCTL_MODESET_CTL   DRM_IOW(0x08, struct drm_modeset_ctl)
 
#define DRM_IOCTL_GEM_CLOSE   DRM_IOW (0x09, struct drm_gem_close)
 
#define DRM_IOCTL_GEM_FLINK   DRM_IOWR(0x0a, struct drm_gem_flink)
 
#define DRM_IOCTL_GEM_OPEN   DRM_IOWR(0x0b, struct drm_gem_open)
 
#define DRM_IOCTL_GET_CAP   DRM_IOWR(0x0c, struct drm_get_cap)
 
#define DRM_IOCTL_SET_CLIENT_CAP   DRM_IOW( 0x0d, struct drm_set_client_cap)
 
#define DRM_IOCTL_SET_UNIQUE   DRM_IOW( 0x10, struct drm_unique)
 
#define DRM_IOCTL_AUTH_MAGIC   DRM_IOW( 0x11, struct drm_auth)
 
#define DRM_IOCTL_BLOCK   DRM_IOWR(0x12, struct drm_block)
 
#define DRM_IOCTL_UNBLOCK   DRM_IOWR(0x13, struct drm_block)
 
#define DRM_IOCTL_CONTROL   DRM_IOW( 0x14, struct drm_control)
 
#define DRM_IOCTL_ADD_MAP   DRM_IOWR(0x15, struct drm_map)
 
#define DRM_IOCTL_ADD_BUFS   DRM_IOWR(0x16, struct drm_buf_desc)
 
#define DRM_IOCTL_MARK_BUFS   DRM_IOW( 0x17, struct drm_buf_desc)
 
#define DRM_IOCTL_INFO_BUFS   DRM_IOWR(0x18, struct drm_buf_info)
 
#define DRM_IOCTL_MAP_BUFS   DRM_IOWR(0x19, struct drm_buf_map)
 
#define DRM_IOCTL_FREE_BUFS   DRM_IOW( 0x1a, struct drm_buf_free)
 
#define DRM_IOCTL_RM_MAP   DRM_IOW( 0x1b, struct drm_map)
 
#define DRM_IOCTL_SET_SAREA_CTX   DRM_IOW( 0x1c, struct drm_ctx_priv_map)
 
#define DRM_IOCTL_GET_SAREA_CTX   DRM_IOWR(0x1d, struct drm_ctx_priv_map)
 
#define DRM_IOCTL_SET_MASTER   DRM_IO(0x1e)
 
#define DRM_IOCTL_DROP_MASTER   DRM_IO(0x1f)
 
#define DRM_IOCTL_ADD_CTX   DRM_IOWR(0x20, struct drm_ctx)
 
#define DRM_IOCTL_RM_CTX   DRM_IOWR(0x21, struct drm_ctx)
 
#define DRM_IOCTL_MOD_CTX   DRM_IOW( 0x22, struct drm_ctx)
 
#define DRM_IOCTL_GET_CTX   DRM_IOWR(0x23, struct drm_ctx)
 
#define DRM_IOCTL_SWITCH_CTX   DRM_IOW( 0x24, struct drm_ctx)
 
#define DRM_IOCTL_NEW_CTX   DRM_IOW( 0x25, struct drm_ctx)
 
#define DRM_IOCTL_RES_CTX   DRM_IOWR(0x26, struct drm_ctx_res)
 
#define DRM_IOCTL_ADD_DRAW   DRM_IOWR(0x27, struct drm_draw)
 
#define DRM_IOCTL_RM_DRAW   DRM_IOWR(0x28, struct drm_draw)
 
#define DRM_IOCTL_DMA   DRM_IOWR(0x29, struct drm_dma)
 
#define DRM_IOCTL_LOCK   DRM_IOW( 0x2a, struct drm_lock)
 
#define DRM_IOCTL_UNLOCK   DRM_IOW( 0x2b, struct drm_lock)
 
#define DRM_IOCTL_FINISH   DRM_IOW( 0x2c, struct drm_lock)
 
#define DRM_IOCTL_PRIME_HANDLE_TO_FD   DRM_IOWR(0x2d, struct drm_prime_handle)
 
#define DRM_IOCTL_PRIME_FD_TO_HANDLE   DRM_IOWR(0x2e, struct drm_prime_handle)
 
#define DRM_IOCTL_AGP_ACQUIRE   DRM_IO( 0x30)
 
#define DRM_IOCTL_AGP_RELEASE   DRM_IO( 0x31)
 
#define DRM_IOCTL_AGP_ENABLE   DRM_IOW( 0x32, struct drm_agp_mode)
 
#define DRM_IOCTL_AGP_INFO   DRM_IOR( 0x33, struct drm_agp_info)
 
#define DRM_IOCTL_AGP_ALLOC   DRM_IOWR(0x34, struct drm_agp_buffer)
 
#define DRM_IOCTL_AGP_FREE   DRM_IOW( 0x35, struct drm_agp_buffer)
 
#define DRM_IOCTL_AGP_BIND   DRM_IOW( 0x36, struct drm_agp_binding)
 
#define DRM_IOCTL_AGP_UNBIND   DRM_IOW( 0x37, struct drm_agp_binding)
 
#define DRM_IOCTL_SG_ALLOC   DRM_IOWR(0x38, struct drm_scatter_gather)
 
#define DRM_IOCTL_SG_FREE   DRM_IOW( 0x39, struct drm_scatter_gather)
 
#define DRM_IOCTL_WAIT_VBLANK   DRM_IOWR(0x3a, union drm_wait_vblank)
 
#define DRM_IOCTL_CRTC_GET_SEQUENCE   DRM_IOWR(0x3b, struct drm_crtc_get_sequence)
 
#define DRM_IOCTL_CRTC_QUEUE_SEQUENCE   DRM_IOWR(0x3c, struct drm_crtc_queue_sequence)
 
#define DRM_IOCTL_UPDATE_DRAW   DRM_IOW(0x3f, struct drm_update_draw)
 
#define DRM_IOCTL_MODE_GETRESOURCES   DRM_IOWR(0xA0, struct drm_mode_card_res)
 
#define DRM_IOCTL_MODE_GETCRTC   DRM_IOWR(0xA1, struct drm_mode_crtc)
 
#define DRM_IOCTL_MODE_SETCRTC   DRM_IOWR(0xA2, struct drm_mode_crtc)
 
#define DRM_IOCTL_MODE_CURSOR   DRM_IOWR(0xA3, struct drm_mode_cursor)
 
#define DRM_IOCTL_MODE_GETGAMMA   DRM_IOWR(0xA4, struct drm_mode_crtc_lut)
 
#define DRM_IOCTL_MODE_SETGAMMA   DRM_IOWR(0xA5, struct drm_mode_crtc_lut)
 
#define DRM_IOCTL_MODE_GETENCODER   DRM_IOWR(0xA6, struct drm_mode_get_encoder)
 
#define DRM_IOCTL_MODE_GETCONNECTOR   DRM_IOWR(0xA7, struct drm_mode_get_connector)
 
#define DRM_IOCTL_MODE_ATTACHMODE   DRM_IOWR(0xA8, struct drm_mode_mode_cmd) /* deprecated (never worked) */
 
#define DRM_IOCTL_MODE_DETACHMODE   DRM_IOWR(0xA9, struct drm_mode_mode_cmd) /* deprecated (never worked) */
 
#define DRM_IOCTL_MODE_GETPROPERTY   DRM_IOWR(0xAA, struct drm_mode_get_property)
 
#define DRM_IOCTL_MODE_SETPROPERTY   DRM_IOWR(0xAB, struct drm_mode_connector_set_property)
 
#define DRM_IOCTL_MODE_GETPROPBLOB   DRM_IOWR(0xAC, struct drm_mode_get_blob)
 
#define DRM_IOCTL_MODE_GETFB   DRM_IOWR(0xAD, struct drm_mode_fb_cmd)
 
#define DRM_IOCTL_MODE_ADDFB   DRM_IOWR(0xAE, struct drm_mode_fb_cmd)
 
#define DRM_IOCTL_MODE_RMFB   DRM_IOWR(0xAF, unsigned int)
 
#define DRM_IOCTL_MODE_PAGE_FLIP   DRM_IOWR(0xB0, struct drm_mode_crtc_page_flip)
 
#define DRM_IOCTL_MODE_DIRTYFB   DRM_IOWR(0xB1, struct drm_mode_fb_dirty_cmd)
 
#define DRM_IOCTL_MODE_CREATE_DUMB   DRM_IOWR(0xB2, struct drm_mode_create_dumb)
 
#define DRM_IOCTL_MODE_MAP_DUMB   DRM_IOWR(0xB3, struct drm_mode_map_dumb)
 
#define DRM_IOCTL_MODE_DESTROY_DUMB   DRM_IOWR(0xB4, struct drm_mode_destroy_dumb)
 
#define DRM_IOCTL_MODE_GETPLANERESOURCES   DRM_IOWR(0xB5, struct drm_mode_get_plane_res)
 
#define DRM_IOCTL_MODE_GETPLANE   DRM_IOWR(0xB6, struct drm_mode_get_plane)
 
#define DRM_IOCTL_MODE_SETPLANE   DRM_IOWR(0xB7, struct drm_mode_set_plane)
 
#define DRM_IOCTL_MODE_ADDFB2   DRM_IOWR(0xB8, struct drm_mode_fb_cmd2)
 
#define DRM_IOCTL_MODE_OBJ_GETPROPERTIES   DRM_IOWR(0xB9, struct drm_mode_obj_get_properties)
 
#define DRM_IOCTL_MODE_OBJ_SETPROPERTY   DRM_IOWR(0xBA, struct drm_mode_obj_set_property)
 
#define DRM_IOCTL_MODE_CURSOR2   DRM_IOWR(0xBB, struct drm_mode_cursor2)
 
#define DRM_IOCTL_MODE_ATOMIC   DRM_IOWR(0xBC, struct drm_mode_atomic)
 
#define DRM_IOCTL_MODE_CREATEPROPBLOB   DRM_IOWR(0xBD, struct drm_mode_create_blob)
 
#define DRM_IOCTL_MODE_DESTROYPROPBLOB   DRM_IOWR(0xBE, struct drm_mode_destroy_blob)
 
#define DRM_IOCTL_SYNCOBJ_CREATE   DRM_IOWR(0xBF, struct drm_syncobj_create)
 
#define DRM_IOCTL_SYNCOBJ_DESTROY   DRM_IOWR(0xC0, struct drm_syncobj_destroy)
 
#define DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD   DRM_IOWR(0xC1, struct drm_syncobj_handle)
 
#define DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE   DRM_IOWR(0xC2, struct drm_syncobj_handle)
 
#define DRM_IOCTL_SYNCOBJ_WAIT   DRM_IOWR(0xC3, struct drm_syncobj_wait)
 
#define DRM_IOCTL_SYNCOBJ_RESET   DRM_IOWR(0xC4, struct drm_syncobj_array)
 
#define DRM_IOCTL_SYNCOBJ_SIGNAL   DRM_IOWR(0xC5, struct drm_syncobj_array)
 
#define DRM_IOCTL_MODE_CREATE_LEASE   DRM_IOWR(0xC6, struct drm_mode_create_lease)
 
#define DRM_IOCTL_MODE_LIST_LESSEES   DRM_IOWR(0xC7, struct drm_mode_list_lessees)
 
#define DRM_IOCTL_MODE_GET_LEASE   DRM_IOWR(0xC8, struct drm_mode_get_lease)
 
#define DRM_IOCTL_MODE_REVOKE_LEASE   DRM_IOWR(0xC9, struct drm_mode_revoke_lease)
 
#define DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT   DRM_IOWR(0xCA, struct drm_syncobj_timeline_wait)
 
#define DRM_IOCTL_SYNCOBJ_QUERY   DRM_IOWR(0xCB, struct drm_syncobj_timeline_array)
 
#define DRM_IOCTL_SYNCOBJ_TRANSFER   DRM_IOWR(0xCC, struct drm_syncobj_transfer)
 
#define DRM_IOCTL_SYNCOBJ_TIMELINE_SIGNAL   DRM_IOWR(0xCD, struct drm_syncobj_timeline_array)
 
#define DRM_IOCTL_MODE_GETFB2   DRM_IOWR(0xCE, struct drm_mode_fb_cmd2)
 
#define DRM_IOCTL_SYNCOBJ_EVENTFD   DRM_IOWR(0xCF, struct drm_syncobj_eventfd)
 
#define DRM_IOCTL_MODE_CLOSEFB   DRM_IOWR(0xD0, struct drm_mode_closefb)
 
#define DRM_IOCTL_SET_CLIENT_NAME   DRM_IOWR(0xD1, struct drm_set_client_name)
 
#define DRM_IOCTL_GEM_CHANGE_HANDLE   DRM_IOWR(0xD2, struct drm_gem_change_handle)
 
#define DRM_COMMAND_BASE   0x40
 
#define DRM_COMMAND_END   0xA0
 
#define DRM_EVENT_VBLANK   0x01
 
#define DRM_EVENT_FLIP_COMPLETE   0x02
 
#define DRM_EVENT_CRTC_SEQUENCE   0x03
 
typedef struct drm_clip_rect drm_clip_rect_t
 
typedef struct drm_drawable_info drm_drawable_info_t
 
typedef struct drm_tex_region drm_tex_region_t
 
typedef struct drm_hw_lock drm_hw_lock_t
 
typedef struct drm_version drm_version_t
 
typedef struct drm_unique drm_unique_t
 
typedef struct drm_list drm_list_t
 
typedef struct drm_block drm_block_t
 
typedef struct drm_control drm_control_t
 
typedef enum drm_map_type drm_map_type_t
 
typedef enum drm_map_flags drm_map_flags_t
 
typedef struct drm_ctx_priv_map drm_ctx_priv_map_t
 
typedef struct drm_map drm_map_t
 
typedef struct drm_client drm_client_t
 
typedef enum drm_stat_type drm_stat_type_t
 
typedef struct drm_stats drm_stats_t
 
typedef enum drm_lock_flags drm_lock_flags_t
 
typedef struct drm_lock drm_lock_t
 
typedef enum drm_dma_flags drm_dma_flags_t
 
typedef struct drm_buf_desc drm_buf_desc_t
 
typedef struct drm_buf_info drm_buf_info_t
 
typedef struct drm_buf_free drm_buf_free_t
 
typedef struct drm_buf_pub drm_buf_pub_t
 
typedef struct drm_buf_map drm_buf_map_t
 
typedef struct drm_dma drm_dma_t
 
typedef union drm_wait_vblank drm_wait_vblank_t
 
typedef struct drm_agp_mode drm_agp_mode_t
 
typedef enum drm_ctx_flags drm_ctx_flags_t
 
typedef struct drm_ctx drm_ctx_t
 
typedef struct drm_ctx_res drm_ctx_res_t
 
typedef struct drm_draw drm_draw_t
 
typedef struct drm_update_draw drm_update_draw_t
 
typedef struct drm_auth drm_auth_t
 
typedef struct drm_irq_busid drm_irq_busid_t
 
typedef enum drm_vblank_seq_type drm_vblank_seq_type_t
 
typedef struct drm_agp_buffer drm_agp_buffer_t
 
typedef struct drm_agp_binding drm_agp_binding_t
 
typedef struct drm_agp_info drm_agp_info_t
 
typedef struct drm_scatter_gather drm_scatter_gather_t
 
typedef struct drm_set_version drm_set_version_t
 

Macro Definition Documentation

◆ _DRM_LOCK_CONT

#define _DRM_LOCK_CONT   0x40000000U

Hardware lock is contended

◆ _DRM_LOCK_HELD

#define _DRM_LOCK_HELD   0x80000000U

Hardware lock is held

◆ _DRM_LOCK_IS_CONT

#define _DRM_LOCK_IS_CONT (   lock)    ((lock) & _DRM_LOCK_CONT)

◆ _DRM_LOCK_IS_HELD

#define _DRM_LOCK_IS_HELD (   lock)    ((lock) & _DRM_LOCK_HELD)

◆ _DRM_LOCKING_CONTEXT

#define _DRM_LOCKING_CONTEXT (   lock)    ((lock) & ~(_DRM_LOCK_HELD|_DRM_LOCK_CONT))

◆ _DRM_POST_MODESET

#define _DRM_POST_MODESET   2

◆ _DRM_PRE_MODESET

#define _DRM_PRE_MODESET   1

◆ _DRM_VBLANK_FLAGS_MASK

#define _DRM_VBLANK_FLAGS_MASK
Value:
@ _DRM_VBLANK_NEXTONMISS
Definition drm.h:466
@ _DRM_VBLANK_EVENT
Definition drm.h:464
@ _DRM_VBLANK_SIGNAL
Definition drm.h:468
@ _DRM_VBLANK_SECONDARY
Definition drm.h:467

◆ _DRM_VBLANK_HIGH_CRTC_SHIFT

#define _DRM_VBLANK_HIGH_CRTC_SHIFT   1

◆ _DRM_VBLANK_TYPES_MASK

#define _DRM_VBLANK_TYPES_MASK   (_DRM_VBLANK_ABSOLUTE | _DRM_VBLANK_RELATIVE)

◆ DRM_CAP_ADDFB2_MODIFIERS

#define DRM_CAP_ADDFB2_MODIFIERS   0x10

DRM_CAP_ADDFB2_MODIFIERS

If set to 1, the driver supports supplying modifiers in the &DRM_IOCTL_MODE_ADDFB2 ioctl.

◆ DRM_CAP_ASYNC_PAGE_FLIP

#define DRM_CAP_ASYNC_PAGE_FLIP   0x7

DRM_CAP_ASYNC_PAGE_FLIP

If set to 1, the driver supports &DRM_MODE_PAGE_FLIP_ASYNC for legacy page-flips.

◆ DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP

#define DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP   0x15

DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP

If set to 1, the driver supports &DRM_MODE_PAGE_FLIP_ASYNC for atomic commits.

◆ DRM_CAP_CRTC_IN_VBLANK_EVENT

#define DRM_CAP_CRTC_IN_VBLANK_EVENT   0x12

DRM_CAP_CRTC_IN_VBLANK_EVENT

If set to 1, the kernel supports reporting the CRTC ID in &drm_event_vblank.crtc_id for the &DRM_EVENT_VBLANK and &DRM_EVENT_FLIP_COMPLETE events.

Starting kernel version 4.12, this capability is always set to 1.

◆ DRM_CAP_CURSOR_HEIGHT

#define DRM_CAP_CURSOR_HEIGHT   0x9

DRM_CAP_CURSOR_HEIGHT

See &DRM_CAP_CURSOR_WIDTH.

◆ DRM_CAP_CURSOR_WIDTH

#define DRM_CAP_CURSOR_WIDTH   0x8

DRM_CAP_CURSOR_WIDTH

The CURSOR_WIDTH and CURSOR_HEIGHT capabilities return a valid width x height combination for the hardware cursor. The intention is that a hardware agnostic userspace can query a cursor plane size to use.

Note that the cross-driver contract is to merely return a valid size; drivers are free to attach another meaning on top, eg. i915 returns the maximum plane size.

◆ DRM_CAP_DUMB_BUFFER

#define DRM_CAP_DUMB_BUFFER   0x1

DRM_CAP_DUMB_BUFFER

If set to 1, the driver supports creating dumb buffers via the &DRM_IOCTL_MODE_CREATE_DUMB ioctl.

◆ DRM_CAP_DUMB_PREFER_SHADOW

#define DRM_CAP_DUMB_PREFER_SHADOW   0x4

DRM_CAP_DUMB_PREFER_SHADOW

If set to 1, the driver prefers userspace to render to a shadow buffer instead of directly rendering to a dumb buffer. For best speed, userspace should do streaming ordered memory copies into the dumb buffer and never read from it.

Note that this preference only applies to dumb buffers, it's irrelevant for other types of buffers.

◆ DRM_CAP_DUMB_PREFERRED_DEPTH

#define DRM_CAP_DUMB_PREFERRED_DEPTH   0x3

DRM_CAP_DUMB_PREFERRED_DEPTH

The preferred bit depth for dumb buffers.

The bit depth is the number of bits used to indicate the color of a single pixel excluding any padding. This is different from the number of bits per pixel. For instance, XRGB8888 has a bit depth of 24 but has 32 bits per pixel.

Note that this preference only applies to dumb buffers, it's irrelevant for other types of buffers.

◆ DRM_CAP_PAGE_FLIP_TARGET

#define DRM_CAP_PAGE_FLIP_TARGET   0x11

DRM_CAP_PAGE_FLIP_TARGET

If set to 1, the driver supports the &DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE and &DRM_MODE_PAGE_FLIP_TARGET_RELATIVE flags in &drm_mode_crtc_page_flip_target.flags for the &DRM_IOCTL_MODE_PAGE_FLIP ioctl.

◆ DRM_CAP_PRIME

#define DRM_CAP_PRIME   0x5

DRM_CAP_PRIME

Bitfield of supported PRIME sharing capabilities. See &DRM_PRIME_CAP_IMPORT and &DRM_PRIME_CAP_EXPORT.

Starting from kernel version 6.6, both &DRM_PRIME_CAP_IMPORT and &DRM_PRIME_CAP_EXPORT are always advertised.

PRIME buffers are exposed as dma-buf file descriptors. See :ref:prime_buffer_sharing.

◆ DRM_CAP_SYNCOBJ

#define DRM_CAP_SYNCOBJ   0x13

DRM_CAP_SYNCOBJ

If set to 1, the driver supports sync objects. See :ref:drm_sync_objects.

◆ DRM_CAP_SYNCOBJ_TIMELINE

#define DRM_CAP_SYNCOBJ_TIMELINE   0x14

DRM_CAP_SYNCOBJ_TIMELINE

If set to 1, the driver supports timeline operations on sync objects. See :ref:drm_sync_objects.

◆ DRM_CAP_TIMESTAMP_MONOTONIC

#define DRM_CAP_TIMESTAMP_MONOTONIC   0x6

DRM_CAP_TIMESTAMP_MONOTONIC

If set to 0, the kernel will report timestamps with CLOCK_REALTIME in struct drm_event_vblank. If set to 1, the kernel will report timestamps with CLOCK_MONOTONIC. See clock_gettime(2) for the definition of these clocks.

Starting from kernel version 2.6.39, the default value for this capability is 1. Starting kernel version 4.15, this capability is always set to 1.

◆ DRM_CAP_VBLANK_HIGH_CRTC

#define DRM_CAP_VBLANK_HIGH_CRTC   0x2

DRM_CAP_VBLANK_HIGH_CRTC

If set to 1, the kernel supports specifying a :ref:CRTC index<crtc_index> in the high bits of &drm_wait_vblank_request.type.

Starting kernel version 2.6.39, this capability is always set to 1.

◆ DRM_CLIENT_CAP_ASPECT_RATIO

#define DRM_CLIENT_CAP_ASPECT_RATIO   4

DRM_CLIENT_CAP_ASPECT_RATIO

If set to 1, the DRM core will provide aspect ratio information in modes. See DRM_MODE_FLAG_PIC_AR_*.

This capability is always supported for all drivers starting from kernel version 4.18.

◆ DRM_CLIENT_CAP_ATOMIC

#define DRM_CLIENT_CAP_ATOMIC   3

DRM_CLIENT_CAP_ATOMIC

If set to 1, the DRM core will expose atomic properties to userspace. This implicitly enables &DRM_CLIENT_CAP_UNIVERSAL_PLANES and &DRM_CLIENT_CAP_ASPECT_RATIO.

If the driver doesn't support atomic mode-setting, enabling this capability will fail with -EOPNOTSUPP.

This capability has been introduced in kernel version 4.0. Starting from kernel version 4.2, this capability is always supported for atomic-capable drivers.

◆ DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT

#define DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT   6

DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT

Drivers for para-virtualized hardware (e.g. vmwgfx, qxl, virtio and virtualbox) have additional restrictions for cursor planes (thus making cursor planes on those drivers not truly universal,) e.g. they need cursor planes to act like one would expect from a mouse cursor and have correctly set hotspot properties. If this client cap is not set the DRM core will hide cursor plane on those virtualized drivers because not setting it implies that the client is not capable of dealing with those extra restictions. Clients which do set cursor hotspot and treat the cursor plane like a mouse cursor should set this property. The client must enable &DRM_CLIENT_CAP_ATOMIC first.

Setting this property on drivers which do not special case cursor planes (i.e. non-virtualized drivers) will return EOPNOTSUPP, which can be used by userspace to gauge requirements of the hardware/drivers they're running on.

This capability is always supported for atomic-capable virtualized drivers starting from kernel version 6.6.

◆ DRM_CLIENT_CAP_PLANE_COLOR_PIPELINE

#define DRM_CLIENT_CAP_PLANE_COLOR_PIPELINE   7

DRM_CLIENT_CAP_PLANE_COLOR_PIPELINE

If set to 1 the DRM core will allow setting the COLOR_PIPELINE property on a &drm_plane, as well as drm_colorop properties.

Setting of these plane properties will be rejected when this client cap is set:

  • COLOR_ENCODING
  • COLOR_RANGE

The client must enable &DRM_CLIENT_CAP_ATOMIC first.

◆ DRM_CLIENT_CAP_STEREO_3D

#define DRM_CLIENT_CAP_STEREO_3D   1

DRM_CLIENT_CAP_STEREO_3D

If set to 1, the DRM core will expose the stereo 3D capabilities of the monitor by advertising the supported 3D layouts in the flags of struct drm_mode_modeinfo. See DRM_MODE_FLAG_3D_*.

This capability is always supported for all drivers starting from kernel version 3.13.

◆ DRM_CLIENT_CAP_UNIVERSAL_PLANES

#define DRM_CLIENT_CAP_UNIVERSAL_PLANES   2

DRM_CLIENT_CAP_UNIVERSAL_PLANES

If set to 1, the DRM core will expose all planes (overlay, primary, and cursor) to userspace.

This capability has been introduced in kernel version 3.15. Starting from kernel version 3.17, this capability is always supported for all drivers.

◆ DRM_CLIENT_CAP_WRITEBACK_CONNECTORS

#define DRM_CLIENT_CAP_WRITEBACK_CONNECTORS   5

DRM_CLIENT_CAP_WRITEBACK_CONNECTORS

If set to 1, the DRM core will expose special connectors to be used for writing back to memory the scene setup in the commit. The client must enable &DRM_CLIENT_CAP_ATOMIC first.

This capability is always supported for atomic-capable drivers starting from kernel version 4.19.

◆ DRM_CLIENT_NAME_MAX_LEN

#define DRM_CLIENT_NAME_MAX_LEN   64

◆ DRM_CLOEXEC

#define DRM_CLOEXEC   O_CLOEXEC

◆ DRM_COMMAND_BASE

#define DRM_COMMAND_BASE   0x40

◆ DRM_COMMAND_END

#define DRM_COMMAND_END   0xA0

◆ DRM_CRTC_SEQUENCE_NEXT_ON_MISS

#define DRM_CRTC_SEQUENCE_NEXT_ON_MISS   0x00000002 /* Use next sequence if we've missed */

◆ DRM_CRTC_SEQUENCE_RELATIVE

#define DRM_CRTC_SEQUENCE_RELATIVE   0x00000001 /* sequence is relative to current */

◆ DRM_EVENT_CRTC_SEQUENCE

#define DRM_EVENT_CRTC_SEQUENCE   0x03

DRM_EVENT_CRTC_SEQUENCE - CRTC sequence event

This event is sent in response to &DRM_IOCTL_CRTC_QUEUE_SEQUENCE.

The event payload is a struct drm_event_crtc_sequence.

◆ DRM_EVENT_FLIP_COMPLETE

#define DRM_EVENT_FLIP_COMPLETE   0x02

DRM_EVENT_FLIP_COMPLETE - page-flip completion event

This event is sent in response to an atomic commit or legacy page-flip with the &DRM_MODE_PAGE_FLIP_EVENT flag set.

The event payload is a struct drm_event_vblank.

◆ DRM_EVENT_VBLANK

#define DRM_EVENT_VBLANK   0x01

DRM_EVENT_VBLANK - vertical blanking event

This event is sent in response to &DRM_IOCTL_WAIT_VBLANK with the &_DRM_VBLANK_EVENT flag set.

The event payload is a struct drm_event_vblank.

◆ DRM_IO

#define DRM_IO (   nr)    _IO(DRM_IOCTL_BASE,nr)

◆ DRM_IOCTL_ADD_BUFS

#define DRM_IOCTL_ADD_BUFS   DRM_IOWR(0x16, struct drm_buf_desc)

◆ DRM_IOCTL_ADD_CTX

#define DRM_IOCTL_ADD_CTX   DRM_IOWR(0x20, struct drm_ctx)

◆ DRM_IOCTL_ADD_DRAW

#define DRM_IOCTL_ADD_DRAW   DRM_IOWR(0x27, struct drm_draw)

◆ DRM_IOCTL_ADD_MAP

#define DRM_IOCTL_ADD_MAP   DRM_IOWR(0x15, struct drm_map)

◆ DRM_IOCTL_AGP_ACQUIRE

#define DRM_IOCTL_AGP_ACQUIRE   DRM_IO( 0x30)

◆ DRM_IOCTL_AGP_ALLOC

#define DRM_IOCTL_AGP_ALLOC   DRM_IOWR(0x34, struct drm_agp_buffer)

◆ DRM_IOCTL_AGP_BIND

#define DRM_IOCTL_AGP_BIND   DRM_IOW( 0x36, struct drm_agp_binding)

◆ DRM_IOCTL_AGP_ENABLE

#define DRM_IOCTL_AGP_ENABLE   DRM_IOW( 0x32, struct drm_agp_mode)

◆ DRM_IOCTL_AGP_FREE

#define DRM_IOCTL_AGP_FREE   DRM_IOW( 0x35, struct drm_agp_buffer)

◆ DRM_IOCTL_AGP_INFO

#define DRM_IOCTL_AGP_INFO   DRM_IOR( 0x33, struct drm_agp_info)

◆ DRM_IOCTL_AGP_RELEASE

#define DRM_IOCTL_AGP_RELEASE   DRM_IO( 0x31)

◆ DRM_IOCTL_AGP_UNBIND

#define DRM_IOCTL_AGP_UNBIND   DRM_IOW( 0x37, struct drm_agp_binding)

◆ DRM_IOCTL_AUTH_MAGIC

#define DRM_IOCTL_AUTH_MAGIC   DRM_IOW( 0x11, struct drm_auth)

◆ DRM_IOCTL_BASE

#define DRM_IOCTL_BASE   'd'

◆ DRM_IOCTL_BLOCK

#define DRM_IOCTL_BLOCK   DRM_IOWR(0x12, struct drm_block)

◆ DRM_IOCTL_CONTROL

#define DRM_IOCTL_CONTROL   DRM_IOW( 0x14, struct drm_control)

◆ DRM_IOCTL_CRTC_GET_SEQUENCE

#define DRM_IOCTL_CRTC_GET_SEQUENCE   DRM_IOWR(0x3b, struct drm_crtc_get_sequence)

◆ DRM_IOCTL_CRTC_QUEUE_SEQUENCE

#define DRM_IOCTL_CRTC_QUEUE_SEQUENCE   DRM_IOWR(0x3c, struct drm_crtc_queue_sequence)

◆ DRM_IOCTL_DMA

#define DRM_IOCTL_DMA   DRM_IOWR(0x29, struct drm_dma)

◆ DRM_IOCTL_DROP_MASTER

#define DRM_IOCTL_DROP_MASTER   DRM_IO(0x1f)

◆ DRM_IOCTL_FINISH

#define DRM_IOCTL_FINISH   DRM_IOW( 0x2c, struct drm_lock)

◆ DRM_IOCTL_FREE_BUFS

#define DRM_IOCTL_FREE_BUFS   DRM_IOW( 0x1a, struct drm_buf_free)

◆ DRM_IOCTL_GEM_CHANGE_HANDLE

#define DRM_IOCTL_GEM_CHANGE_HANDLE   DRM_IOWR(0xD2, struct drm_gem_change_handle)

DRM_IOCTL_GEM_CHANGE_HANDLE - Move an object to a different handle

Some applications (notably CRIU) need objects to have specific gem handles. This ioctl changes the object at one gem handle to use a new gem handle.

◆ DRM_IOCTL_GEM_CLOSE

#define DRM_IOCTL_GEM_CLOSE   DRM_IOW (0x09, struct drm_gem_close)

DRM_IOCTL_GEM_CLOSE - Close a GEM handle.

GEM handles are not reference-counted by the kernel. User-space is responsible for managing their lifetime. For example, if user-space imports the same memory object twice on the same DRM file description, the same GEM handle is returned by both imports, and user-space needs to ensure &DRM_IOCTL_GEM_CLOSE is performed once only. The same situation can happen when a memory object is allocated, then exported and imported again on the same DRM file description. The &DRM_IOCTL_MODE_GETFB2 IOCTL is an exception and always returns fresh new GEM handles even if an existing GEM handle already refers to the same memory object before the IOCTL is performed.

◆ DRM_IOCTL_GEM_FLINK

#define DRM_IOCTL_GEM_FLINK   DRM_IOWR(0x0a, struct drm_gem_flink)

◆ DRM_IOCTL_GEM_OPEN

#define DRM_IOCTL_GEM_OPEN   DRM_IOWR(0x0b, struct drm_gem_open)

◆ DRM_IOCTL_GET_CAP

#define DRM_IOCTL_GET_CAP   DRM_IOWR(0x0c, struct drm_get_cap)

◆ DRM_IOCTL_GET_CLIENT

#define DRM_IOCTL_GET_CLIENT   DRM_IOWR(0x05, struct drm_client)

◆ DRM_IOCTL_GET_CTX

#define DRM_IOCTL_GET_CTX   DRM_IOWR(0x23, struct drm_ctx)

◆ DRM_IOCTL_GET_MAGIC

#define DRM_IOCTL_GET_MAGIC   DRM_IOR( 0x02, struct drm_auth)

◆ DRM_IOCTL_GET_MAP

#define DRM_IOCTL_GET_MAP   DRM_IOWR(0x04, struct drm_map)

◆ DRM_IOCTL_GET_SAREA_CTX

#define DRM_IOCTL_GET_SAREA_CTX   DRM_IOWR(0x1d, struct drm_ctx_priv_map)

◆ DRM_IOCTL_GET_STATS

#define DRM_IOCTL_GET_STATS   DRM_IOR( 0x06, struct drm_stats)

◆ DRM_IOCTL_GET_UNIQUE

#define DRM_IOCTL_GET_UNIQUE   DRM_IOWR(0x01, struct drm_unique)

◆ DRM_IOCTL_INFO_BUFS

#define DRM_IOCTL_INFO_BUFS   DRM_IOWR(0x18, struct drm_buf_info)

◆ DRM_IOCTL_IRQ_BUSID

#define DRM_IOCTL_IRQ_BUSID   DRM_IOWR(0x03, struct drm_irq_busid)

◆ DRM_IOCTL_LOCK

#define DRM_IOCTL_LOCK   DRM_IOW( 0x2a, struct drm_lock)

◆ DRM_IOCTL_MAP_BUFS

#define DRM_IOCTL_MAP_BUFS   DRM_IOWR(0x19, struct drm_buf_map)

◆ DRM_IOCTL_MARK_BUFS

#define DRM_IOCTL_MARK_BUFS   DRM_IOW( 0x17, struct drm_buf_desc)

◆ DRM_IOCTL_MOD_CTX

#define DRM_IOCTL_MOD_CTX   DRM_IOW( 0x22, struct drm_ctx)

◆ DRM_IOCTL_MODE_ADDFB

#define DRM_IOCTL_MODE_ADDFB   DRM_IOWR(0xAE, struct drm_mode_fb_cmd)

◆ DRM_IOCTL_MODE_ADDFB2

#define DRM_IOCTL_MODE_ADDFB2   DRM_IOWR(0xB8, struct drm_mode_fb_cmd2)

◆ DRM_IOCTL_MODE_ATOMIC

#define DRM_IOCTL_MODE_ATOMIC   DRM_IOWR(0xBC, struct drm_mode_atomic)

◆ DRM_IOCTL_MODE_ATTACHMODE

#define DRM_IOCTL_MODE_ATTACHMODE   DRM_IOWR(0xA8, struct drm_mode_mode_cmd) /* deprecated (never worked) */

◆ DRM_IOCTL_MODE_CLOSEFB

#define DRM_IOCTL_MODE_CLOSEFB   DRM_IOWR(0xD0, struct drm_mode_closefb)

DRM_IOCTL_MODE_CLOSEFB - Close a framebuffer.

This closes a framebuffer previously added via ADDFB/ADDFB2. The IOCTL argument is a framebuffer object ID.

This IOCTL is similar to &DRM_IOCTL_MODE_RMFB, except it doesn't disable planes and CRTCs. As long as the framebuffer is used by a plane, it's kept alive. When the plane no longer uses the framebuffer (because the framebuffer is replaced with another one, or the plane is disabled), the framebuffer is cleaned up.

This is useful to implement flicker-free transitions between two processes.

Depending on the threat model, user-space may want to ensure that the framebuffer doesn't expose any sensitive user information: closed framebuffers attached to a plane can be read back by the next DRM master.

◆ DRM_IOCTL_MODE_CREATE_DUMB

#define DRM_IOCTL_MODE_CREATE_DUMB   DRM_IOWR(0xB2, struct drm_mode_create_dumb)

DRM_IOCTL_MODE_CREATE_DUMB - Create a new dumb buffer object.

KMS dumb buffers provide a very primitive way to allocate a buffer object suitable for scanout and map it for software rendering. KMS dumb buffers are not suitable for hardware-accelerated rendering nor video decoding. KMS dumb buffers are not suitable to be displayed on any other device than the KMS device where they were allocated from. Also see :ref:kms_dumb_buffer_objects.

The IOCTL argument is a struct drm_mode_create_dumb.

User-space is expected to create a KMS dumb buffer via this IOCTL, then add it as a KMS framebuffer via &DRM_IOCTL_MODE_ADDFB and map it via &DRM_IOCTL_MODE_MAP_DUMB.

&DRM_CAP_DUMB_BUFFER indicates whether this IOCTL is supported. &DRM_CAP_DUMB_PREFERRED_DEPTH and &DRM_CAP_DUMB_PREFER_SHADOW indicate driver preferences for dumb buffers.

◆ DRM_IOCTL_MODE_CREATE_LEASE

#define DRM_IOCTL_MODE_CREATE_LEASE   DRM_IOWR(0xC6, struct drm_mode_create_lease)

◆ DRM_IOCTL_MODE_CREATEPROPBLOB

#define DRM_IOCTL_MODE_CREATEPROPBLOB   DRM_IOWR(0xBD, struct drm_mode_create_blob)

◆ DRM_IOCTL_MODE_CURSOR

#define DRM_IOCTL_MODE_CURSOR   DRM_IOWR(0xA3, struct drm_mode_cursor)

◆ DRM_IOCTL_MODE_CURSOR2

#define DRM_IOCTL_MODE_CURSOR2   DRM_IOWR(0xBB, struct drm_mode_cursor2)

◆ DRM_IOCTL_MODE_DESTROY_DUMB

#define DRM_IOCTL_MODE_DESTROY_DUMB   DRM_IOWR(0xB4, struct drm_mode_destroy_dumb)

◆ DRM_IOCTL_MODE_DESTROYPROPBLOB

#define DRM_IOCTL_MODE_DESTROYPROPBLOB   DRM_IOWR(0xBE, struct drm_mode_destroy_blob)

◆ DRM_IOCTL_MODE_DETACHMODE

#define DRM_IOCTL_MODE_DETACHMODE   DRM_IOWR(0xA9, struct drm_mode_mode_cmd) /* deprecated (never worked) */

◆ DRM_IOCTL_MODE_DIRTYFB

#define DRM_IOCTL_MODE_DIRTYFB   DRM_IOWR(0xB1, struct drm_mode_fb_dirty_cmd)

◆ DRM_IOCTL_MODE_GET_LEASE

#define DRM_IOCTL_MODE_GET_LEASE   DRM_IOWR(0xC8, struct drm_mode_get_lease)

◆ DRM_IOCTL_MODE_GETCONNECTOR

#define DRM_IOCTL_MODE_GETCONNECTOR   DRM_IOWR(0xA7, struct drm_mode_get_connector)

◆ DRM_IOCTL_MODE_GETCRTC

#define DRM_IOCTL_MODE_GETCRTC   DRM_IOWR(0xA1, struct drm_mode_crtc)

◆ DRM_IOCTL_MODE_GETENCODER

#define DRM_IOCTL_MODE_GETENCODER   DRM_IOWR(0xA6, struct drm_mode_get_encoder)

◆ DRM_IOCTL_MODE_GETFB

#define DRM_IOCTL_MODE_GETFB   DRM_IOWR(0xAD, struct drm_mode_fb_cmd)

◆ DRM_IOCTL_MODE_GETFB2

#define DRM_IOCTL_MODE_GETFB2   DRM_IOWR(0xCE, struct drm_mode_fb_cmd2)

DRM_IOCTL_MODE_GETFB2 - Get framebuffer metadata.

This queries metadata about a framebuffer. User-space fills &drm_mode_fb_cmd2.fb_id as the input, and the kernels fills the rest of the struct as the output.

If the client is DRM master or has &CAP_SYS_ADMIN, &drm_mode_fb_cmd2.handles will be filled with GEM buffer handles. Fresh new GEM handles are always returned, even if another GEM handle referring to the same memory object already exists on the DRM file description. The caller is responsible for removing the new handles, e.g. via the &DRM_IOCTL_GEM_CLOSE IOCTL. The same new handle will be returned for multiple planes in case they use the same memory object. Planes are valid until one has a zero handle – this can be used to compute the number of planes.

Otherwise, &drm_mode_fb_cmd2.handles will be zeroed and planes are valid until one has a zero &drm_mode_fb_cmd2.pitches.

If the framebuffer has a format modifier, &DRM_MODE_FB_MODIFIERS will be set in &drm_mode_fb_cmd2.flags and &drm_mode_fb_cmd2.modifier will contain the modifier. Otherwise, user-space must ignore &drm_mode_fb_cmd2.modifier.

To obtain DMA-BUF FDs for each plane without leaking GEM handles, user-space can export each handle via &DRM_IOCTL_PRIME_HANDLE_TO_FD, then immediately close each unique handle via &DRM_IOCTL_GEM_CLOSE, making sure to not double-close handles which are specified multiple times in the array.

◆ DRM_IOCTL_MODE_GETGAMMA

#define DRM_IOCTL_MODE_GETGAMMA   DRM_IOWR(0xA4, struct drm_mode_crtc_lut)

◆ DRM_IOCTL_MODE_GETPLANE

#define DRM_IOCTL_MODE_GETPLANE   DRM_IOWR(0xB6, struct drm_mode_get_plane)

◆ DRM_IOCTL_MODE_GETPLANERESOURCES

#define DRM_IOCTL_MODE_GETPLANERESOURCES   DRM_IOWR(0xB5, struct drm_mode_get_plane_res)

◆ DRM_IOCTL_MODE_GETPROPBLOB

#define DRM_IOCTL_MODE_GETPROPBLOB   DRM_IOWR(0xAC, struct drm_mode_get_blob)

◆ DRM_IOCTL_MODE_GETPROPERTY

#define DRM_IOCTL_MODE_GETPROPERTY   DRM_IOWR(0xAA, struct drm_mode_get_property)

◆ DRM_IOCTL_MODE_GETRESOURCES

#define DRM_IOCTL_MODE_GETRESOURCES   DRM_IOWR(0xA0, struct drm_mode_card_res)

◆ DRM_IOCTL_MODE_LIST_LESSEES

#define DRM_IOCTL_MODE_LIST_LESSEES   DRM_IOWR(0xC7, struct drm_mode_list_lessees)

◆ DRM_IOCTL_MODE_MAP_DUMB

#define DRM_IOCTL_MODE_MAP_DUMB   DRM_IOWR(0xB3, struct drm_mode_map_dumb)

◆ DRM_IOCTL_MODE_OBJ_GETPROPERTIES

#define DRM_IOCTL_MODE_OBJ_GETPROPERTIES   DRM_IOWR(0xB9, struct drm_mode_obj_get_properties)

◆ DRM_IOCTL_MODE_OBJ_SETPROPERTY

#define DRM_IOCTL_MODE_OBJ_SETPROPERTY   DRM_IOWR(0xBA, struct drm_mode_obj_set_property)

◆ DRM_IOCTL_MODE_PAGE_FLIP

#define DRM_IOCTL_MODE_PAGE_FLIP   DRM_IOWR(0xB0, struct drm_mode_crtc_page_flip)

◆ DRM_IOCTL_MODE_REVOKE_LEASE

#define DRM_IOCTL_MODE_REVOKE_LEASE   DRM_IOWR(0xC9, struct drm_mode_revoke_lease)

◆ DRM_IOCTL_MODE_RMFB

#define DRM_IOCTL_MODE_RMFB   DRM_IOWR(0xAF, unsigned int)

DRM_IOCTL_MODE_RMFB - Remove a framebuffer.

This removes a framebuffer previously added via ADDFB/ADDFB2. The IOCTL argument is a framebuffer object ID.

Warning: removing a framebuffer currently in-use on an enabled plane will disable that plane. The CRTC the plane is linked to may also be disabled (depending on driver capabilities).

◆ DRM_IOCTL_MODE_SETCRTC

#define DRM_IOCTL_MODE_SETCRTC   DRM_IOWR(0xA2, struct drm_mode_crtc)

◆ DRM_IOCTL_MODE_SETGAMMA

#define DRM_IOCTL_MODE_SETGAMMA   DRM_IOWR(0xA5, struct drm_mode_crtc_lut)

◆ DRM_IOCTL_MODE_SETPLANE

#define DRM_IOCTL_MODE_SETPLANE   DRM_IOWR(0xB7, struct drm_mode_set_plane)

◆ DRM_IOCTL_MODE_SETPROPERTY

#define DRM_IOCTL_MODE_SETPROPERTY   DRM_IOWR(0xAB, struct drm_mode_connector_set_property)

◆ DRM_IOCTL_MODESET_CTL

#define DRM_IOCTL_MODESET_CTL   DRM_IOW(0x08, struct drm_modeset_ctl)

◆ DRM_IOCTL_NEW_CTX

#define DRM_IOCTL_NEW_CTX   DRM_IOW( 0x25, struct drm_ctx)

◆ DRM_IOCTL_PRIME_FD_TO_HANDLE

#define DRM_IOCTL_PRIME_FD_TO_HANDLE   DRM_IOWR(0x2e, struct drm_prime_handle)

DRM_IOCTL_PRIME_FD_TO_HANDLE - Convert a DMA-BUF FD to a GEM handle.

User-space sets &drm_prime_handle.fd with a DMA-BUF file descriptor to import, and gets back a GEM handle in &drm_prime_handle.handle. &drm_prime_handle.flags is unused.

If an existing GEM handle refers to the memory object backing the DMA-BUF, that GEM handle is returned. Therefore user-space which needs to handle arbitrary DMA-BUFs must have a user-space lookup data structure to manually reference-count duplicated GEM handles. For more information see &DRM_IOCTL_GEM_CLOSE.

The import can fail for any driver-specific reason, e.g. because import is only supported for DMA-BUFs allocated on this DRM device.

Support for importing DMA-BUFs is advertised via &DRM_PRIME_CAP_IMPORT.

◆ DRM_IOCTL_PRIME_HANDLE_TO_FD

#define DRM_IOCTL_PRIME_HANDLE_TO_FD   DRM_IOWR(0x2d, struct drm_prime_handle)

DRM_IOCTL_PRIME_HANDLE_TO_FD - Convert a GEM handle to a DMA-BUF FD.

User-space sets &drm_prime_handle.handle with the GEM handle to export and &drm_prime_handle.flags, and gets back a DMA-BUF file descriptor in &drm_prime_handle.fd.

The export can fail for any driver-specific reason, e.g. because export is not supported for this specific GEM handle (but might be for others).

Support for exporting DMA-BUFs is advertised via &DRM_PRIME_CAP_EXPORT.

◆ DRM_IOCTL_RES_CTX

#define DRM_IOCTL_RES_CTX   DRM_IOWR(0x26, struct drm_ctx_res)

◆ DRM_IOCTL_RM_CTX

#define DRM_IOCTL_RM_CTX   DRM_IOWR(0x21, struct drm_ctx)

◆ DRM_IOCTL_RM_DRAW

#define DRM_IOCTL_RM_DRAW   DRM_IOWR(0x28, struct drm_draw)

◆ DRM_IOCTL_RM_MAP

#define DRM_IOCTL_RM_MAP   DRM_IOW( 0x1b, struct drm_map)

◆ DRM_IOCTL_SET_CLIENT_CAP

#define DRM_IOCTL_SET_CLIENT_CAP   DRM_IOW( 0x0d, struct drm_set_client_cap)

◆ DRM_IOCTL_SET_CLIENT_NAME

#define DRM_IOCTL_SET_CLIENT_NAME   DRM_IOWR(0xD1, struct drm_set_client_name)

DRM_IOCTL_SET_CLIENT_NAME - Attach a name to a drm_file

Having a name allows for easier tracking and debugging. The length of the name (without null ending char) must be <= DRM_CLIENT_NAME_MAX_LEN. The call will fail if the name contains whitespaces or non-printable chars.

◆ DRM_IOCTL_SET_MASTER

#define DRM_IOCTL_SET_MASTER   DRM_IO(0x1e)

◆ DRM_IOCTL_SET_SAREA_CTX

#define DRM_IOCTL_SET_SAREA_CTX   DRM_IOW( 0x1c, struct drm_ctx_priv_map)

◆ DRM_IOCTL_SET_UNIQUE

#define DRM_IOCTL_SET_UNIQUE   DRM_IOW( 0x10, struct drm_unique)

◆ DRM_IOCTL_SET_VERSION

#define DRM_IOCTL_SET_VERSION   DRM_IOWR(0x07, struct drm_set_version)

◆ DRM_IOCTL_SG_ALLOC

#define DRM_IOCTL_SG_ALLOC   DRM_IOWR(0x38, struct drm_scatter_gather)

◆ DRM_IOCTL_SG_FREE

#define DRM_IOCTL_SG_FREE   DRM_IOW( 0x39, struct drm_scatter_gather)

◆ DRM_IOCTL_SWITCH_CTX

#define DRM_IOCTL_SWITCH_CTX   DRM_IOW( 0x24, struct drm_ctx)

◆ DRM_IOCTL_SYNCOBJ_CREATE

#define DRM_IOCTL_SYNCOBJ_CREATE   DRM_IOWR(0xBF, struct drm_syncobj_create)

◆ DRM_IOCTL_SYNCOBJ_DESTROY

#define DRM_IOCTL_SYNCOBJ_DESTROY   DRM_IOWR(0xC0, struct drm_syncobj_destroy)

◆ DRM_IOCTL_SYNCOBJ_EVENTFD

#define DRM_IOCTL_SYNCOBJ_EVENTFD   DRM_IOWR(0xCF, struct drm_syncobj_eventfd)

DRM_IOCTL_SYNCOBJ_EVENTFD - Register an eventfd to be signalled by a syncobj.

This can be used to integrate a syncobj in an event loop.

The IOCTL argument is a struct drm_syncobj_eventfd.

◆ DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE

#define DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE   DRM_IOWR(0xC2, struct drm_syncobj_handle)

◆ DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD

#define DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD   DRM_IOWR(0xC1, struct drm_syncobj_handle)

◆ DRM_IOCTL_SYNCOBJ_QUERY

#define DRM_IOCTL_SYNCOBJ_QUERY   DRM_IOWR(0xCB, struct drm_syncobj_timeline_array)

◆ DRM_IOCTL_SYNCOBJ_RESET

#define DRM_IOCTL_SYNCOBJ_RESET   DRM_IOWR(0xC4, struct drm_syncobj_array)

◆ DRM_IOCTL_SYNCOBJ_SIGNAL

#define DRM_IOCTL_SYNCOBJ_SIGNAL   DRM_IOWR(0xC5, struct drm_syncobj_array)

◆ DRM_IOCTL_SYNCOBJ_TIMELINE_SIGNAL

#define DRM_IOCTL_SYNCOBJ_TIMELINE_SIGNAL   DRM_IOWR(0xCD, struct drm_syncobj_timeline_array)

◆ DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT

#define DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT   DRM_IOWR(0xCA, struct drm_syncobj_timeline_wait)

◆ DRM_IOCTL_SYNCOBJ_TRANSFER

#define DRM_IOCTL_SYNCOBJ_TRANSFER   DRM_IOWR(0xCC, struct drm_syncobj_transfer)

◆ DRM_IOCTL_SYNCOBJ_WAIT

#define DRM_IOCTL_SYNCOBJ_WAIT   DRM_IOWR(0xC3, struct drm_syncobj_wait)

◆ DRM_IOCTL_UNBLOCK

#define DRM_IOCTL_UNBLOCK   DRM_IOWR(0x13, struct drm_block)

◆ DRM_IOCTL_UNLOCK

#define DRM_IOCTL_UNLOCK   DRM_IOW( 0x2b, struct drm_lock)

◆ DRM_IOCTL_UPDATE_DRAW

#define DRM_IOCTL_UPDATE_DRAW   DRM_IOW(0x3f, struct drm_update_draw)

◆ DRM_IOCTL_VERSION

#define DRM_IOCTL_VERSION   DRM_IOWR(0x00, struct drm_version)

◆ DRM_IOCTL_WAIT_VBLANK

#define DRM_IOCTL_WAIT_VBLANK   DRM_IOWR(0x3a, union drm_wait_vblank)

◆ DRM_IOR

#define DRM_IOR (   nr,
  type 
)    _IOR(DRM_IOCTL_BASE,nr,type)

◆ DRM_IOW

#define DRM_IOW (   nr,
  type 
)    _IOW(DRM_IOCTL_BASE,nr,type)

◆ DRM_IOWR

#define DRM_IOWR (   nr,
  type 
)    _IOWR(DRM_IOCTL_BASE,nr,type)

◆ DRM_MAX_ORDER

#define DRM_MAX_ORDER   22

Up to 2^22 bytes = 4MB

◆ DRM_MIN_ORDER

#define DRM_MIN_ORDER   5

At least 2^5 bytes = 32 bytes

◆ DRM_NAME

#define DRM_NAME   "drm"

Name in kernel, /dev, and /proc

◆ DRM_PRIME_CAP_EXPORT

#define DRM_PRIME_CAP_EXPORT   0x2

DRM_PRIME_CAP_EXPORT

If this bit is set in &DRM_CAP_PRIME, the driver supports exporting PRIME buffers via the &DRM_IOCTL_PRIME_HANDLE_TO_FD ioctl.

Starting from kernel version 6.6, this bit is always set in &DRM_CAP_PRIME.

◆ DRM_PRIME_CAP_IMPORT

#define DRM_PRIME_CAP_IMPORT   0x1

DRM_PRIME_CAP_IMPORT

If this bit is set in &DRM_CAP_PRIME, the driver supports importing PRIME buffers via the &DRM_IOCTL_PRIME_FD_TO_HANDLE ioctl.

Starting from kernel version 6.6, this bit is always set in &DRM_CAP_PRIME.

◆ DRM_RAM_PERCENT

#define DRM_RAM_PERCENT   10

How much system ram can we lock?

◆ DRM_RDWR

#define DRM_RDWR   O_RDWR

◆ DRM_SYNCOBJ_CREATE_SIGNALED

#define DRM_SYNCOBJ_CREATE_SIGNALED   (1 << 0)

◆ DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE

#define DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE   (1 << 0)

◆ DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_TIMELINE

#define DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_TIMELINE   (1 << 1)

◆ DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE

#define DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE   (1 << 0)

◆ DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_TIMELINE

#define DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_TIMELINE   (1 << 1)

◆ DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED

#define DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED   (1 << 0) /* last available point on timeline syncobj */

◆ DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL

#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL   (1 << 0)

◆ DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE

#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE   (1 << 2) /* wait for time point to become available */

◆ DRM_SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE

#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE   (1 << 3) /* set fence deadline to deadline_nsec */

◆ DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT

#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT   (1 << 1)

Typedef Documentation

◆ __kernel_size_t

◆ __s16

typedef int16_t __s16

◆ __s32

typedef int32_t __s32

◆ __s64

typedef int64_t __s64

◆ __s8

typedef int8_t __s8

◆ __u16

typedef uint16_t __u16

◆ __u32

typedef uint32_t __u32

◆ __u64

typedef uint64_t __u64

◆ __u8

typedef uint8_t __u8

◆ drm_agp_binding_t

◆ drm_agp_buffer_t

◆ drm_agp_info_t

typedef struct drm_agp_info drm_agp_info_t

◆ drm_agp_mode_t

typedef struct drm_agp_mode drm_agp_mode_t

◆ drm_auth_t

typedef struct drm_auth drm_auth_t

◆ drm_block_t

typedef struct drm_block drm_block_t

◆ drm_buf_desc_t

typedef struct drm_buf_desc drm_buf_desc_t

◆ drm_buf_free_t

typedef struct drm_buf_free drm_buf_free_t

◆ drm_buf_info_t

typedef struct drm_buf_info drm_buf_info_t

◆ drm_buf_map_t

typedef struct drm_buf_map drm_buf_map_t

◆ drm_buf_pub_t

typedef struct drm_buf_pub drm_buf_pub_t

◆ drm_client_t

typedef struct drm_client drm_client_t

◆ drm_clip_rect_t

◆ drm_context_t

typedef unsigned int drm_context_t

◆ drm_control_t

typedef struct drm_control drm_control_t

◆ drm_ctx_flags_t

◆ drm_ctx_priv_map_t

◆ drm_ctx_res_t

typedef struct drm_ctx_res drm_ctx_res_t

◆ drm_ctx_t

typedef struct drm_ctx drm_ctx_t

◆ drm_dma_flags_t

◆ drm_dma_t

typedef struct drm_dma drm_dma_t

◆ drm_draw_t

typedef struct drm_draw drm_draw_t

◆ drm_drawable_info_t

◆ drm_drawable_t

typedef unsigned int drm_drawable_t

◆ drm_handle_t

typedef unsigned long drm_handle_t

◆ drm_hw_lock_t

typedef struct drm_hw_lock drm_hw_lock_t

◆ drm_irq_busid_t

◆ drm_list_t

typedef struct drm_list drm_list_t

◆ drm_lock_flags_t

◆ drm_lock_t

typedef struct drm_lock drm_lock_t

◆ drm_magic_t

typedef unsigned int drm_magic_t

◆ drm_map_flags_t

◆ drm_map_t

typedef struct drm_map drm_map_t

◆ drm_map_type_t

◆ drm_scatter_gather_t

◆ drm_set_version_t

◆ drm_stat_type_t

◆ drm_stats_t

typedef struct drm_stats drm_stats_t

◆ drm_tex_region_t

◆ drm_unique_t

typedef struct drm_unique drm_unique_t

◆ drm_update_draw_t

◆ drm_vblank_seq_type_t

◆ drm_version_t

typedef struct drm_version drm_version_t

◆ drm_wait_vblank_t

Enumeration Type Documentation

◆ drm_ctx_flags

Enumerator
_DRM_CONTEXT_PRESERVED 
_DRM_CONTEXT_2DONLY 

◆ drm_dma_flags

Enumerator
_DRM_DMA_BLOCK 

Block until buffer dispatched.

Note
The buffer may not yet have been processed by the hardware – getting a hardware lock with the hardware quiescent will ensure that the buffer has been processed.
_DRM_DMA_WHILE_LOCKED 

Dispatch while lock held

_DRM_DMA_PRIORITY 

High priority dispatch

_DRM_DMA_WAIT 

Wait for free buffers

_DRM_DMA_SMALLER_OK 

Smaller-than-requested buffers OK

_DRM_DMA_LARGER_OK 

Larger-than-requested buffers OK

◆ drm_drawable_info_type_t

Enumerator
DRM_DRAWABLE_CLIPRECTS 

◆ drm_lock_flags

Enumerator
_DRM_LOCK_READY 

Wait until hardware is ready for DMA

_DRM_LOCK_QUIESCENT 

Wait until hardware quiescent

_DRM_LOCK_FLUSH 

Flush this context's DMA queue first

_DRM_LOCK_FLUSH_ALL 

Flush all DMA queues first

_DRM_HALT_ALL_QUEUES 

Halt all current and future queues

_DRM_HALT_CUR_QUEUES 

Halt all current queues

◆ drm_map_flags

Enumerator
_DRM_RESTRICTED 

Cannot be mapped to user-virtual

_DRM_READ_ONLY 
_DRM_LOCKED 

shared, cached, locked

_DRM_KERNEL 

kernel requires access

_DRM_WRITE_COMBINING 

use write-combining if available

_DRM_CONTAINS_LOCK 

SHM page that contains lock

_DRM_REMOVABLE 

Removable mapping

_DRM_DRIVER 

Managed by driver

◆ drm_map_type

Enumerator
_DRM_FRAME_BUFFER 

WC (no caching), no core dump

_DRM_REGISTERS 

no caching, no core dump

_DRM_SHM 

shared, cached

_DRM_AGP 

AGP/GART

_DRM_SCATTER_GATHER 

Scatter/gather memory for PCI DMA

_DRM_CONSISTENT 

Consistent memory for PCI DMA

◆ drm_stat_type

Enumerator
_DRM_STAT_LOCK 
_DRM_STAT_OPENS 
_DRM_STAT_CLOSES 
_DRM_STAT_IOCTLS 
_DRM_STAT_LOCKS 
_DRM_STAT_UNLOCKS 
_DRM_STAT_VALUE 

Generic value

_DRM_STAT_BYTE 

Generic byte counter (1024bytes/K)

_DRM_STAT_COUNT 

Generic non-byte counter (1000/k)

_DRM_STAT_IRQ 

IRQ

_DRM_STAT_PRIMARY 

Primary DMA bytes

_DRM_STAT_SECONDARY 

Secondary DMA bytes

_DRM_STAT_DMA 

DMA

_DRM_STAT_SPECIAL 

Special DMA (e.g., priority or polled)

_DRM_STAT_MISSED 

Missed DMA opportunity

◆ drm_vblank_seq_type

Enumerator
_DRM_VBLANK_ABSOLUTE 

Wait for specific vblank sequence number

_DRM_VBLANK_RELATIVE 

Wait for given number of vblanks

_DRM_VBLANK_HIGH_CRTC_MASK 
_DRM_VBLANK_EVENT 

Send event instead of blocking

_DRM_VBLANK_FLIP 

Scheduled buffer swap should flip

_DRM_VBLANK_NEXTONMISS 

If missed, wait for next vblank

_DRM_VBLANK_SECONDARY 

Secondary display controller

_DRM_VBLANK_SIGNAL 

Send signal instead of blocking, unsupported