📄 radeon_drm.h
字号:
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 { unsigned char next, prev; unsigned char in_use; int age;} drm_radeon_tex_region_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_radeon_tex_region_t tex_list[RADEON_NR_TEX_HEAPS][RADEON_NR_TEX_REGIONS+1]; 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 */} 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_IOCTL_RADEON_CP_INIT DRM_IOW( 0x40, drm_radeon_init_t)#define DRM_IOCTL_RADEON_CP_START DRM_IO( 0x41)#define DRM_IOCTL_RADEON_CP_STOP DRM_IOW( 0x42, drm_radeon_cp_stop_t)#define DRM_IOCTL_RADEON_CP_RESET DRM_IO( 0x43)#define DRM_IOCTL_RADEON_CP_IDLE DRM_IO( 0x44)#define DRM_IOCTL_RADEON_RESET DRM_IO( 0x45)#define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW( 0x46, drm_radeon_fullscreen_t)#define DRM_IOCTL_RADEON_SWAP DRM_IO( 0x47)#define DRM_IOCTL_RADEON_CLEAR DRM_IOW( 0x48, drm_radeon_clear_t)#define DRM_IOCTL_RADEON_VERTEX DRM_IOW( 0x49, drm_radeon_vertex_t)#define DRM_IOCTL_RADEON_INDICES DRM_IOW( 0x4a, drm_radeon_indices_t)#define DRM_IOCTL_RADEON_STIPPLE DRM_IOW( 0x4c, drm_radeon_stipple_t)#define DRM_IOCTL_RADEON_INDIRECT DRM_IOWR(0x4d, drm_radeon_indirect_t)#define DRM_IOCTL_RADEON_TEXTURE DRM_IOWR(0x4e, drm_radeon_texture_t)#define DRM_IOCTL_RADEON_VERTEX2 DRM_IOW( 0x4f, drm_radeon_vertex_t)#define DRM_IOCTL_RADEON_CMDBUF DRM_IOW( 0x50, drm_radeon_cmd_buffer_t)#define DRM_IOCTL_RADEON_GETPARAM DRM_IOWR(0x51, drm_radeon_getparam_t)#define DRM_IOCTL_RADEON_FLIP DRM_IO( 0x52)#define DRM_IOCTL_RADEON_ALLOC DRM_IOWR( 0x53, drm_radeon_mem_alloc_t)#define DRM_IOCTL_RADEON_FREE DRM_IOW( 0x54, drm_radeon_mem_free_t)#define DRM_IOCTL_RADEON_INIT_HEAP DRM_IOW( 0x55, drm_radeon_mem_init_heap_t)#define DRM_IOCTL_RADEON_IRQ_EMIT DRM_IOWR( 0x56, drm_radeon_irq_emit_t)#define DRM_IOCTL_RADEON_IRQ_WAIT DRM_IOW( 0x57, drm_radeon_irq_wait_t)typedef struct drm_radeon_init { enum { RADEON_INIT_CP = 0x01, RADEON_CLEANUP_CP = 0x02, RADEON_INIT_R200_CP = 0x03, } func; unsigned long sarea_priv_offset; int is_pci; int cp_mode; int agp_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 agp_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 *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 *state; int nr_prims; drm_radeon_prim_t *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 *buf; int nbox; drm_clip_rect_t *boxes;} drm_radeon_cmd_buffer_t;typedef struct drm_radeon_tex_image { unsigned int x, y; /* Blit coordinates */ unsigned int width, height; const void *data;} drm_radeon_tex_image_t;typedef struct drm_radeon_texture { int offset; int pitch; int format; int width; /* Texture image coordinates */ int height; drm_radeon_tex_image_t *image;} drm_radeon_texture_t;typedef struct drm_radeon_stipple { unsigned int *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_AGP_BUFFER_OFFSET 1 /* card offset of 1st agp buffer */#define RADEON_PARAM_LAST_FRAME 2#define RADEON_PARAM_LAST_DISPATCH 3#define RADEON_PARAM_LAST_CLEAR 4#define RADEON_PARAM_IRQ_NR 5#define RADEON_PARAM_AGP_BASE 6 /* card offset of agp base */typedef struct drm_radeon_getparam { int param; int *value;} drm_radeon_getparam_t;/* 1.6: Set up a memory manager for regions of shared memory: */#define RADEON_MEM_REGION_AGP 1#define RADEON_MEM_REGION_FB 2typedef struct drm_radeon_mem_alloc { int region; int alignment; int size; int *region_offset; /* offset from start of fb or agp */} 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 *irq_seq;} drm_radeon_irq_emit_t;typedef struct drm_radeon_irq_wait { int irq_seq;} drm_radeon_irq_wait_t;#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -