Edit File by line
/home/barbar84/public_h.../wp-conte.../plugins/sujqvwi/ShExBy/shex_roo.../usr/include/drm
File: drm.h
/*
[0] Fix | Delete
* Header for the Direct Rendering Manager
[1] Fix | Delete
*
[2] Fix | Delete
* Author: Rickard E. (Rik) Faith <faith@valinux.com>
[3] Fix | Delete
*
[4] Fix | Delete
* Acknowledgments:
[5] Fix | Delete
* Dec 1999, Richard Henderson <rth@twiddle.net>, move to generic cmpxchg.
[6] Fix | Delete
*/
[7] Fix | Delete
[8] Fix | Delete
/*
[9] Fix | Delete
* Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
[10] Fix | Delete
* Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
[11] Fix | Delete
* All rights reserved.
[12] Fix | Delete
*
[13] Fix | Delete
* Permission is hereby granted, free of charge, to any person obtaining a
[14] Fix | Delete
* copy of this software and associated documentation files (the "Software"),
[15] Fix | Delete
* to deal in the Software without restriction, including without limitation
[16] Fix | Delete
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
[17] Fix | Delete
* and/or sell copies of the Software, and to permit persons to whom the
[18] Fix | Delete
* Software is furnished to do so, subject to the following conditions:
[19] Fix | Delete
*
[20] Fix | Delete
* The above copyright notice and this permission notice (including the next
[21] Fix | Delete
* paragraph) shall be included in all copies or substantial portions of the
[22] Fix | Delete
* Software.
[23] Fix | Delete
*
[24] Fix | Delete
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
[25] Fix | Delete
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
[26] Fix | Delete
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
[27] Fix | Delete
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
[28] Fix | Delete
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
[29] Fix | Delete
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
[30] Fix | Delete
* OTHER DEALINGS IN THE SOFTWARE.
[31] Fix | Delete
*/
[32] Fix | Delete
[33] Fix | Delete
#ifndef _DRM_H_
[34] Fix | Delete
#define _DRM_H_
[35] Fix | Delete
[36] Fix | Delete
#if defined(__linux__)
[37] Fix | Delete
[38] Fix | Delete
#include <linux/types.h>
[39] Fix | Delete
#include <asm/ioctl.h>
[40] Fix | Delete
typedef unsigned int drm_handle_t;
[41] Fix | Delete
[42] Fix | Delete
#else /* One of the BSDs */
[43] Fix | Delete
[44] Fix | Delete
#include <stdint.h>
[45] Fix | Delete
#include <sys/ioccom.h>
[46] Fix | Delete
#include <sys/types.h>
[47] Fix | Delete
typedef int8_t __s8;
[48] Fix | Delete
typedef uint8_t __u8;
[49] Fix | Delete
typedef int16_t __s16;
[50] Fix | Delete
typedef uint16_t __u16;
[51] Fix | Delete
typedef int32_t __s32;
[52] Fix | Delete
typedef uint32_t __u32;
[53] Fix | Delete
typedef int64_t __s64;
[54] Fix | Delete
typedef uint64_t __u64;
[55] Fix | Delete
typedef size_t __kernel_size_t;
[56] Fix | Delete
typedef unsigned long drm_handle_t;
[57] Fix | Delete
[58] Fix | Delete
#endif
[59] Fix | Delete
[60] Fix | Delete
#if defined(__cplusplus)
[61] Fix | Delete
extern "C" {
[62] Fix | Delete
#endif
[63] Fix | Delete
[64] Fix | Delete
#define DRM_NAME "drm" /**< Name in kernel, /dev, and /proc */
[65] Fix | Delete
#define DRM_MIN_ORDER 5 /**< At least 2^5 bytes = 32 bytes */
[66] Fix | Delete
#define DRM_MAX_ORDER 22 /**< Up to 2^22 bytes = 4MB */
[67] Fix | Delete
#define DRM_RAM_PERCENT 10 /**< How much system ram can we lock? */
[68] Fix | Delete
[69] Fix | Delete
#define _DRM_LOCK_HELD 0x80000000U /**< Hardware lock is held */
[70] Fix | Delete
#define _DRM_LOCK_CONT 0x40000000U /**< Hardware lock is contended */
[71] Fix | Delete
#define _DRM_LOCK_IS_HELD(lock) ((lock) & _DRM_LOCK_HELD)
[72] Fix | Delete
#define _DRM_LOCK_IS_CONT(lock) ((lock) & _DRM_LOCK_CONT)
[73] Fix | Delete
#define _DRM_LOCKING_CONTEXT(lock) ((lock) & ~(_DRM_LOCK_HELD|_DRM_LOCK_CONT))
[74] Fix | Delete
[75] Fix | Delete
typedef unsigned int drm_context_t;
[76] Fix | Delete
typedef unsigned int drm_drawable_t;
[77] Fix | Delete
typedef unsigned int drm_magic_t;
[78] Fix | Delete
[79] Fix | Delete
/*
[80] Fix | Delete
* Cliprect.
[81] Fix | Delete
*
[82] Fix | Delete
* \warning: If you change this structure, make sure you change
[83] Fix | Delete
* XF86DRIClipRectRec in the server as well
[84] Fix | Delete
*
[85] Fix | Delete
* \note KW: Actually it's illegal to change either for
[86] Fix | Delete
* backwards-compatibility reasons.
[87] Fix | Delete
*/
[88] Fix | Delete
struct drm_clip_rect {
[89] Fix | Delete
unsigned short x1;
[90] Fix | Delete
unsigned short y1;
[91] Fix | Delete
unsigned short x2;
[92] Fix | Delete
unsigned short y2;
[93] Fix | Delete
};
[94] Fix | Delete
[95] Fix | Delete
/*
[96] Fix | Delete
* Drawable information.
[97] Fix | Delete
*/
[98] Fix | Delete
struct drm_drawable_info {
[99] Fix | Delete
unsigned int num_rects;
[100] Fix | Delete
struct drm_clip_rect *rects;
[101] Fix | Delete
};
[102] Fix | Delete
[103] Fix | Delete
/*
[104] Fix | Delete
* Texture region,
[105] Fix | Delete
*/
[106] Fix | Delete
struct drm_tex_region {
[107] Fix | Delete
unsigned char next;
[108] Fix | Delete
unsigned char prev;
[109] Fix | Delete
unsigned char in_use;
[110] Fix | Delete
unsigned char padding;
[111] Fix | Delete
unsigned int age;
[112] Fix | Delete
};
[113] Fix | Delete
[114] Fix | Delete
/*
[115] Fix | Delete
* Hardware lock.
[116] Fix | Delete
*
[117] Fix | Delete
* The lock structure is a simple cache-line aligned integer. To avoid
[118] Fix | Delete
* processor bus contention on a multiprocessor system, there should not be any
[119] Fix | Delete
* other data stored in the same cache line.
[120] Fix | Delete
*/
[121] Fix | Delete
struct drm_hw_lock {
[122] Fix | Delete
__volatile__ unsigned int lock; /**< lock variable */
[123] Fix | Delete
char padding[60]; /**< Pad to cache line */
[124] Fix | Delete
};
[125] Fix | Delete
[126] Fix | Delete
/*
[127] Fix | Delete
* DRM_IOCTL_VERSION ioctl argument type.
[128] Fix | Delete
*
[129] Fix | Delete
* \sa drmGetVersion().
[130] Fix | Delete
*/
[131] Fix | Delete
struct drm_version {
[132] Fix | Delete
int version_major; /**< Major version */
[133] Fix | Delete
int version_minor; /**< Minor version */
[134] Fix | Delete
int version_patchlevel; /**< Patch level */
[135] Fix | Delete
__kernel_size_t name_len; /**< Length of name buffer */
[136] Fix | Delete
char *name; /**< Name of driver */
[137] Fix | Delete
__kernel_size_t date_len; /**< Length of date buffer */
[138] Fix | Delete
char *date; /**< User-space buffer to hold date */
[139] Fix | Delete
__kernel_size_t desc_len; /**< Length of desc buffer */
[140] Fix | Delete
char *desc; /**< User-space buffer to hold desc */
[141] Fix | Delete
};
[142] Fix | Delete
[143] Fix | Delete
/*
[144] Fix | Delete
* DRM_IOCTL_GET_UNIQUE ioctl argument type.
[145] Fix | Delete
*
[146] Fix | Delete
* \sa drmGetBusid() and drmSetBusId().
[147] Fix | Delete
*/
[148] Fix | Delete
struct drm_unique {
[149] Fix | Delete
__kernel_size_t unique_len; /**< Length of unique */
[150] Fix | Delete
char *unique; /**< Unique name for driver instantiation */
[151] Fix | Delete
};
[152] Fix | Delete
[153] Fix | Delete
struct drm_list {
[154] Fix | Delete
int count; /**< Length of user-space structures */
[155] Fix | Delete
struct drm_version *version;
[156] Fix | Delete
};
[157] Fix | Delete
[158] Fix | Delete
struct drm_block {
[159] Fix | Delete
int unused;
[160] Fix | Delete
};
[161] Fix | Delete
[162] Fix | Delete
/*
[163] Fix | Delete
* DRM_IOCTL_CONTROL ioctl argument type.
[164] Fix | Delete
*
[165] Fix | Delete
* \sa drmCtlInstHandler() and drmCtlUninstHandler().
[166] Fix | Delete
*/
[167] Fix | Delete
struct drm_control {
[168] Fix | Delete
enum {
[169] Fix | Delete
DRM_ADD_COMMAND,
[170] Fix | Delete
DRM_RM_COMMAND,
[171] Fix | Delete
DRM_INST_HANDLER,
[172] Fix | Delete
DRM_UNINST_HANDLER
[173] Fix | Delete
} func;
[174] Fix | Delete
int irq;
[175] Fix | Delete
};
[176] Fix | Delete
[177] Fix | Delete
/*
[178] Fix | Delete
* Type of memory to map.
[179] Fix | Delete
*/
[180] Fix | Delete
enum drm_map_type {
[181] Fix | Delete
_DRM_FRAME_BUFFER = 0, /**< WC (no caching), no core dump */
[182] Fix | Delete
_DRM_REGISTERS = 1, /**< no caching, no core dump */
[183] Fix | Delete
_DRM_SHM = 2, /**< shared, cached */
[184] Fix | Delete
_DRM_AGP = 3, /**< AGP/GART */
[185] Fix | Delete
_DRM_SCATTER_GATHER = 4, /**< Scatter/gather memory for PCI DMA */
[186] Fix | Delete
_DRM_CONSISTENT = 5 /**< Consistent memory for PCI DMA */
[187] Fix | Delete
};
[188] Fix | Delete
[189] Fix | Delete
/*
[190] Fix | Delete
* Memory mapping flags.
[191] Fix | Delete
*/
[192] Fix | Delete
enum drm_map_flags {
[193] Fix | Delete
_DRM_RESTRICTED = 0x01, /**< Cannot be mapped to user-virtual */
[194] Fix | Delete
_DRM_READ_ONLY = 0x02,
[195] Fix | Delete
_DRM_LOCKED = 0x04, /**< shared, cached, locked */
[196] Fix | Delete
_DRM_KERNEL = 0x08, /**< kernel requires access */
[197] Fix | Delete
_DRM_WRITE_COMBINING = 0x10, /**< use write-combining if available */
[198] Fix | Delete
_DRM_CONTAINS_LOCK = 0x20, /**< SHM page that contains lock */
[199] Fix | Delete
_DRM_REMOVABLE = 0x40, /**< Removable mapping */
[200] Fix | Delete
_DRM_DRIVER = 0x80 /**< Managed by driver */
[201] Fix | Delete
};
[202] Fix | Delete
[203] Fix | Delete
struct drm_ctx_priv_map {
[204] Fix | Delete
unsigned int ctx_id; /**< Context requesting private mapping */
[205] Fix | Delete
void *handle; /**< Handle of map */
[206] Fix | Delete
};
[207] Fix | Delete
[208] Fix | Delete
/*
[209] Fix | Delete
* DRM_IOCTL_GET_MAP, DRM_IOCTL_ADD_MAP and DRM_IOCTL_RM_MAP ioctls
[210] Fix | Delete
* argument type.
[211] Fix | Delete
*
[212] Fix | Delete
* \sa drmAddMap().
[213] Fix | Delete
*/
[214] Fix | Delete
struct drm_map {
[215] Fix | Delete
unsigned long offset; /**< Requested physical address (0 for SAREA)*/
[216] Fix | Delete
unsigned long size; /**< Requested physical size (bytes) */
[217] Fix | Delete
enum drm_map_type type; /**< Type of memory to map */
[218] Fix | Delete
enum drm_map_flags flags; /**< Flags */
[219] Fix | Delete
void *handle; /**< User-space: "Handle" to pass to mmap() */
[220] Fix | Delete
/**< Kernel-space: kernel-virtual address */
[221] Fix | Delete
int mtrr; /**< MTRR slot used */
[222] Fix | Delete
/* Private data */
[223] Fix | Delete
};
[224] Fix | Delete
[225] Fix | Delete
/*
[226] Fix | Delete
* DRM_IOCTL_GET_CLIENT ioctl argument type.
[227] Fix | Delete
*/
[228] Fix | Delete
struct drm_client {
[229] Fix | Delete
int idx; /**< Which client desired? */
[230] Fix | Delete
int auth; /**< Is client authenticated? */
[231] Fix | Delete
unsigned long pid; /**< Process ID */
[232] Fix | Delete
unsigned long uid; /**< User ID */
[233] Fix | Delete
unsigned long magic; /**< Magic */
[234] Fix | Delete
unsigned long iocs; /**< Ioctl count */
[235] Fix | Delete
};
[236] Fix | Delete
[237] Fix | Delete
enum drm_stat_type {
[238] Fix | Delete
_DRM_STAT_LOCK,
[239] Fix | Delete
_DRM_STAT_OPENS,
[240] Fix | Delete
_DRM_STAT_CLOSES,
[241] Fix | Delete
_DRM_STAT_IOCTLS,
[242] Fix | Delete
_DRM_STAT_LOCKS,
[243] Fix | Delete
_DRM_STAT_UNLOCKS,
[244] Fix | Delete
_DRM_STAT_VALUE, /**< Generic value */
[245] Fix | Delete
_DRM_STAT_BYTE, /**< Generic byte counter (1024bytes/K) */
[246] Fix | Delete
_DRM_STAT_COUNT, /**< Generic non-byte counter (1000/k) */
[247] Fix | Delete
[248] Fix | Delete
_DRM_STAT_IRQ, /**< IRQ */
[249] Fix | Delete
_DRM_STAT_PRIMARY, /**< Primary DMA bytes */
[250] Fix | Delete
_DRM_STAT_SECONDARY, /**< Secondary DMA bytes */
[251] Fix | Delete
_DRM_STAT_DMA, /**< DMA */
[252] Fix | Delete
_DRM_STAT_SPECIAL, /**< Special DMA (e.g., priority or polled) */
[253] Fix | Delete
_DRM_STAT_MISSED /**< Missed DMA opportunity */
[254] Fix | Delete
/* Add to the *END* of the list */
[255] Fix | Delete
};
[256] Fix | Delete
[257] Fix | Delete
/*
[258] Fix | Delete
* DRM_IOCTL_GET_STATS ioctl argument type.
[259] Fix | Delete
*/
[260] Fix | Delete
struct drm_stats {
[261] Fix | Delete
unsigned long count;
[262] Fix | Delete
struct {
[263] Fix | Delete
unsigned long value;
[264] Fix | Delete
enum drm_stat_type type;
[265] Fix | Delete
} data[15];
[266] Fix | Delete
};
[267] Fix | Delete
[268] Fix | Delete
/*
[269] Fix | Delete
* Hardware locking flags.
[270] Fix | Delete
*/
[271] Fix | Delete
enum drm_lock_flags {
[272] Fix | Delete
_DRM_LOCK_READY = 0x01, /**< Wait until hardware is ready for DMA */
[273] Fix | Delete
_DRM_LOCK_QUIESCENT = 0x02, /**< Wait until hardware quiescent */
[274] Fix | Delete
_DRM_LOCK_FLUSH = 0x04, /**< Flush this context's DMA queue first */
[275] Fix | Delete
_DRM_LOCK_FLUSH_ALL = 0x08, /**< Flush all DMA queues first */
[276] Fix | Delete
/* These *HALT* flags aren't supported yet
[277] Fix | Delete
-- they will be used to support the
[278] Fix | Delete
full-screen DGA-like mode. */
[279] Fix | Delete
_DRM_HALT_ALL_QUEUES = 0x10, /**< Halt all current and future queues */
[280] Fix | Delete
_DRM_HALT_CUR_QUEUES = 0x20 /**< Halt all current queues */
[281] Fix | Delete
};
[282] Fix | Delete
[283] Fix | Delete
/*
[284] Fix | Delete
* DRM_IOCTL_LOCK, DRM_IOCTL_UNLOCK and DRM_IOCTL_FINISH ioctl argument type.
[285] Fix | Delete
*
[286] Fix | Delete
* \sa drmGetLock() and drmUnlock().
[287] Fix | Delete
*/
[288] Fix | Delete
struct drm_lock {
[289] Fix | Delete
int context;
[290] Fix | Delete
enum drm_lock_flags flags;
[291] Fix | Delete
};
[292] Fix | Delete
[293] Fix | Delete
/*
[294] Fix | Delete
* DMA flags
[295] Fix | Delete
*
[296] Fix | Delete
* \warning
[297] Fix | Delete
* These values \e must match xf86drm.h.
[298] Fix | Delete
*
[299] Fix | Delete
* \sa drm_dma.
[300] Fix | Delete
*/
[301] Fix | Delete
enum drm_dma_flags {
[302] Fix | Delete
/* Flags for DMA buffer dispatch */
[303] Fix | Delete
_DRM_DMA_BLOCK = 0x01, /**<
[304] Fix | Delete
* Block until buffer dispatched.
[305] Fix | Delete
*
[306] Fix | Delete
* \note The buffer may not yet have
[307] Fix | Delete
* been processed by the hardware --
[308] Fix | Delete
* getting a hardware lock with the
[309] Fix | Delete
* hardware quiescent will ensure
[310] Fix | Delete
* that the buffer has been
[311] Fix | Delete
* processed.
[312] Fix | Delete
*/
[313] Fix | Delete
_DRM_DMA_WHILE_LOCKED = 0x02, /**< Dispatch while lock held */
[314] Fix | Delete
_DRM_DMA_PRIORITY = 0x04, /**< High priority dispatch */
[315] Fix | Delete
[316] Fix | Delete
/* Flags for DMA buffer request */
[317] Fix | Delete
_DRM_DMA_WAIT = 0x10, /**< Wait for free buffers */
[318] Fix | Delete
_DRM_DMA_SMALLER_OK = 0x20, /**< Smaller-than-requested buffers OK */
[319] Fix | Delete
_DRM_DMA_LARGER_OK = 0x40 /**< Larger-than-requested buffers OK */
[320] Fix | Delete
};
[321] Fix | Delete
[322] Fix | Delete
/*
[323] Fix | Delete
* DRM_IOCTL_ADD_BUFS and DRM_IOCTL_MARK_BUFS ioctl argument type.
[324] Fix | Delete
*
[325] Fix | Delete
* \sa drmAddBufs().
[326] Fix | Delete
*/
[327] Fix | Delete
struct drm_buf_desc {
[328] Fix | Delete
int count; /**< Number of buffers of this size */
[329] Fix | Delete
int size; /**< Size in bytes */
[330] Fix | Delete
int low_mark; /**< Low water mark */
[331] Fix | Delete
int high_mark; /**< High water mark */
[332] Fix | Delete
enum {
[333] Fix | Delete
_DRM_PAGE_ALIGN = 0x01, /**< Align on page boundaries for DMA */
[334] Fix | Delete
_DRM_AGP_BUFFER = 0x02, /**< Buffer is in AGP space */
[335] Fix | Delete
_DRM_SG_BUFFER = 0x04, /**< Scatter/gather memory buffer */
[336] Fix | Delete
_DRM_FB_BUFFER = 0x08, /**< Buffer is in frame buffer */
[337] Fix | Delete
_DRM_PCI_BUFFER_RO = 0x10 /**< Map PCI DMA buffer read-only */
[338] Fix | Delete
} flags;
[339] Fix | Delete
unsigned long agp_start; /**<
[340] Fix | Delete
* Start address of where the AGP buffers are
[341] Fix | Delete
* in the AGP aperture
[342] Fix | Delete
*/
[343] Fix | Delete
};
[344] Fix | Delete
[345] Fix | Delete
/*
[346] Fix | Delete
* DRM_IOCTL_INFO_BUFS ioctl argument type.
[347] Fix | Delete
*/
[348] Fix | Delete
struct drm_buf_info {
[349] Fix | Delete
int count; /**< Entries in list */
[350] Fix | Delete
struct drm_buf_desc *list;
[351] Fix | Delete
};
[352] Fix | Delete
[353] Fix | Delete
/*
[354] Fix | Delete
* DRM_IOCTL_FREE_BUFS ioctl argument type.
[355] Fix | Delete
*/
[356] Fix | Delete
struct drm_buf_free {
[357] Fix | Delete
int count;
[358] Fix | Delete
int *list;
[359] Fix | Delete
};
[360] Fix | Delete
[361] Fix | Delete
/*
[362] Fix | Delete
* Buffer information
[363] Fix | Delete
*
[364] Fix | Delete
* \sa drm_buf_map.
[365] Fix | Delete
*/
[366] Fix | Delete
struct drm_buf_pub {
[367] Fix | Delete
int idx; /**< Index into the master buffer list */
[368] Fix | Delete
int total; /**< Buffer size */
[369] Fix | Delete
int used; /**< Amount of buffer in use (for DMA) */
[370] Fix | Delete
void *address; /**< Address of buffer */
[371] Fix | Delete
};
[372] Fix | Delete
[373] Fix | Delete
/*
[374] Fix | Delete
* DRM_IOCTL_MAP_BUFS ioctl argument type.
[375] Fix | Delete
*/
[376] Fix | Delete
struct drm_buf_map {
[377] Fix | Delete
int count; /**< Length of the buffer list */
[378] Fix | Delete
#ifdef __cplusplus
[379] Fix | Delete
void *virt;
[380] Fix | Delete
#else
[381] Fix | Delete
void *virtual; /**< Mmap'd area in user-virtual */
[382] Fix | Delete
#endif
[383] Fix | Delete
struct drm_buf_pub *list; /**< Buffer information */
[384] Fix | Delete
};
[385] Fix | Delete
[386] Fix | Delete
/*
[387] Fix | Delete
* DRM_IOCTL_DMA ioctl argument type.
[388] Fix | Delete
*
[389] Fix | Delete
* Indices here refer to the offset into the buffer list in drm_buf_get.
[390] Fix | Delete
*
[391] Fix | Delete
* \sa drmDMA().
[392] Fix | Delete
*/
[393] Fix | Delete
struct drm_dma {
[394] Fix | Delete
int context; /**< Context handle */
[395] Fix | Delete
int send_count; /**< Number of buffers to send */
[396] Fix | Delete
int *send_indices; /**< List of handles to buffers */
[397] Fix | Delete
int *send_sizes; /**< Lengths of data to send */
[398] Fix | Delete
enum drm_dma_flags flags; /**< Flags */
[399] Fix | Delete
int request_count; /**< Number of buffers requested */
[400] Fix | Delete
int request_size; /**< Desired size for buffers */
[401] Fix | Delete
int *request_indices; /**< Buffer information */
[402] Fix | Delete
int *request_sizes;
[403] Fix | Delete
int granted_count; /**< Number of buffers granted */
[404] Fix | Delete
};
[405] Fix | Delete
[406] Fix | Delete
enum drm_ctx_flags {
[407] Fix | Delete
_DRM_CONTEXT_PRESERVED = 0x01,
[408] Fix | Delete
_DRM_CONTEXT_2DONLY = 0x02
[409] Fix | Delete
};
[410] Fix | Delete
[411] Fix | Delete
/*
[412] Fix | Delete
* DRM_IOCTL_ADD_CTX ioctl argument type.
[413] Fix | Delete
*
[414] Fix | Delete
* \sa drmCreateContext() and drmDestroyContext().
[415] Fix | Delete
*/
[416] Fix | Delete
struct drm_ctx {
[417] Fix | Delete
drm_context_t handle;
[418] Fix | Delete
enum drm_ctx_flags flags;
[419] Fix | Delete
};
[420] Fix | Delete
[421] Fix | Delete
/*
[422] Fix | Delete
* DRM_IOCTL_RES_CTX ioctl argument type.
[423] Fix | Delete
*/
[424] Fix | Delete
struct drm_ctx_res {
[425] Fix | Delete
int count;
[426] Fix | Delete
struct drm_ctx *contexts;
[427] Fix | Delete
};
[428] Fix | Delete
[429] Fix | Delete
/*
[430] Fix | Delete
* DRM_IOCTL_ADD_DRAW and DRM_IOCTL_RM_DRAW ioctl argument type.
[431] Fix | Delete
*/
[432] Fix | Delete
struct drm_draw {
[433] Fix | Delete
drm_drawable_t handle;
[434] Fix | Delete
};
[435] Fix | Delete
[436] Fix | Delete
/*
[437] Fix | Delete
* DRM_IOCTL_UPDATE_DRAW ioctl argument type.
[438] Fix | Delete
*/
[439] Fix | Delete
typedef enum {
[440] Fix | Delete
DRM_DRAWABLE_CLIPRECTS
[441] Fix | Delete
} drm_drawable_info_type_t;
[442] Fix | Delete
[443] Fix | Delete
struct drm_update_draw {
[444] Fix | Delete
drm_drawable_t handle;
[445] Fix | Delete
unsigned int type;
[446] Fix | Delete
unsigned int num;
[447] Fix | Delete
unsigned long long data;
[448] Fix | Delete
};
[449] Fix | Delete
[450] Fix | Delete
/*
[451] Fix | Delete
* DRM_IOCTL_GET_MAGIC and DRM_IOCTL_AUTH_MAGIC ioctl argument type.
[452] Fix | Delete
*/
[453] Fix | Delete
struct drm_auth {
[454] Fix | Delete
drm_magic_t magic;
[455] Fix | Delete
};
[456] Fix | Delete
[457] Fix | Delete
/*
[458] Fix | Delete
* DRM_IOCTL_IRQ_BUSID ioctl argument type.
[459] Fix | Delete
*
[460] Fix | Delete
* \sa drmGetInterruptFromBusID().
[461] Fix | Delete
*/
[462] Fix | Delete
struct drm_irq_busid {
[463] Fix | Delete
int irq; /**< IRQ number */
[464] Fix | Delete
int busnum; /**< bus number */
[465] Fix | Delete
int devnum; /**< device number */
[466] Fix | Delete
int funcnum; /**< function number */
[467] Fix | Delete
};
[468] Fix | Delete
[469] Fix | Delete
enum drm_vblank_seq_type {
[470] Fix | Delete
_DRM_VBLANK_ABSOLUTE = 0x0, /**< Wait for specific vblank sequence number */
[471] Fix | Delete
_DRM_VBLANK_RELATIVE = 0x1, /**< Wait for given number of vblanks */
[472] Fix | Delete
/* bits 1-6 are reserved for high crtcs */
[473] Fix | Delete
_DRM_VBLANK_HIGH_CRTC_MASK = 0x0000003e,
[474] Fix | Delete
_DRM_VBLANK_EVENT = 0x4000000, /**< Send event instead of blocking */
[475] Fix | Delete
_DRM_VBLANK_FLIP = 0x8000000, /**< Scheduled buffer swap should flip */
[476] Fix | Delete
_DRM_VBLANK_NEXTONMISS = 0x10000000, /**< If missed, wait for next vblank */
[477] Fix | Delete
_DRM_VBLANK_SECONDARY = 0x20000000, /**< Secondary display controller */
[478] Fix | Delete
_DRM_VBLANK_SIGNAL = 0x40000000 /**< Send signal instead of blocking, unsupported */
[479] Fix | Delete
};
[480] Fix | Delete
#define _DRM_VBLANK_HIGH_CRTC_SHIFT 1
[481] Fix | Delete
[482] Fix | Delete
#define _DRM_VBLANK_TYPES_MASK (_DRM_VBLANK_ABSOLUTE | _DRM_VBLANK_RELATIVE)
[483] Fix | Delete
#define _DRM_VBLANK_FLAGS_MASK (_DRM_VBLANK_EVENT | _DRM_VBLANK_SIGNAL | \
[484] Fix | Delete
_DRM_VBLANK_SECONDARY | _DRM_VBLANK_NEXTONMISS)
[485] Fix | Delete
[486] Fix | Delete
struct drm_wait_vblank_request {
[487] Fix | Delete
enum drm_vblank_seq_type type;
[488] Fix | Delete
unsigned int sequence;
[489] Fix | Delete
unsigned long signal;
[490] Fix | Delete
};
[491] Fix | Delete
[492] Fix | Delete
struct drm_wait_vblank_reply {
[493] Fix | Delete
enum drm_vblank_seq_type type;
[494] Fix | Delete
unsigned int sequence;
[495] Fix | Delete
long tval_sec;
[496] Fix | Delete
long tval_usec;
[497] Fix | Delete
};
[498] Fix | Delete
[499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function