📄 r128.h
字号:
GLboolean IsPCI; /* Current card is a PCI card */ drmSize pciSize; drm_handle_t pciMemHandle; unsigned char *PCI; /* Map */ GLboolean allowPageFlip; /* Enable 3d page flipping */ GLboolean have3DWindows; /* Are there any 3d clients? */ int drmMinor; drmSize agpSize; drm_handle_t agpMemHandle; /* Handle from drmAgpAlloc */ unsigned long agpOffset; unsigned char *AGP; /* Map */ int agpMode; GLboolean CCEInUse; /* CCE is currently active */ int CCEMode; /* CCE mode that server/clients use */ int CCEFifoSize; /* Size of the CCE command FIFO */ GLboolean 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) */ unsigned char *ring; /* Map */ int ringSizeLog2QW; unsigned long ringReadOffset; /* Offset into AGP space */ drm_handle_t ringReadPtrHandle; /* Handle from drmAddMap */ drmSize ringReadMapSize; /* Size of map */ unsigned char *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) */ unsigned char *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) */ unsigned char *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 */ u_int32_t sc_left; u_int32_t sc_right; u_int32_t sc_top; u_int32_t sc_bottom; u_int32_t re_top_left; u_int32_t re_width_height; u_int32_t aux_sc_cntl; int irq; u_int32_t gen_int_cntl; GLboolean DMAForXv;} R128InfoRec, *R128InfoPtr;#define R128WaitForFifo(pScrn, entries) \do { \ if (info->fifo_slots < entries) R128WaitForFifoFunction(pScrn, entries); \ info->fifo_slots -= entries; \} while (0)extern void r128WaitForFifoFunction(const DRIDriverContext *ctx, int entries);extern void r128WaitForIdle(const DRIDriverContext *ctx);extern void r128WaitForVerticalSync(const DRIDriverContext *ctx);extern GLboolean r128AccelInit(const DRIDriverContext *ctx);extern void r128EngineInit(const DRIDriverContext *ctx);extern GLboolean r128CursorInit(const DRIDriverContext *ctx);extern GLboolean r128DGAInit(const DRIDriverContext *ctx);extern void r128InitVideo(const DRIDriverContext *ctx);extern GLboolean r128DRIScreenInit(const DRIDriverContext *ctx);extern void r128DRICloseScreen(const DRIDriverContext *ctx);extern GLboolean r128DRIFinishScreenInit(const DRIDriverContext *ctx);#define R128CCE_START(ctx, info) \do { \ int _ret = drmCommandNone(ctx->drmFD, DRM_R128_CCE_START); \ if (_ret) { \ fprintf(stderr, \ "%s: CCE start %d\n", __FUNCTION__, _ret); \ } \} while (0)#define R128CCE_STOP(ctx, info) \do { \ int _ret = R128CCEStop(ctx); \ if (_ret) { \ fprintf(stderr, \ "%s: CCE stop %d\n", __FUNCTION__, _ret); \ } \} while (0)#define R128CCE_RESET(ctx, info) \do { \ if (info->directRenderingEnabled \ && R128CCE_USE_RING_BUFFER(info->CCEMode)) { \ int _ret = drmCommandNone(info->drmFD, DRM_R128_CCE_RESET); \ if (_ret) { \ fprintf(stderr, \ "%s: CCE reset %d\n", __FUNCTION__, _ret); \ } \ } \} while (0) #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 u_int32_t *__head; int __count;#define R128CCE_REFRESH(pScrn, info) \do { \ if ( R128_VERBOSE ) { \ fprintf(stderr, "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 ) { \ fprintf(stderr, \ "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 ) { \ fprintf(stderr, \ "ADVANCE_RING() used: %d+%d=%d/%d\n", \ info->indirectBuffer->used - info->indirectStart, \ __count * sizeof(u_int32_t), \ info->indirectBuffer->used - info->indirectStart + \ __count * sizeof(u_int32_t), \ info->indirectBuffer->total - info->indirectStart ); \ } \ info->indirectBuffer->used += __count * (int)sizeof(u_int32_t); \} while (0)#define OUT_RING( x ) do { \ if ( R128_VERBOSE ) { \ fprintf(stderr, \ " 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 ) \ fprintf(stderr, \ "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 + -