📄 radeon_drm.h
字号:
/* Setup state */ unsigned int se_cntl_status; /* 0x2140 */ /* Misc state */ unsigned int re_top_left; /* 0x26c0 */ unsigned int re_misc;} drm_radeon_context_regs_t;typedef struct { /* Zbias state */ unsigned int se_zbias_factor; /* 0x1dac */ unsigned int se_zbias_constant;} drm_radeon_context2_regs_t;/* Setup registers for each texture unit */typedef struct { unsigned int pp_txfilter; unsigned int pp_txformat; unsigned int pp_txoffset; unsigned int pp_txcblend; unsigned int pp_txablend; unsigned int pp_tfactor; unsigned int pp_border_color;} drm_radeon_texture_regs_t;typedef struct { unsigned int start; unsigned int finish; unsigned int prim:8; unsigned int stateidx:8; unsigned int numverts:16; /* overloaded as offset/64 for elt prims */ unsigned int vc_format; /* vertex format */} drm_radeon_prim_t;typedef struct { drm_radeon_context_regs_t context; drm_radeon_texture_regs_t tex[RADEON_MAX_TEXTURE_UNITS]; drm_radeon_context2_regs_t context2; unsigned int dirty;} drm_radeon_state_t;typedef struct { /* The channel for communication of state information to the * kernel on firing a vertex buffer with either of the * obsoleted vertex/index ioctls. */ drm_radeon_context_regs_t context_state; drm_radeon_texture_regs_t tex_state[RADEON_MAX_TEXTURE_UNITS]; unsigned int dirty; unsigned int vertsize; unsigned int vc_format; /* The current cliprects, or a subset thereof. */ drm_clip_rect_t boxes[RADEON_NR_SAREA_CLIPRECTS]; unsigned int nbox; /* Counters for client-side throttling of rendering clients. */ unsigned int last_frame; unsigned int last_dispatch; unsigned int last_clear; drm_tex_region_t tex_list[RADEON_NR_TEX_HEAPS][RADEON_NR_TEX_REGIONS + 1]; unsigned int tex_age[RADEON_NR_TEX_HEAPS]; int ctx_owner; int pfState; /* number of 3d windows (0,1,2ormore) */ int pfCurrentPage; /* which buffer is being displayed? */ int crtc2_base; /* CRTC2 frame offset */ int tiling_enabled; /* set by drm, read by 2d + 3d clients */} drm_radeon_sarea_t;/* WARNING: If you change any of these defines, make sure to change the * defines in the Xserver file (xf86drmRadeon.h) * * KW: actually it's illegal to change any of this (backwards compatibility). *//* Radeon specific ioctls * The device specific ioctl range is 0x40 to 0x79. */#define DRM_RADEON_CP_INIT 0x00#define DRM_RADEON_CP_START 0x01#define DRM_RADEON_CP_STOP 0x02#define DRM_RADEON_CP_RESET 0x03#define DRM_RADEON_CP_IDLE 0x04#define DRM_RADEON_RESET 0x05#define DRM_RADEON_FULLSCREEN 0x06#define DRM_RADEON_SWAP 0x07#define DRM_RADEON_CLEAR 0x08#define DRM_RADEON_VERTEX 0x09#define DRM_RADEON_INDICES 0x0A#define DRM_RADEON_NOT_USED#define DRM_RADEON_STIPPLE 0x0C#define DRM_RADEON_INDIRECT 0x0D#define DRM_RADEON_TEXTURE 0x0E#define DRM_RADEON_VERTEX2 0x0F#define DRM_RADEON_CMDBUF 0x10#define DRM_RADEON_GETPARAM 0x11#define DRM_RADEON_FLIP 0x12#define DRM_RADEON_ALLOC 0x13#define DRM_RADEON_FREE 0x14#define DRM_RADEON_INIT_HEAP 0x15#define DRM_RADEON_IRQ_EMIT 0x16#define DRM_RADEON_IRQ_WAIT 0x17#define DRM_RADEON_CP_RESUME 0x18#define DRM_RADEON_SETPARAM 0x19#define DRM_RADEON_SURF_ALLOC 0x1a#define DRM_RADEON_SURF_FREE 0x1b#define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_INIT, drm_radeon_init_t)#define DRM_IOCTL_RADEON_CP_START DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_START)#define DRM_IOCTL_RADEON_CP_STOP DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_STOP, drm_radeon_cp_stop_t)#define DRM_IOCTL_RADEON_CP_RESET DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_RESET)#define DRM_IOCTL_RADEON_CP_IDLE DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_IDLE)#define DRM_IOCTL_RADEON_RESET DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_RESET)#define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_FULLSCREEN, drm_radeon_fullscreen_t)#define DRM_IOCTL_RADEON_SWAP DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_SWAP)#define DRM_IOCTL_RADEON_CLEAR DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CLEAR, drm_radeon_clear_t)#define DRM_IOCTL_RADEON_VERTEX DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_VERTEX, drm_radeon_vertex_t)#define DRM_IOCTL_RADEON_INDICES DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_INDICES, drm_radeon_indices_t)#define DRM_IOCTL_RADEON_STIPPLE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_STIPPLE, drm_radeon_stipple_t)#define DRM_IOCTL_RADEON_INDIRECT DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_INDIRECT, drm_radeon_indirect_t)#define DRM_IOCTL_RADEON_TEXTURE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_TEXTURE, drm_radeon_texture_t)#define DRM_IOCTL_RADEON_VERTEX2 DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_VERTEX2, drm_radeon_vertex2_t)#define DRM_IOCTL_RADEON_CMDBUF DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CMDBUF, drm_radeon_cmd_buffer_t)#define DRM_IOCTL_RADEON_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GETPARAM, drm_radeon_getparam_t)#define DRM_IOCTL_RADEON_FLIP DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_FLIP)#define DRM_IOCTL_RADEON_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_ALLOC, drm_radeon_mem_alloc_t)#define DRM_IOCTL_RADEON_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_FREE, drm_radeon_mem_free_t)#define DRM_IOCTL_RADEON_INIT_HEAP DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_INIT_HEAP, drm_radeon_mem_init_heap_t)#define DRM_IOCTL_RADEON_IRQ_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_IRQ_EMIT, drm_radeon_irq_emit_t)#define DRM_IOCTL_RADEON_IRQ_WAIT DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_IRQ_WAIT, drm_radeon_irq_wait_t)#define DRM_IOCTL_RADEON_CP_RESUME DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_RESUME)#define DRM_IOCTL_RADEON_SETPARAM DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SETPARAM, drm_radeon_setparam_t)#define DRM_IOCTL_RADEON_SURF_ALLOC DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_ALLOC, drm_radeon_surface_alloc_t)#define DRM_IOCTL_RADEON_SURF_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_FREE, drm_radeon_surface_free_t)typedef struct drm_radeon_init { enum { RADEON_INIT_CP = 0x01, RADEON_CLEANUP_CP = 0x02, RADEON_INIT_R200_CP = 0x03, RADEON_INIT_R300_CP = 0x04 } func; unsigned long sarea_priv_offset; int is_pci; int cp_mode; int gart_size; int ring_size; int usec_timeout; unsigned int fb_bpp; unsigned int front_offset, front_pitch; unsigned int back_offset, back_pitch; unsigned int depth_bpp; unsigned int depth_offset, depth_pitch; unsigned long fb_offset; unsigned long mmio_offset; unsigned long ring_offset; unsigned long ring_rptr_offset; unsigned long buffers_offset; unsigned long gart_textures_offset;} drm_radeon_init_t;typedef struct drm_radeon_cp_stop { int flush; int idle;} drm_radeon_cp_stop_t;typedef struct drm_radeon_fullscreen { enum { RADEON_INIT_FULLSCREEN = 0x01, RADEON_CLEANUP_FULLSCREEN = 0x02 } func;} drm_radeon_fullscreen_t;#define CLEAR_X1 0#define CLEAR_Y1 1#define CLEAR_X2 2#define CLEAR_Y2 3#define CLEAR_DEPTH 4typedef union drm_radeon_clear_rect { float f[5]; unsigned int ui[5];} drm_radeon_clear_rect_t;typedef struct drm_radeon_clear { unsigned int flags; unsigned int clear_color; unsigned int clear_depth; unsigned int color_mask; unsigned int depth_mask; /* misnamed field: should be stencil */ drm_radeon_clear_rect_t __user *depth_boxes;} drm_radeon_clear_t;typedef struct drm_radeon_vertex { int prim; int idx; /* Index of vertex buffer */ int count; /* Number of vertices in buffer */ int discard; /* Client finished with buffer? */} drm_radeon_vertex_t;typedef struct drm_radeon_indices { int prim; int idx; int start; int end; int discard; /* Client finished with buffer? */} drm_radeon_indices_t;/* v1.2 - obsoletes drm_radeon_vertex and drm_radeon_indices * - allows multiple primitives and state changes in a single ioctl * - supports driver change to emit native primitives */typedef struct drm_radeon_vertex2 { int idx; /* Index of vertex buffer */ int discard; /* Client finished with buffer? */ int nr_states; drm_radeon_state_t __user *state; int nr_prims; drm_radeon_prim_t __user *prim;} drm_radeon_vertex2_t;/* v1.3 - obsoletes drm_radeon_vertex2 * - allows arbitarily large cliprect list * - allows updating of tcl packet, vector and scalar state * - allows memory-efficient description of state updates * - allows state to be emitted without a primitive * (for clears, ctx switches) * - allows more than one dma buffer to be referenced per ioctl * - supports tcl driver * - may be extended in future versions with new cmd types, packets */typedef struct drm_radeon_cmd_buffer { int bufsz; char __user *buf; int nbox; drm_clip_rect_t __user *boxes;} drm_radeon_cmd_buffer_t;typedef struct drm_radeon_tex_image { unsigned int x, y; /* Blit coordinates */ unsigned int width, height; const void __user *data;} drm_radeon_tex_image_t;typedef struct drm_radeon_texture { unsigned int offset; int pitch; int format; int width; /* Texture image coordinates */ int height; drm_radeon_tex_image_t __user *image;} drm_radeon_texture_t;typedef struct drm_radeon_stipple { unsigned int __user *mask;} drm_radeon_stipple_t;typedef struct drm_radeon_indirect { int idx; int start; int end; int discard;} drm_radeon_indirect_t;/* 1.3: An ioctl to get parameters that aren't available to the 3d * client any other way. */#define RADEON_PARAM_GART_BUFFER_OFFSET 1 /* card offset of 1st GART buffer */#define RADEON_PARAM_LAST_FRAME 2#define RADEON_PARAM_LAST_DISPATCH 3#define RADEON_PARAM_LAST_CLEAR 4/* Added with DRM version 1.6. */#define RADEON_PARAM_IRQ_NR 5#define RADEON_PARAM_GART_BASE 6 /* card offset of GART base *//* Added with DRM version 1.8. */#define RADEON_PARAM_REGISTER_HANDLE 7 /* for drmMap() */#define RADEON_PARAM_STATUS_HANDLE 8#define RADEON_PARAM_SAREA_HANDLE 9#define RADEON_PARAM_GART_TEX_HANDLE 10#define RADEON_PARAM_SCRATCH_OFFSET 11typedef struct drm_radeon_getparam { int param; void __user *value;} drm_radeon_getparam_t;/* 1.6: Set up a memory manager for regions of shared memory: */#define RADEON_MEM_REGION_GART 1#define RADEON_MEM_REGION_FB 2typedef struct drm_radeon_mem_alloc { int region; int alignment; int size; int __user *region_offset; /* offset from start of fb or GART */} drm_radeon_mem_alloc_t;typedef struct drm_radeon_mem_free { int region; int region_offset;} drm_radeon_mem_free_t;typedef struct drm_radeon_mem_init_heap { int region; int size; int start;} drm_radeon_mem_init_heap_t;/* 1.6: Userspace can request & wait on irq's: */typedef struct drm_radeon_irq_emit { int __user *irq_seq;} drm_radeon_irq_emit_t;typedef struct drm_radeon_irq_wait { int irq_seq;} drm_radeon_irq_wait_t;/* 1.10: Clients tell the DRM where they think the framebuffer is located in * the card's address space, via a new generic ioctl to set parameters */typedef struct drm_radeon_setparam { unsigned int param; int64_t value;} drm_radeon_setparam_t;#define RADEON_SETPARAM_FB_LOCATION 1 /* determined framebuffer location */#define RADEON_SETPARAM_SWITCH_TILING 2 /* enable/disable color tiling */#define RADEON_SETPARAM_PCIGART_LOCATION 3 /* PCI Gart Location *//* 1.14: Clients can allocate/free a surface */typedef struct drm_radeon_surface_alloc { unsigned int address; unsigned int size; unsigned int flags;} drm_radeon_surface_alloc_t;typedef struct drm_radeon_surface_free { unsigned int address;} drm_radeon_surface_free_t;#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -