⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 radeon_drv.h

📁 linux-2.6.15.6
💻 H
📖 第 1 页 / 共 3 页
字号:
/* radeon_drv.h -- Private header for radeon driver -*- linux-c -*- * * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. * Copyright 2000 VA Linux Systems, Inc., Fremont, California. * All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice (including the next * paragraph) shall be included in all copies or substantial portions of the * Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * * Authors: *    Kevin E. Martin <martin@valinux.com> *    Gareth Hughes <gareth@valinux.com> */#ifndef __RADEON_DRV_H__#define __RADEON_DRV_H__/* General customization: */#define DRIVER_AUTHOR		"Gareth Hughes, Keith Whitwell, others."#define DRIVER_NAME		"radeon"#define DRIVER_DESC		"ATI Radeon"#define DRIVER_DATE		"20050911"/* Interface history: * * 1.1 - ?? * 1.2 - Add vertex2 ioctl (keith) *     - Add stencil capability to clear ioctl (gareth, keith) *     - Increase MAX_TEXTURE_LEVELS (brian) * 1.3 - Add cmdbuf ioctl (keith) *     - Add support for new radeon packets (keith) *     - Add getparam ioctl (keith) *     - Add flip-buffers ioctl, deprecate fullscreen foo (keith). * 1.4 - Add scratch registers to get_param ioctl. * 1.5 - Add r200 packets to cmdbuf ioctl *     - Add r200 function to init ioctl *     - Add 'scalar2' instruction to cmdbuf * 1.6 - Add static GART memory manager *       Add irq handler (won't be turned on unless X server knows to) *       Add irq ioctls and irq_active getparam. *       Add wait command for cmdbuf ioctl *       Add GART offset query for getparam * 1.7 - Add support for cube map registers: R200_PP_CUBIC_FACES_[0..5] *       and R200_PP_CUBIC_OFFSET_F1_[0..5]. *       Added packets R200_EMIT_PP_CUBIC_FACES_[0..5] and *       R200_EMIT_PP_CUBIC_OFFSETS_[0..5].  (brian) * 1.8 - Remove need to call cleanup ioctls on last client exit (keith) *       Add 'GET' queries for starting additional clients on different VT's. * 1.9 - Add DRM_IOCTL_RADEON_CP_RESUME ioctl. *       Add texture rectangle support for r100. * 1.10- Add SETPARAM ioctl; first parameter to set is FB_LOCATION, which *       clients use to tell the DRM where they think the framebuffer is *       located in the card's address space * 1.11- Add packet R200_EMIT_RB3D_BLENDCOLOR to support GL_EXT_blend_color *       and GL_EXT_blend_[func|equation]_separate on r200 * 1.12- Add R300 CP microcode support - this just loads the CP on r300 *       (No 3D support yet - just microcode loading) * 1.13- Add packet R200_EMIT_TCL_POINT_SPRITE_CNTL for ARB_point_parameters *     - Add hyperz support, add hyperz flags to clear ioctl. * 1.14- Add support for color tiling *     - Add R100/R200 surface allocation/free support * 1.15- Add support for texture micro tiling *     - Add support for r100 cube maps * 1.16- Add R200_EMIT_PP_TRI_PERF_CNTL packet to support brilinear *       texture filtering on r200 * 1.17- Add initial support for R300 (3D). * 1.18- Add support for GL_ATI_fragment_shader, new packets *       R200_EMIT_PP_AFS_0/1, R200_EMIT_PP_TXCTLALL_0-5 (replaces *       R200_EMIT_PP_TXFILTER_0-5, 2 more regs) and R200_EMIT_ATF_TFACTOR *       (replaces R200_EMIT_TFACTOR_0 (8 consts instead of 6) * 1.19- Add support for gart table in FB memory and PCIE r300 */#define DRIVER_MAJOR		1#define DRIVER_MINOR		19#define DRIVER_PATCHLEVEL	0#define GET_RING_HEAD(dev_priv)		DRM_READ32(  (dev_priv)->ring_rptr, 0 )#define SET_RING_HEAD(dev_priv,val)	DRM_WRITE32( (dev_priv)->ring_rptr, 0, (val) )/* * Radeon chip families */enum radeon_family {	CHIP_R100,	CHIP_RS100,	CHIP_RV100,	CHIP_R200,	CHIP_RV200,	CHIP_RS200,	CHIP_R250,	CHIP_RS250,	CHIP_RV250,	CHIP_RV280,	CHIP_R300,	CHIP_RS300,	CHIP_R350,	CHIP_RV350,	CHIP_R420,	CHIP_LAST,};enum radeon_cp_microcode_version {	UCODE_R100,	UCODE_R200,	UCODE_R300,};/* * Chip flags */enum radeon_chip_flags {	CHIP_FAMILY_MASK = 0x0000ffffUL,	CHIP_FLAGS_MASK = 0xffff0000UL,	CHIP_IS_MOBILITY = 0x00010000UL,	CHIP_IS_IGP = 0x00020000UL,	CHIP_SINGLE_CRTC = 0x00040000UL,	CHIP_IS_AGP = 0x00080000UL,	CHIP_HAS_HIERZ = 0x00100000UL,	CHIP_IS_PCIE = 0x00200000UL,};typedef struct drm_radeon_freelist {	unsigned int age;	drm_buf_t *buf;	struct drm_radeon_freelist *next;	struct drm_radeon_freelist *prev;} drm_radeon_freelist_t;typedef struct drm_radeon_ring_buffer {	u32 *start;	u32 *end;	int size;	int size_l2qw;	u32 tail;	u32 tail_mask;	int space;	int high_mark;} drm_radeon_ring_buffer_t;typedef struct drm_radeon_depth_clear_t {	u32 rb3d_cntl;	u32 rb3d_zstencilcntl;	u32 se_cntl;} drm_radeon_depth_clear_t;struct drm_radeon_driver_file_fields {	int64_t radeon_fb_delta;};struct mem_block {	struct mem_block *next;	struct mem_block *prev;	int start;	int size;	DRMFILE filp;		/* 0: free, -1: heap, other: real files */};struct radeon_surface {	int refcount;	u32 lower;	u32 upper;	u32 flags;};struct radeon_virt_surface {	int surface_index;	u32 lower;	u32 upper;	u32 flags;	DRMFILE filp;};typedef struct drm_radeon_private {	drm_radeon_ring_buffer_t ring;	drm_radeon_sarea_t *sarea_priv;	u32 fb_location;	int gart_size;	u32 gart_vm_start;	unsigned long gart_buffers_offset;	int cp_mode;	int cp_running;	drm_radeon_freelist_t *head;	drm_radeon_freelist_t *tail;	int last_buf;	volatile u32 *scratch;	int writeback_works;	int usec_timeout;	int microcode_version;	struct {		u32 boxes;		int freelist_timeouts;		int freelist_loops;		int requested_bufs;		int last_frame_reads;		int last_clear_reads;		int clears;		int texture_uploads;	} stats;	int do_boxes;	int page_flipping;	int current_page;	u32 color_fmt;	unsigned int front_offset;	unsigned int front_pitch;	unsigned int back_offset;	unsigned int back_pitch;	u32 depth_fmt;	unsigned int depth_offset;	unsigned int depth_pitch;	u32 front_pitch_offset;	u32 back_pitch_offset;	u32 depth_pitch_offset;	drm_radeon_depth_clear_t depth_clear;	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_local_map_t *sarea;	drm_local_map_t *mmio;	drm_local_map_t *cp_ring;	drm_local_map_t *ring_rptr;	drm_local_map_t *gart_textures;	struct mem_block *gart_heap;	struct mem_block *fb_heap;	/* SW interrupt */	wait_queue_head_t swi_queue;	atomic_t swi_emitted;	struct radeon_surface surfaces[RADEON_MAX_SURFACES];	struct radeon_virt_surface virt_surfaces[2 * RADEON_MAX_SURFACES];	unsigned long pcigart_offset;	drm_ati_pcigart_info gart_info;	/* starting from here on, data is preserved accross an open */	uint32_t flags;		/* see radeon_chip_flags */	int is_pci;} drm_radeon_private_t;typedef struct drm_radeon_buf_priv {	u32 age;} drm_radeon_buf_priv_t;typedef struct drm_radeon_kcmd_buffer {	int bufsz;	char *buf;	int nbox;	drm_clip_rect_t __user *boxes;} drm_radeon_kcmd_buffer_t;extern int radeon_no_wb;extern drm_ioctl_desc_t radeon_ioctls[];extern int radeon_max_ioctl;				/* radeon_cp.c */extern int radeon_cp_init(DRM_IOCTL_ARGS);extern int radeon_cp_start(DRM_IOCTL_ARGS);extern int radeon_cp_stop(DRM_IOCTL_ARGS);extern int radeon_cp_reset(DRM_IOCTL_ARGS);extern int radeon_cp_idle(DRM_IOCTL_ARGS);extern int radeon_cp_resume(DRM_IOCTL_ARGS);extern int radeon_engine_reset(DRM_IOCTL_ARGS);extern int radeon_fullscreen(DRM_IOCTL_ARGS);extern int radeon_cp_buffers(DRM_IOCTL_ARGS);extern void radeon_freelist_reset(drm_device_t * dev);extern drm_buf_t *radeon_freelist_get(drm_device_t * dev);extern int radeon_wait_ring(drm_radeon_private_t * dev_priv, int n);extern int radeon_do_cp_idle(drm_radeon_private_t * dev_priv);extern int radeon_driver_preinit(struct drm_device *dev, unsigned long flags);extern int radeon_presetup(struct drm_device *dev);extern int radeon_driver_postcleanup(struct drm_device *dev);extern int radeon_mem_alloc(DRM_IOCTL_ARGS);extern int radeon_mem_free(DRM_IOCTL_ARGS);extern int radeon_mem_init_heap(DRM_IOCTL_ARGS);extern void radeon_mem_takedown(struct mem_block **heap);extern void radeon_mem_release(DRMFILE filp, struct mem_block *heap);				/* radeon_irq.c */extern int radeon_irq_emit(DRM_IOCTL_ARGS);extern int radeon_irq_wait(DRM_IOCTL_ARGS);extern void radeon_do_release(drm_device_t * dev);extern int radeon_driver_vblank_wait(drm_device_t * dev,				     unsigned int *sequence);extern irqreturn_t radeon_driver_irq_handler(DRM_IRQ_ARGS);extern void radeon_driver_irq_preinstall(drm_device_t * dev);extern void radeon_driver_irq_postinstall(drm_device_t * dev);extern void radeon_driver_irq_uninstall(drm_device_t * dev);extern void radeon_driver_prerelease(drm_device_t * dev, DRMFILE filp);extern void radeon_driver_pretakedown(drm_device_t * dev);extern int radeon_driver_open_helper(drm_device_t * dev,				     drm_file_t * filp_priv);extern void radeon_driver_free_filp_priv(drm_device_t * dev,					 drm_file_t * filp_priv);extern int radeon_preinit(struct drm_device *dev, unsigned long flags);extern int radeon_postinit(struct drm_device *dev, unsigned long flags);extern int radeon_postcleanup(struct drm_device *dev);extern long radeon_compat_ioctl(struct file *filp, unsigned int cmd,				unsigned long arg);/* r300_cmdbuf.c */extern void r300_init_reg_flags(void);extern int r300_do_cp_cmdbuf(drm_device_t * dev, DRMFILE filp,			     drm_file_t * filp_priv,			     drm_radeon_kcmd_buffer_t * cmdbuf);/* Flags for stats.boxes */#define RADEON_BOX_DMA_IDLE      0x1#define RADEON_BOX_RING_FULL     0x2#define RADEON_BOX_FLIP          0x4#define RADEON_BOX_WAIT_IDLE     0x8#define RADEON_BOX_TEXTURE_LOAD  0x10/* Register definitions, register access macros and drmAddMap constants * for Radeon kernel driver. */#define RADEON_AGP_COMMAND		0x0f60#define RADEON_AUX_SCISSOR_CNTL		0x26f0#	define RADEON_EXCLUSIVE_SCISSOR_0	(1 << 24)#	define RADEON_EXCLUSIVE_SCISSOR_1	(1 << 25)#	define RADEON_EXCLUSIVE_SCISSOR_2	(1 << 26)#	define RADEON_SCISSOR_0_ENABLE		(1 << 28)#	define RADEON_SCISSOR_1_ENABLE		(1 << 29)#	define RADEON_SCISSOR_2_ENABLE		(1 << 30)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -