📄 r128.h
字号:
int scanline_h;#ifdef XF86DRI int scanline_hpass; int scanline_x1clip; int scanline_x2clip; int scanline_rop; int scanline_fg; int scanline_bg;#endif /* XF86DRI */ int scanline_words; int scanline_direct; int scanline_bpp; /* Only used for ImageWrite */ DGAModePtr DGAModes; int numDGAModes; Bool DGAactive; int DGAViewportStatus; DGAFunctionRec DGAFuncs; R128FBLayout CurrentLayout;#ifdef XF86DRI Bool directRenderingEnabled; DRIInfoPtr pDRIInfo; int drmFD; drm_context_t drmCtx; int numVisualConfigs; __GLXvisualConfig *pVisualConfigs; R128ConfigPrivPtr pVisualConfigsPriv; drm_handle_t fbHandle; drmSize registerSize; drm_handle_t registerHandle; Bool IsPCI; /* Current card is a PCI card */ drmSize pciSize; drm_handle_t pciMemHandle; drmAddress PCI; /* Map */ Bool allowPageFlip; /* Enable 3d page flipping */ Bool have3DWindows; /* Are there any 3d clients? */ int drmMinor; drmSize agpSize; drm_handle_t agpMemHandle; /* Handle from drmAgpAlloc */ unsigned long agpOffset; drmAddress AGP; /* Map */ int agpMode; Bool CCEInUse; /* CCE is currently active */ int CCEMode; /* CCE mode that server/clients use */ int CCEFifoSize; /* Size of the CCE command FIFO */ Bool CCESecure; /* CCE security enabled */ int CCEusecTimeout; /* CCE timeout in usecs */ /* CCE ring buffer data */ unsigned long ringStart; /* Offset into AGP space */ drm_handle_t ringHandle; /* Handle from drmAddMap */ drmSize ringMapSize; /* Size of map */ int ringSize; /* Size of ring (in MB) */ drmAddress ring; /* Map */ int ringSizeLog2QW; unsigned long ringReadOffset; /* Offset into AGP space */ drm_handle_t ringReadPtrHandle; /* Handle from drmAddMap */ drmSize ringReadMapSize; /* Size of map */ drmAddress ringReadPtr; /* Map */ /* CCE vertex/indirect buffer data */ unsigned long bufStart; /* Offset into AGP space */ drm_handle_t bufHandle; /* Handle from drmAddMap */ drmSize bufMapSize; /* Size of map */ int bufSize; /* Size of buffers (in MB) */ drmAddress buf; /* Map */ int bufNumBufs; /* Number of buffers */ drmBufMapPtr buffers; /* Buffer map */ /* CCE AGP Texture data */ unsigned long agpTexStart; /* Offset into AGP space */ drm_handle_t agpTexHandle; /* Handle from drmAddMap */ drmSize agpTexMapSize; /* Size of map */ int agpTexSize; /* Size of AGP tex space (in MB) */ drmAddress agpTex; /* Map */ int log2AGPTexGran; /* CCE 2D accleration */ drmBufPtr indirectBuffer; int indirectStart; /* DRI screen private data */ int fbX; int fbY; int backX; int backY; int depthX; int depthY; int frontOffset; int frontPitch; int backOffset; int backPitch; int depthOffset; int depthPitch; int spanOffset; int textureOffset; int textureSize; int log2TexGran; /* Saved scissor values */ CARD32 sc_left; CARD32 sc_right; CARD32 sc_top; CARD32 sc_bottom; CARD32 re_top_left; CARD32 re_width_height; CARD32 aux_sc_cntl; int irq; CARD32 gen_int_cntl; Bool DMAForXv;#endif XF86VideoAdaptorPtr adaptor; void (*VideoTimerCallback)(ScrnInfoPtr, Time); int videoKey; Bool showCache; OptionInfoPtr Options; Bool isDFP; Bool isPro2; I2CBusPtr pI2CBus; CARD32 DDCReg; Bool VGAAccess; /****** Added for dualhead support *******************/ BOOL HasCRTC2; /* M3/M4 */ BOOL IsSecondary; /* second Screen */ BOOL IsPrimary; /* primary Screen */ BOOL UseCRT; /* force use CRT port as primary */ BOOL SwitchingMode; R128MonitorType DisplayType; /* Monitor connected on*/} R128InfoRec, *R128InfoPtr;#define R128WaitForFifo(pScrn, entries) \do { \ if (info->fifo_slots < entries) R128WaitForFifoFunction(pScrn, entries); \ info->fifo_slots -= entries; \} while (0)extern R128EntPtr R128EntPriv(ScrnInfoPtr pScrn);extern void R128WaitForFifoFunction(ScrnInfoPtr pScrn, int entries);extern void R128WaitForIdle(ScrnInfoPtr pScrn);extern void R128EngineReset(ScrnInfoPtr pScrn);extern void R128EngineFlush(ScrnInfoPtr pScrn);extern unsigned R128INPLL(ScrnInfoPtr pScrn, int addr);extern void R128WaitForVerticalSync(ScrnInfoPtr pScrn);extern Bool R128AccelInit(ScreenPtr pScreen);extern void R128EngineInit(ScrnInfoPtr pScrn);extern Bool R128CursorInit(ScreenPtr pScreen);extern Bool R128DGAInit(ScreenPtr pScreen);extern int R128MinBits(int val);extern void R128InitVideo(ScreenPtr pScreen);#ifdef XF86DRIextern Bool R128DRIScreenInit(ScreenPtr pScreen);extern void R128DRICloseScreen(ScreenPtr pScreen);extern Bool R128DRIFinishScreenInit(ScreenPtr pScreen);#define R128CCE_START(pScrn, info) \do { \ int _ret = drmCommandNone(info->drmFD, DRM_R128_CCE_START); \ if (_ret) { \ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \ "%s: CCE start %d\n", __FUNCTION__, _ret); \ } \} while (0)#define R128CCE_STOP(pScrn, info) \do { \ int _ret = R128CCEStop(pScrn); \ if (_ret) { \ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \ "%s: CCE stop %d\n", __FUNCTION__, _ret); \ } \} while (0)#define R128CCE_RESET(pScrn, info) \do { \ if (info->directRenderingEnabled \ && R128CCE_USE_RING_BUFFER(info->CCEMode)) { \ int _ret = drmCommandNone(info->drmFD, DRM_R128_CCE_RESET); \ if (_ret) { \ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \ "%s: CCE reset %d\n", __FUNCTION__, _ret); \ } \ } \} while (0)extern drmBufPtr R128CCEGetBuffer(ScrnInfoPtr pScrn);#endifextern void R128CCEFlushIndirect(ScrnInfoPtr pScrn, int discard);extern void R128CCEReleaseIndirect(ScrnInfoPtr pScrn);extern void R128CCEWaitForIdle(ScrnInfoPtr pScrn);extern int R128CCEStop(ScrnInfoPtr pScrn);#define CCE_PACKET0( reg, n ) \ (R128_CCE_PACKET0 | ((n) << 16) | ((reg) >> 2))#define CCE_PACKET1( reg0, reg1 ) \ (R128_CCE_PACKET1 | (((reg1) >> 2) << 11) | ((reg0) >> 2))#define CCE_PACKET2() \ (R128_CCE_PACKET2)#define CCE_PACKET3( pkt, n ) \ (R128_CCE_PACKET3 | (pkt) | ((n) << 16))#define R128_VERBOSE 0#define RING_LOCALS CARD32 *__head; int __count;#define R128CCE_REFRESH(pScrn, info) \do { \ if ( R128_VERBOSE ) { \ xf86DrvMsg( pScrn->scrnIndex, X_INFO, "REFRESH( %d ) in %s\n", \ !info->CCEInUse , __FUNCTION__ ); \ } \ if ( !info->CCEInUse ) { \ R128CCEWaitForIdle(pScrn); \ BEGIN_RING( 6 ); \ OUT_RING_REG( R128_RE_TOP_LEFT, info->re_top_left ); \ OUT_RING_REG( R128_RE_WIDTH_HEIGHT, info->re_width_height ); \ OUT_RING_REG( R128_AUX_SC_CNTL, info->aux_sc_cntl ); \ ADVANCE_RING(); \ info->CCEInUse = TRUE; \ } \} while (0)#define BEGIN_RING( n ) do { \ if ( R128_VERBOSE ) { \ xf86DrvMsg( pScrn->scrnIndex, X_INFO, \ "BEGIN_RING( %d ) in %s\n", n, __FUNCTION__ ); \ } \ if ( !info->indirectBuffer ) { \ info->indirectBuffer = R128CCEGetBuffer( pScrn ); \ info->indirectStart = 0; \ } else if ( (info->indirectBuffer->used + 4*(n)) > \ info->indirectBuffer->total ) { \ R128CCEFlushIndirect( pScrn, 1 ); \ } \ __head = (pointer)((char *)info->indirectBuffer->address + \ info->indirectBuffer->used); \ __count = 0; \} while (0)#define ADVANCE_RING() do { \ if ( R128_VERBOSE ) { \ xf86DrvMsg( pScrn->scrnIndex, X_INFO, \ "ADVANCE_RING() used: %d+%d=%d/%d\n", \ info->indirectBuffer->used - info->indirectStart, \ __count * (int)sizeof(CARD32), \ info->indirectBuffer->used - info->indirectStart + \ __count * (int)sizeof(CARD32), \ info->indirectBuffer->total - info->indirectStart ); \ } \ info->indirectBuffer->used += __count * (int)sizeof(CARD32); \} while (0)#define OUT_RING( x ) do { \ if ( R128_VERBOSE ) { \ xf86DrvMsg( pScrn->scrnIndex, X_INFO, \ " OUT_RING( 0x%08x )\n", (unsigned int)(x) ); \ } \ MMIO_OUT32(&__head[__count++], 0, (x)); \} while (0)#define OUT_RING_REG( reg, val ) \do { \ OUT_RING( CCE_PACKET0( reg, 0 ) ); \ OUT_RING( val ); \} while (0)#define FLUSH_RING() \do { \ if ( R128_VERBOSE ) \ xf86DrvMsg( pScrn->scrnIndex, X_INFO, \ "FLUSH_RING in %s\n", __FUNCTION__ ); \ if ( info->indirectBuffer ) { \ R128CCEFlushIndirect( pScrn, 0 ); \ } \} while (0)#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -