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

📄 radeon_drv.h

📁 ati driver
💻 H
📖 第 1 页 / 共 3 页
字号:
#define R200_PP_TXOFFSET_0                0x2d00#define R200_PP_CUBIC_FACES_0             0x2c18#define R200_PP_CUBIC_FACES_1             0x2c38#define R200_PP_CUBIC_FACES_2             0x2c58#define R200_PP_CUBIC_FACES_3             0x2c78#define R200_PP_CUBIC_FACES_4             0x2c98#define R200_PP_CUBIC_FACES_5             0x2cb8#define R200_PP_CUBIC_OFFSET_F1_0         0x2d04#define R200_PP_CUBIC_OFFSET_F2_0         0x2d08#define R200_PP_CUBIC_OFFSET_F3_0         0x2d0c#define R200_PP_CUBIC_OFFSET_F4_0         0x2d10#define R200_PP_CUBIC_OFFSET_F5_0         0x2d14#define R200_PP_CUBIC_OFFSET_F1_1         0x2d1c#define R200_PP_CUBIC_OFFSET_F2_1         0x2d20#define R200_PP_CUBIC_OFFSET_F3_1         0x2d24#define R200_PP_CUBIC_OFFSET_F4_1         0x2d28#define R200_PP_CUBIC_OFFSET_F5_1         0x2d2c#define R200_PP_CUBIC_OFFSET_F1_2         0x2d34#define R200_PP_CUBIC_OFFSET_F2_2         0x2d38#define R200_PP_CUBIC_OFFSET_F3_2         0x2d3c#define R200_PP_CUBIC_OFFSET_F4_2         0x2d40#define R200_PP_CUBIC_OFFSET_F5_2         0x2d44#define R200_PP_CUBIC_OFFSET_F1_3         0x2d4c#define R200_PP_CUBIC_OFFSET_F2_3         0x2d50#define R200_PP_CUBIC_OFFSET_F3_3         0x2d54#define R200_PP_CUBIC_OFFSET_F4_3         0x2d58#define R200_PP_CUBIC_OFFSET_F5_3         0x2d5c#define R200_PP_CUBIC_OFFSET_F1_4         0x2d64#define R200_PP_CUBIC_OFFSET_F2_4         0x2d68#define R200_PP_CUBIC_OFFSET_F3_4         0x2d6c#define R200_PP_CUBIC_OFFSET_F4_4         0x2d70#define R200_PP_CUBIC_OFFSET_F5_4         0x2d74#define R200_PP_CUBIC_OFFSET_F1_5         0x2d7c#define R200_PP_CUBIC_OFFSET_F2_5         0x2d80#define R200_PP_CUBIC_OFFSET_F3_5         0x2d84#define R200_PP_CUBIC_OFFSET_F4_5         0x2d88#define R200_PP_CUBIC_OFFSET_F5_5         0x2d8c#define R200_RE_AUX_SCISSOR_CNTL          0x26f0#define R200_SE_VTE_CNTL                  0x20b0#define R200_SE_TCL_OUTPUT_VTX_COMP_SEL   0x2250#define R200_PP_TAM_DEBUG3                0x2d9c#define R200_PP_CNTL_X                    0x2cc4#define R200_SE_VAP_CNTL_STATUS           0x2140#define R200_RE_SCISSOR_TL_0              0x1cd8#define R200_RE_SCISSOR_TL_1              0x1ce0#define R200_RE_SCISSOR_TL_2              0x1ce8#define R200_RB3D_DEPTHXY_OFFSET          0x1d60 #define R200_RE_AUX_SCISSOR_CNTL          0x26f0#define R200_SE_VTX_STATE_CNTL            0x2180#define R200_RE_POINTSIZE                 0x2648#define R200_SE_TCL_INPUT_VTX_VECTOR_ADDR_0 0x2254#define SE_VAP_CNTL__TCL_ENA_MASK                          0x00000001#define SE_VAP_CNTL__FORCE_W_TO_ONE_MASK                   0x00010000#define SE_VAP_CNTL__VF_MAX_VTX_NUM__SHIFT                 0x00000012#define SE_VTE_CNTL__VTX_XY_FMT_MASK                       0x00000100#define SE_VTE_CNTL__VTX_Z_FMT_MASK                        0x00000200#define SE_VTX_FMT_0__VTX_Z0_PRESENT_MASK                  0x00000001#define SE_VTX_FMT_0__VTX_W0_PRESENT_MASK                  0x00000002#define SE_VTX_FMT_0__VTX_COLOR_0_FMT__SHIFT               0x0000000b#define R200_3D_DRAW_IMMD_2      0xC0003500#define R200_SE_VTX_FMT_1                 0x208c#define R200_RE_CNTL                      0x1c50 /* Constants */#define RADEON_MAX_USEC_TIMEOUT		100000	/* 100 ms */#define RADEON_LAST_FRAME_REG		RADEON_SCRATCH_REG0#define RADEON_LAST_DISPATCH_REG	RADEON_SCRATCH_REG1#define RADEON_LAST_CLEAR_REG		RADEON_SCRATCH_REG2#define RADEON_LAST_SWI_REG		RADEON_SCRATCH_REG3#define RADEON_LAST_DISPATCH		1#define RADEON_MAX_VB_AGE		0x7fffffff#define RADEON_MAX_VB_VERTS		(0xffff)#define RADEON_RING_HIGH_MARK		128#define RADEON_BASE(reg)	((unsigned long)(dev_priv->mmio->handle))#define RADEON_ADDR(reg)	(RADEON_BASE( reg ) + reg)#define RADEON_READ(reg)	DRM_READ32(  (volatile u32 *) RADEON_ADDR(reg) )#define RADEON_WRITE(reg,val)	DRM_WRITE32( (volatile u32 *) RADEON_ADDR(reg), (val) )#define RADEON_READ8(reg)	DRM_READ8(  (volatile u8 *) RADEON_ADDR(reg) )#define RADEON_WRITE8(reg,val)	DRM_WRITE8( (volatile u8 *) RADEON_ADDR(reg), (val) )#define RADEON_WRITE_PLL( addr, val )					\do {									\	RADEON_WRITE8( RADEON_CLOCK_CNTL_INDEX,				\		       ((addr) & 0x1f) | RADEON_PLL_WR_EN );		\	RADEON_WRITE( RADEON_CLOCK_CNTL_DATA, (val) );			\} while (0)extern int RADEON_READ_PLL( drm_device_t *dev, int addr );#define CP_PACKET0( reg, n )						\	(RADEON_CP_PACKET0 | ((n) << 16) | ((reg) >> 2))#define CP_PACKET0_TABLE( reg, n )					\	(RADEON_CP_PACKET0 | RADEON_ONE_REG_WR | ((n) << 16) | ((reg) >> 2))#define CP_PACKET1( reg0, reg1 )					\	(RADEON_CP_PACKET1 | (((reg1) >> 2) << 15) | ((reg0) >> 2))#define CP_PACKET2()							\	(RADEON_CP_PACKET2)#define CP_PACKET3( pkt, n )						\	(RADEON_CP_PACKET3 | (pkt) | ((n) << 16))/* ================================================================ * Engine control helper macros */#define RADEON_WAIT_UNTIL_2D_IDLE() do {				\	OUT_RING( CP_PACKET0( RADEON_WAIT_UNTIL, 0 ) );			\	OUT_RING( (RADEON_WAIT_2D_IDLECLEAN |				\		   RADEON_WAIT_HOST_IDLECLEAN) );			\} while (0)#define RADEON_WAIT_UNTIL_3D_IDLE() do {				\	OUT_RING( CP_PACKET0( RADEON_WAIT_UNTIL, 0 ) );			\	OUT_RING( (RADEON_WAIT_3D_IDLECLEAN |				\		   RADEON_WAIT_HOST_IDLECLEAN) );			\} while (0)#define RADEON_WAIT_UNTIL_IDLE() do {					\	OUT_RING( CP_PACKET0( RADEON_WAIT_UNTIL, 0 ) );			\	OUT_RING( (RADEON_WAIT_2D_IDLECLEAN |				\		   RADEON_WAIT_3D_IDLECLEAN |				\		   RADEON_WAIT_HOST_IDLECLEAN) );			\} while (0)#define RADEON_WAIT_UNTIL_PAGE_FLIPPED() do {				\	OUT_RING( CP_PACKET0( RADEON_WAIT_UNTIL, 0 ) );			\	OUT_RING( RADEON_WAIT_CRTC_PFLIP );				\} while (0)#define RADEON_FLUSH_CACHE() do {					\	OUT_RING( CP_PACKET0( RADEON_RB2D_DSTCACHE_CTLSTAT, 0 ) );	\	OUT_RING( RADEON_RB2D_DC_FLUSH );				\} while (0)#define RADEON_PURGE_CACHE() do {					\	OUT_RING( CP_PACKET0( RADEON_RB2D_DSTCACHE_CTLSTAT, 0 ) );	\	OUT_RING( RADEON_RB2D_DC_FLUSH_ALL );				\} while (0)#define RADEON_FLUSH_ZCACHE() do {					\	OUT_RING( CP_PACKET0( RADEON_RB3D_ZCACHE_CTLSTAT, 0 ) );	\	OUT_RING( RADEON_RB3D_ZC_FLUSH );				\} while (0)#define RADEON_PURGE_ZCACHE() do {					\	OUT_RING( CP_PACKET0( RADEON_RB3D_ZCACHE_CTLSTAT, 0 ) );	\	OUT_RING( RADEON_RB3D_ZC_FLUSH_ALL );				\} while (0)/* ================================================================ * Misc helper macros */#define LOCK_TEST_WITH_RETURN( dev )					\do {									\	if ( !_DRM_LOCK_IS_HELD( dev->lock.hw_lock->lock ) ||		\	     dev->lock.pid != DRM_CURRENTPID ) {			\		DRM_ERROR( "%s called without lock held\n", __FUNCTION__ );	\		return DRM_ERR(EINVAL);				\	}								\} while (0)/* Perfbox functionality only.   */#define RING_SPACE_TEST_WITH_RETURN( dev_priv )				\do {									\	if (!(dev_priv->stats.boxes & RADEON_BOX_DMA_IDLE)) {		\		u32 head = GET_RING_HEAD(&dev_priv->ring);		\		if (head == dev_priv->ring.tail)			\			dev_priv->stats.boxes |= RADEON_BOX_DMA_IDLE;	\	}								\} while (0)#define VB_AGE_TEST_WITH_RETURN( dev_priv )				\do {									\	drm_radeon_sarea_t *sarea_priv = dev_priv->sarea_priv;		\	if ( sarea_priv->last_dispatch >= RADEON_MAX_VB_AGE ) {		\		int __ret = radeon_do_cp_idle( dev_priv );		\		if ( __ret ) return __ret;				\		sarea_priv->last_dispatch = 0;				\		radeon_freelist_reset( dev );				\	}								\} while (0)#define RADEON_DISPATCH_AGE( age ) do {					\	OUT_RING( CP_PACKET0( RADEON_LAST_DISPATCH_REG, 0 ) );		\	OUT_RING( age );						\} while (0)#define RADEON_FRAME_AGE( age ) do {					\	OUT_RING( CP_PACKET0( RADEON_LAST_FRAME_REG, 0 ) );		\	OUT_RING( age );						\} while (0)#define RADEON_CLEAR_AGE( age ) do {					\	OUT_RING( CP_PACKET0( RADEON_LAST_CLEAR_REG, 0 ) );		\	OUT_RING( age );						\} while (0)/* ================================================================ * Ring control */#if defined(__powerpc__)#define radeon_flush_write_combine()	(void) GET_RING_HEAD( &dev_priv->ring )#else#define radeon_flush_write_combine()	DRM_WRITEMEMORYBARRIER()#endif#define RADEON_VERBOSE	0#define RING_LOCALS	int write, _nr; unsigned int mask; u32 *ring;#define BEGIN_RING( n ) do {						\	if ( RADEON_VERBOSE ) {						\		DRM_INFO( "BEGIN_RING( %d ) in %s\n",			\			   n, __FUNCTION__ );				\	}								\	if ( dev_priv->ring.space <= (n) * sizeof(u32) ) {		\                COMMIT_RING();						\		radeon_wait_ring( dev_priv, (n) * sizeof(u32) );	\	}								\	_nr = n; dev_priv->ring.space -= (n) * sizeof(u32);		\	ring = dev_priv->ring.start;					\	write = dev_priv->ring.tail;					\	mask = dev_priv->ring.tail_mask;				\} while (0)#define ADVANCE_RING() do {						\	if ( RADEON_VERBOSE ) {						\		DRM_INFO( "ADVANCE_RING() wr=0x%06x tail=0x%06x\n",	\			  write, dev_priv->ring.tail );			\	}								\	if (((dev_priv->ring.tail + _nr) & mask) != write) {		\		DRM_ERROR( 						\			"ADVANCE_RING(): mismatch: nr: %x write: %x line: %d\n",	\			((dev_priv->ring.tail + _nr) & mask),		\			write, __LINE__);						\	} else								\		dev_priv->ring.tail = write;				\} while (0)#define COMMIT_RING() do {					    \	RADEON_WRITE( RADEON_CP_RB_WPTR, dev_priv->ring.tail );		    \} while (0)#define OUT_RING( x ) do {						\	if ( RADEON_VERBOSE ) {						\		DRM_INFO( "   OUT_RING( 0x%08x ) at 0x%x\n",		\			   (unsigned int)(x), write );			\	}								\	ring[write++] = (x);						\	write &= mask;							\} while (0)#define OUT_RING_REG( reg, val ) do {					\	OUT_RING( CP_PACKET0( reg, 0 ) );				\	OUT_RING( val );						\} while (0)#define OUT_RING_USER_TABLE( tab, sz ) do {			\	int _size = (sz);					\	int *_tab = (tab);					\								\	if (write + _size > mask) {				\		int i = (mask+1) - write;			\		if (DRM_COPY_FROM_USER_UNCHECKED( (int *)(ring+write),	\				      _tab, i*4 ))		\			return DRM_ERR(EFAULT);		\		write = 0;					\		_size -= i;					\		_tab += i;					\	}							\								\	if (_size && DRM_COPY_FROM_USER_UNCHECKED( (int *)(ring+write),	\			               _tab, _size*4 ))		\		return DRM_ERR(EFAULT);			\								\	write += _size;						\	write &= mask;						\} while (0)#endif /* __RADEON_DRV_H__ */

⌨️ 快捷键说明

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