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

📄 radeon.h

📁 x.org上有关ati系列显卡最新驱动
💻 H
📖 第 1 页 / 共 3 页
字号:
#ifdef USE_EXA    XF86ModReqInfo    exaReq;#endif#ifdef USE_XAA    XF86ModReqInfo    xaaReq;#endif#endif    /* X itself has the 3D context */    Bool              XInited3D;    /* merged fb stuff, also covers clone modes */    Bool		MergedFB;    RADEONScrn2Rel	CRT2Position;    char *		CRT2HSync;    char *		CRT2VRefresh;    char *		MetaModes;    ScrnInfoPtr		CRT2pScrn;    DisplayModePtr	CRT1Modes;    DisplayModePtr	CRT1CurrentMode;    int			CRT1frameX0;    int			CRT1frameY0;    int			CRT1frameX1;    int			CRT1frameY1;    RADEONMonitorType   MergeType;    RADEONDDCType       MergeDDCType;    void        	(*PointerMoved)(int index, int x, int y);    /* pseudo xinerama support for mergedfb */    int			maxCRT1_X1, maxCRT1_X2, maxCRT1_Y1, maxCRT1_Y2;    int			maxCRT2_X1, maxCRT2_X2, maxCRT2_Y1, maxCRT2_Y2;    int			maxClone_X1, maxClone_X2, maxClone_Y1, maxClone_Y2;    Bool		UseRADEONXinerama;    Bool		CRT2IsScrn0;    ExtensionEntry 	*XineramaExtEntry;    int			RADEONXineramaVX, RADEONXineramaVY;    Bool		AtLeastOneNonClone;    int			MergedFBXDPI, MergedFBYDPI;    Bool		NoVirtual;    int                 CRT1XOffs, CRT1YOffs, CRT2XOffs, CRT2YOffs;    int                 MBXNR1XMAX, MBXNR1YMAX, MBXNR2XMAX, MBXNR2YMAX;    Bool                NonRect, HaveNonRect, HaveOffsRegions, MouseRestrictions;    region              NonRectDead, OffDead1, OffDead2;    int			constantDPI; /* -1 = auto, 0 = off, 1 = on */    int			RADEONDPIVX, RADEONDPIVY;    RADEONScrn2Rel	MergedDPISRel;    int			RADEONMergedDPIVX, RADEONMergedDPIVY, RADEONMergedDPIRot;    /* special handlings for DELL triple-head server */    Bool		IsDellServer;     /* enable bios hotkey output switching */    Bool		BiosHotkeys;    Bool               VGAAccess;    int                MaxSurfaceWidth;    int                MaxLines;} RADEONInfoRec, *RADEONInfoPtr;#define RADEONWaitForFifo(pScrn, entries)				\do {									\    if (info->fifo_slots < entries)					\	RADEONWaitForFifoFunction(pScrn, entries);			\    info->fifo_slots -= entries;					\} while (0)extern RADEONEntPtr RADEONEntPriv(ScrnInfoPtr pScrn);extern void        RADEONWaitForFifoFunction(ScrnInfoPtr pScrn, int entries);extern void        RADEONWaitForIdleMMIO(ScrnInfoPtr pScrn);#ifdef XF86DRIextern void        RADEONWaitForIdleCP(ScrnInfoPtr pScrn);#endifextern void        RADEONDoAdjustFrame(ScrnInfoPtr pScrn, int x, int y,				       int clone);extern void        RADEONEngineReset(ScrnInfoPtr pScrn);extern void        RADEONEngineFlush(ScrnInfoPtr pScrn);extern void        RADEONEngineRestore(ScrnInfoPtr pScrn);extern unsigned    RADEONINPLL(ScrnInfoPtr pScrn, int addr);extern void        RADEONOUTPLL(ScrnInfoPtr pScrn, int addr, CARD32 data);extern void        RADEONWaitForVerticalSync(ScrnInfoPtr pScrn);extern void        RADEONWaitForVerticalSync2(ScrnInfoPtr pScrn);extern void        RADEONChangeSurfaces(ScrnInfoPtr pScrn);extern Bool        RADEONAccelInit(ScreenPtr pScreen);#ifdef USE_EXAextern Bool        RADEONSetupMemEXA (ScreenPtr pScreen);extern Bool        RADEONDrawInitMMIO(ScreenPtr pScreen);#ifdef XF86DRIextern Bool        RADEONDrawInitCP(ScreenPtr pScreen);#endif#endif#ifdef USE_XAAextern void        RADEONAccelInitMMIO(ScreenPtr pScreen, XAAInfoRecPtr a);#endifextern void        RADEONEngineInit(ScrnInfoPtr pScrn);extern Bool        RADEONCursorInit(ScreenPtr pScreen);extern Bool        RADEONDGAInit(ScreenPtr pScreen);extern void        RADEONInit3DEngine(ScrnInfoPtr pScrn);extern int         RADEONMinBits(int val);extern void        RADEONInitVideo(ScreenPtr pScreen);extern void        RADEONResetVideo(ScrnInfoPtr pScrn);extern void        R300CGWorkaround(ScrnInfoPtr pScrn);extern void        RADEONPllErrataAfterIndex(RADEONInfoPtr info);extern void        RADEONPllErrataAfterData(RADEONInfoPtr info);extern Bool        RADEONGetBIOSInfo(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10);extern Bool        RADEONGetConnectorInfoFromBIOS (ScrnInfoPtr pScrn);extern Bool        RADEONGetClockInfoFromBIOS (ScrnInfoPtr pScrn);extern Bool        RADEONGetLVDSInfoFromBIOS (ScrnInfoPtr pScrn);extern Bool        RADEONGetTMDSInfoFromBIOS (ScrnInfoPtr pScrn);extern Bool        RADEONGetHardCodedEDIDFromBIOS (ScrnInfoPtr pScrn);#ifdef XF86DRI#ifdef USE_XAAextern void        RADEONAccelInitCP(ScreenPtr pScreen, XAAInfoRecPtr a);#endifextern Bool        RADEONDRIGetVersion(ScrnInfoPtr pScrn);extern Bool        RADEONDRIScreenInit(ScreenPtr pScreen);extern void        RADEONDRICloseScreen(ScreenPtr pScreen);extern void        RADEONDRIResume(ScreenPtr pScreen);extern Bool        RADEONDRIFinishScreenInit(ScreenPtr pScreen);extern void        RADEONDRIAllocatePCIGARTTable(ScreenPtr pScreen);extern void	   RADEONDRIInitPageFlip(ScreenPtr pScreen);extern void        RADEONDRIStop(ScreenPtr pScreen);extern drmBufPtr   RADEONCPGetBuffer(ScrnInfoPtr pScrn);extern void        RADEONCPFlushIndirect(ScrnInfoPtr pScrn, int discard);extern void        RADEONCPReleaseIndirect(ScrnInfoPtr pScrn);extern int         RADEONCPStop(ScrnInfoPtr pScrn,  RADEONInfoPtr info);extern void        RADEONHostDataParams(ScrnInfoPtr pScrn, CARD8 *dst,					CARD32 pitch, int cpp,					CARD32 *dstPitchOffset, int *x, int *y);extern CARD8*      RADEONHostDataBlit(ScrnInfoPtr pScrn, unsigned int cpp,				      unsigned int w, CARD32 dstPitchOff,				      CARD32 *bufPitch, int x, int *y,				      unsigned int *h, unsigned int *hpass);extern void        RADEONHostDataBlitCopyPass(ScrnInfoPtr pScrn,					      unsigned int bpp,					      CARD8 *dst, CARD8 *src,					      unsigned int hpass,					      unsigned int dstPitch,					      unsigned int srcPitch);extern void        RADEONCopySwap(CARD8 *dst, CARD8 *src, unsigned int size,				  int swap);#define RADEONCP_START(pScrn, info)					\do {									\    int _ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_START);	\    if (_ret) {								\	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,				\		   "%s: CP start %d\n", __FUNCTION__, _ret);		\    }									\    info->CPStarted = TRUE;                                             \} while (0)#define RADEONCP_STOP(pScrn, info)					\do {									\    int _ret;								\     if (info->CPStarted) {						\        _ret = RADEONCPStop(pScrn, info);				\        if (_ret) {							\	    xf86DrvMsg(pScrn->scrnIndex, X_ERROR,			\		   "%s: CP stop %d\n", __FUNCTION__, _ret);		\        }								\        info->CPStarted = FALSE;                                        \   }									\    RADEONEngineRestore(pScrn);						\    info->CPRuns = FALSE;						\} while (0)#define RADEONCP_RESET(pScrn, info)					\do {									\    if (RADEONCP_USE_RING_BUFFER(info->CPMode)) {			\	int _ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_RESET);	\	if (_ret) {							\	    xf86DrvMsg(pScrn->scrnIndex, X_ERROR,			\		       "%s: CP reset %d\n", __FUNCTION__, _ret);	\	}								\    }									\} while (0)#define RADEONCP_REFRESH(pScrn, info)					\do {									\    if (!info->CPInUse) {						\	RADEON_WAIT_UNTIL_IDLE();					\	BEGIN_RING(6);							\	OUT_RING_REG(RADEON_RE_TOP_LEFT,     info->re_top_left);	\	OUT_RING_REG(RADEON_RE_WIDTH_HEIGHT, info->re_width_height);	\	OUT_RING_REG(RADEON_AUX_SC_CNTL,     info->aux_sc_cntl);	\	ADVANCE_RING();							\	info->CPInUse = TRUE;						\    }									\} while (0)#define CP_PACKET0(reg, n)						\	(RADEON_CP_PACKET0 | ((n) << 16) | ((reg) >> 2))#define CP_PACKET1(reg0, reg1)						\	(RADEON_CP_PACKET1 | (((reg1) >> 2) << 11) | ((reg0) >> 2))#define CP_PACKET2()							\	(RADEON_CP_PACKET2)#define CP_PACKET3(pkt, n)						\	(RADEON_CP_PACKET3 | (pkt) | ((n) << 16))#define RADEON_VERBOSE	0#define RING_LOCALS	CARD32 *__head = NULL; int __expected; int __count = 0#define BEGIN_RING(n) do {						\    if (RADEON_VERBOSE) {						\	xf86DrvMsg(pScrn->scrnIndex, X_INFO,				\		   "BEGIN_RING(%d) in %s\n", (unsigned int)n, __FUNCTION__);\    }									\    if (++info->dma_begin_count != 1) {					\	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,				\		   "BEGIN_RING without end at %s:%d\n",			\		   info->dma_debug_func, info->dma_debug_lineno);	\	info->dma_begin_count = 1;					\    }									\    info->dma_debug_func = __FILE__;					\    info->dma_debug_lineno = __LINE__;					\    if (!info->indirectBuffer) {					\	info->indirectBuffer = RADEONCPGetBuffer(pScrn);		\	info->indirectStart = 0;					\    } else if (info->indirectBuffer->used + (n) * (int)sizeof(CARD32) >	\	       info->indirectBuffer->total) {				\	RADEONCPFlushIndirect(pScrn, 1);				\    }									\    __expected = n;							\    __head = (pointer)((char *)info->indirectBuffer->address +		\		       info->indirectBuffer->used);			\    __count = 0;							\} while (0)#define ADVANCE_RING() do {						\    if (info->dma_begin_count-- != 1) {					\	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,				\		   "ADVANCE_RING without begin at %s:%d\n",		\		   __FILE__, __LINE__);					\	info->dma_begin_count = 0;					\    }									\    if (__count != __expected) {					\	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,				\		   "ADVANCE_RING count != expected (%d vs %d) at %s:%d\n", \		   __count, __expected, __FILE__, __LINE__);		\    }									\    if (RADEON_VERBOSE) {						\	xf86DrvMsg(pScrn->scrnIndex, X_INFO,				\		   "ADVANCE_RING() start: %d used: %d count: %d\n",	\		   info->indirectStart,					\		   info->indirectBuffer->used,				\		   __count * (int)sizeof(CARD32));			\    }									\    info->indirectBuffer->used += __count * (int)sizeof(CARD32);	\} while (0)#define OUT_RING(x) do {						\    if (RADEON_VERBOSE) {						\	xf86DrvMsg(pScrn->scrnIndex, X_INFO,				\		   "   OUT_RING(0x%08x)\n", (unsigned int)(x));		\    }									\    __head[__count++] = (x);						\} while (0)#define OUT_RING_REG(reg, val)						\do {									\    OUT_RING(CP_PACKET0(reg, 0));					\    OUT_RING(val);							\} while (0)#define FLUSH_RING()							\do {									\    if (RADEON_VERBOSE)							\	xf86DrvMsg(pScrn->scrnIndex, X_INFO,				\		   "FLUSH_RING in %s\n", __FUNCTION__);			\    if (info->indirectBuffer) {						\	RADEONCPFlushIndirect(pScrn, 0);				\    }									\} while (0)#define RADEON_WAIT_UNTIL_2D_IDLE()					\do {									\    BEGIN_RING(2);							\    OUT_RING(CP_PACKET0(RADEON_WAIT_UNTIL, 0));				\    OUT_RING((RADEON_WAIT_2D_IDLECLEAN |				\	      RADEON_WAIT_HOST_IDLECLEAN));				\    ADVANCE_RING();							\} while (0)#define RADEON_WAIT_UNTIL_3D_IDLE()					\do {									\    BEGIN_RING(2);							\    OUT_RING(CP_PACKET0(RADEON_WAIT_UNTIL, 0));				\    OUT_RING((RADEON_WAIT_3D_IDLECLEAN |				\	      RADEON_WAIT_HOST_IDLECLEAN));				\    ADVANCE_RING();							\} while (0)#define RADEON_WAIT_UNTIL_IDLE()					\do {									\    if (RADEON_VERBOSE) {						\	xf86DrvMsg(pScrn->scrnIndex, X_INFO,				\		   "WAIT_UNTIL_IDLE() in %s\n", __FUNCTION__);		\    }									\    BEGIN_RING(2);							\    OUT_RING(CP_PACKET0(RADEON_WAIT_UNTIL, 0));				\    OUT_RING((RADEON_WAIT_2D_IDLECLEAN |				\	      RADEON_WAIT_3D_IDLECLEAN |				\	      RADEON_WAIT_HOST_IDLECLEAN));				\    ADVANCE_RING();							\} while (0)#define RADEON_FLUSH_CACHE()						\do {									\    BEGIN_RING(2);							\    OUT_RING(CP_PACKET0(RADEON_RB3D_DSTCACHE_CTLSTAT, 0));		\    OUT_RING(RADEON_RB3D_DC_FLUSH);					\    ADVANCE_RING();							\} while (0)#define RADEON_PURGE_CACHE()						\do {									\    BEGIN_RING(2);							\    OUT_RING(CP_PACKET0(RADEON_RB3D_DSTCACHE_CTLSTAT, 0));		\    OUT_RING(RADEON_RB3D_DC_FLUSH_ALL);					\    ADVANCE_RING();							\} while (0)#endif /* XF86DRI */static __inline__ void RADEON_MARK_SYNC(RADEONInfoPtr info, ScrnInfoPtr pScrn){#ifdef USE_EXA    if (info->useEXA)	exaMarkSync(pScrn->pScreen);#endif#ifdef USE_XAA    if (!info->useEXA)	SET_SYNC_FLAG(info->accel);#endif}static __inline__ void RADEON_SYNC(RADEONInfoPtr info, ScrnInfoPtr pScrn){#ifdef USE_EXA    if (info->useEXA)	exaWaitSync(pScrn->pScreen);#endif#ifdef USE_XAA    if (!info->useEXA && info->accel)	info->accel->Sync(pScrn);#endif}#endif /* _RADEON_H_ */

⌨️ 快捷键说明

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