tdfx.h revision 02be438a
102be438aSmrg/* 202be438aSmrg Voodoo Banshee driver version 1.0.2 302be438aSmrg 402be438aSmrg Author: Daryll Strauss 502be438aSmrg 602be438aSmrg Copyright: 1998,1999 702be438aSmrg*/ 802be438aSmrg/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx.h,v 1.26 2002/01/25 21:56:11 tsi Exp $ */ 902be438aSmrg 1002be438aSmrg#ifndef _TDFX_H_ 1102be438aSmrg#define _TDFX_H_ 1202be438aSmrg 1302be438aSmrg#include <string.h> 1402be438aSmrg#include <stdio.h> 1502be438aSmrg 1602be438aSmrg#include "xf86PciInfo.h" 1702be438aSmrg#include "xf86Pci.h" 1802be438aSmrg#include "xf86xv.h" 1902be438aSmrg#include "tdfxdefs.h" 2002be438aSmrg 2102be438aSmrg#ifdef XF86DRI 2202be438aSmrg#include "xf86drm.h" 2302be438aSmrg#include "sarea.h" 2402be438aSmrg#define _XF86DRI_SERVER_ 2502be438aSmrg#include "dri.h" 2602be438aSmrg#include "GL/glxint.h" 2702be438aSmrg#include "tdfx_dri.h" 2802be438aSmrg#include "tdfx_dripriv.h" 2902be438aSmrg#endif 3002be438aSmrg 3102be438aSmrg#define TDFX_VERSION 4000 3202be438aSmrg#define TDFX_NAME "TDFX" 3302be438aSmrg#define TDFX_DRIVER_NAME "tdfx" 3402be438aSmrg#define TDFX_MAJOR_VERSION 1 3502be438aSmrg#define TDFX_MINOR_VERSION 3 3602be438aSmrg#define TDFX_PATCHLEVEL 0 3702be438aSmrg 3802be438aSmrgstruct _TDFXRec; 3902be438aSmrgtypedef struct _TDFXRec *TDFXPtr; 4002be438aSmrg 4102be438aSmrg#include "tdfx_priv.h" 4202be438aSmrgextern void TDFXSwapContextFifo(ScreenPtr pScreen); 4302be438aSmrgextern void TDFXLostContext(ScreenPtr pScreen); 4402be438aSmrgextern Bool TDFXSetupSLI(ScrnInfoPtr pScrn, Bool sliEnable, int aaSamples); 4502be438aSmrgextern Bool TDFXDisableSLI(TDFXPtr pTDFX); 4602be438aSmrg 4702be438aSmrg#ifdef XF86DRI 4802be438aSmrgextern void FillPrivateDRI(TDFXPtr pTDFX, TDFXDRIPtr pTDFXDRI); 4902be438aSmrg#endif 5002be438aSmrg 5102be438aSmrg#if 0 5202be438aSmrg/* These are not normally turned on. They are only included for debugging. */ 5302be438aSmrg#define TRACE 1 5402be438aSmrg#define TRACEACCEL 1 5502be438aSmrg#define TDFX_DEBUG_CMDS 5602be438aSmrg#define TRACECURS 1 5702be438aSmrg#define REGDEBUG 1 5802be438aSmrg#define TRACEREG 5902be438aSmrg#endif 6002be438aSmrg 6102be438aSmrg#ifdef TRACE 6202be438aSmrg#define TDFXTRACE ErrorF 6302be438aSmrg#else 6402be438aSmrg#define TDFXTRACE if(0) ErrorF 6502be438aSmrg#endif 6602be438aSmrg 6702be438aSmrg#ifdef TRACEACCEL 6802be438aSmrg#define TDFXTRACEACCEL ErrorF 6902be438aSmrg#else 7002be438aSmrg#define TDFXTRACEACCEL if(0) ErrorF 7102be438aSmrg#endif 7202be438aSmrg 7302be438aSmrg#ifdef TRACECURS 7402be438aSmrg#define TDFXTRACECURS ErrorF 7502be438aSmrg#else 7602be438aSmrg#define TDFXTRACECURS if(0) ErrorF 7702be438aSmrg#endif 7802be438aSmrg 7902be438aSmrg#ifdef TRACEREG 8002be438aSmrg#define TDFXTRACEREG ErrorF 8102be438aSmrg#else 8202be438aSmrg#define TDFXTRACEREG if(0) ErrorF 8302be438aSmrg#endif 8402be438aSmrg 8502be438aSmrg#include "xaa.h" 8602be438aSmrg#include "xf86Cursor.h" 8702be438aSmrg 8802be438aSmrgtypedef void (*TDFXWriteIndexedByteFunc)(TDFXPtr pTDFX, int addr, 8902be438aSmrg char index, char value); 9002be438aSmrgtypedef char (*TDFXReadIndexedByteFunc)(TDFXPtr pTDFX, int addr, 9102be438aSmrg char index); 9202be438aSmrgtypedef void (*TDFXWriteWordFunc)(TDFXPtr pTDFX, int addr, int value); 9302be438aSmrgtypedef int (*TDFXReadWordFunc)(TDFXPtr pTDFX, int addr); 9402be438aSmrgtypedef void (*TDFXWriteChipIndexedByteFunc)(TDFXPtr pTDFX, int chip, 9502be438aSmrg int addr, char index, char value); 9602be438aSmrgtypedef char (*TDFXReadChipIndexedByteFunc)(TDFXPtr pTDFX, int chip, 9702be438aSmrg int addr, char index); 9802be438aSmrgtypedef void (*TDFXWriteChipWordFunc)(TDFXPtr pTDFX, int chip, 9902be438aSmrg int addr, int value); 10002be438aSmrgtypedef int (*TDFXReadChipWordFunc)(TDFXPtr pTDFX, int chip, 10102be438aSmrg int addr); 10202be438aSmrgtypedef void (*TDFXSyncFunc)(ScrnInfoPtr pScrn); 10302be438aSmrgtypedef void (*TDFXBufferFunc)(TDFXPtr pTDFX, int which); 10402be438aSmrg#if X_BYTE_ORDER == X_BIG_ENDIAN 10502be438aSmrgtypedef void (*TDFXWriteFifoFunc)(TDFXPtr pTDFX, int val); 10602be438aSmrg#endif 10702be438aSmrg 10802be438aSmrg 10902be438aSmrgtypedef struct { 11002be438aSmrg unsigned int vidcfg; 11102be438aSmrg unsigned int vidpll; 11202be438aSmrg unsigned int dacmode; 11302be438aSmrg unsigned int vgainit0; 11402be438aSmrg unsigned int vgainit1; 11502be438aSmrg unsigned int miscinit0; 11602be438aSmrg unsigned int miscinit1; 11702be438aSmrg unsigned int screensize; 11802be438aSmrg unsigned int stride; 11902be438aSmrg unsigned int cursloc; 12002be438aSmrg unsigned int startaddr; 12102be438aSmrg unsigned int clip0min; 12202be438aSmrg unsigned int clip0max; 12302be438aSmrg unsigned int clip1min; 12402be438aSmrg unsigned int clip1max; 12502be438aSmrg unsigned int srcbaseaddr; 12602be438aSmrg unsigned int dstbaseaddr; 12702be438aSmrg unsigned char ExtVga[2]; 12802be438aSmrg unsigned int dactable[512]; 12902be438aSmrg} TDFXRegRec, *TDFXRegPtr; 13002be438aSmrg 13102be438aSmrgtypedef struct TextureData_t { 13202be438aSmrg int contextid; 13302be438aSmrg void *data; 13402be438aSmrg struct TextureData_t *next; 13502be438aSmrg} TextureData; 13602be438aSmrg 13702be438aSmrg#define MAXCHIPS 4 13802be438aSmrg 13902be438aSmrgtypedef struct _TDFXRec { 14002be438aSmrg unsigned char *MMIOBase[MAXCHIPS]; 14102be438aSmrg unsigned char *FbBase; 14202be438aSmrg unsigned char *myFbBase; 14302be438aSmrg IOADDRESS PIOBase[MAXCHIPS]; 14402be438aSmrg long FbMapSize; 14502be438aSmrg int pixelFormat; 14602be438aSmrg int stride; 14702be438aSmrg int cpp; 14802be438aSmrg int maxClip; 14902be438aSmrg int MaxClock; 15002be438aSmrg int ChipType; 15102be438aSmrg pciVideoPtr PciInfo; 15202be438aSmrg unsigned long LinearAddr[MAXCHIPS]; 15302be438aSmrg unsigned long MMIOAddr[MAXCHIPS]; 15402be438aSmrg EntityInfoPtr pEnt; 15502be438aSmrg int numChips; 15602be438aSmrg PCITAG PciTag[MAXCHIPS]; 15702be438aSmrg Bool Primary; 15802be438aSmrg int HasSGRAM; 15902be438aSmrg int PciCnt; 16002be438aSmrg int PrevDrawState; 16102be438aSmrg int DrawState; 16202be438aSmrg int Cmd; 16302be438aSmrg int DashedLineSize; 16402be438aSmrg BoxRec prevBlitDest; 16502be438aSmrg TDFXRegRec SavedReg; 16602be438aSmrg TDFXRegRec ModeReg; 16702be438aSmrg XAAInfoRecPtr AccelInfoRec; 16802be438aSmrg xf86CursorInfoPtr CursorInfoRec; 16902be438aSmrg CloseScreenProcPtr CloseScreen; 17002be438aSmrg Bool usePIO; 17102be438aSmrg Bool NoAccel; 17202be438aSmrg DGAModePtr DGAModes; 17302be438aSmrg Bool DGAactive; 17402be438aSmrg Bool initDone; 17502be438aSmrg int DGAViewportStatus; 17602be438aSmrg int cursorOffset; 17702be438aSmrg int fbOffset; 17802be438aSmrg int backOffset; 17902be438aSmrg int depthOffset; 18002be438aSmrg int texOffset; 18102be438aSmrg int texSize; 18202be438aSmrg TDFXWriteIndexedByteFunc writeControl; 18302be438aSmrg TDFXReadIndexedByteFunc readControl; 18402be438aSmrg TDFXWriteWordFunc writeLong; 18502be438aSmrg TDFXReadWordFunc readLong; 18602be438aSmrg TDFXWriteChipWordFunc writeChipLong; 18702be438aSmrg TDFXReadChipWordFunc readChipLong; 18802be438aSmrg TDFXSyncFunc sync; 18902be438aSmrg#if X_BYTE_ORDER == X_BIG_ENDIAN 19002be438aSmrg TDFXWriteFifoFunc writeFifo; 19102be438aSmrg#endif 19202be438aSmrg int syncDone; 19302be438aSmrg int scanlineWidth; 19402be438aSmrg unsigned char *scanlineColorExpandBuffers[2]; 19502be438aSmrg PROPDATA 19602be438aSmrg#ifdef XF86DRI 19702be438aSmrg Bool directRenderingEnabled; 19802be438aSmrg DRIInfoPtr pDRIInfo; 19902be438aSmrg int drmSubFD; 20002be438aSmrg int numVisualConfigs; 20102be438aSmrg __GLXvisualConfig* pVisualConfigs; 20202be438aSmrg TDFXConfigPrivPtr pVisualConfigsPriv; 20302be438aSmrg TDFXRegRec DRContextRegs; 20402be438aSmrg#endif 20502be438aSmrg /* State for video */ 20602be438aSmrg FBAreaPtr offscreenYUVBuf; 20702be438aSmrg int offscreenYUVBufWidth; 20802be438aSmrg int offscreenYUVBufHeight; 20902be438aSmrg 21002be438aSmrg /* This is a small register shadow. I'm only shadowing 21102be438aSmrg * sst2dDstFmt 21202be438aSmrg * sst2dSrcFmt 21302be438aSmrg * If a real register shadow is ever needed we should probably 21402be438aSmrg * shadow everything and make it happen automatically for every write. */ 21502be438aSmrg INT32 sst2DSrcFmtShadow; 21602be438aSmrg INT32 sst2DDstFmtShadow; 21702be438aSmrg int pixmapCacheLinesMin; 21802be438aSmrg int pixmapCacheLinesMax; 21902be438aSmrg FBAreaPtr reservedArea; 22002be438aSmrg Bool ShowCache; 22102be438aSmrg int videoKey; 22202be438aSmrg void (*VideoTimerCallback)(ScrnInfoPtr, Time); 22302be438aSmrg FBLinearPtr overlayBuffer; 22402be438aSmrg FBLinearPtr overlayBuffer2; /* for double-buffering */ 22502be438aSmrg int whichOverlayBuffer; /* flip-flop */ 22602be438aSmrg FBAreaPtr textureBuffer; 22702be438aSmrg Bool TextureXvideo; 22802be438aSmrg XF86VideoAdaptorPtr overlayAdaptor; 22902be438aSmrg XF86VideoAdaptorPtr textureAdaptor; 23002be438aSmrg ScreenBlockHandlerProcPtr BlockHandler; 23102be438aSmrg OptionInfoPtr Options; 23202be438aSmrg 23302be438aSmrg ScreenWakeupHandlerProcPtr coreWakeupHandler; 23402be438aSmrg ScreenBlockHandlerProcPtr coreBlockHandler; 23502be438aSmrg 23602be438aSmrg} TDFXRec; 23702be438aSmrg 23802be438aSmrgtypedef struct { 23902be438aSmrg RegionRec clip; 24002be438aSmrg CARD32 colorKey; 24102be438aSmrg int filterQuality; 24202be438aSmrg CARD32 videoStatus; 24302be438aSmrg Time offTime; 24402be438aSmrg Time freeTime; 24502be438aSmrg} TDFXPortPrivRec, *TDFXPortPrivPtr; 24602be438aSmrg 24702be438aSmrgtypedef struct { 24802be438aSmrg PROPSAREADATA 24902be438aSmrg int fifoOwner; 25002be438aSmrg int CtxOwner; 25102be438aSmrg int TexOwner; 25202be438aSmrg} TDFXSAREAPriv; 25302be438aSmrg 25402be438aSmrg#define TDFXPTR(p) ((TDFXPtr)((p)->driverPrivate)) 25502be438aSmrg 25602be438aSmrg#define DRAW_STATE_CLIPPING 0x1 25702be438aSmrg#define DRAW_STATE_TRANSPARENT 0x2 25802be438aSmrg#define DRAW_STATE_CLIP1CHANGED 0x4 25902be438aSmrg 26002be438aSmrg#define TDFX_FRONT 0 26102be438aSmrg#define TDFX_BACK 1 26202be438aSmrg#define TDFX_DEPTH 2 26302be438aSmrg 26402be438aSmrg#define TDFX2XCUTOFF 135000 26502be438aSmrg 26602be438aSmrgextern Bool TDFXAccelInit(ScreenPtr pScreen); 26702be438aSmrgextern Bool TDFXCursorInit(ScreenPtr pScreen); 26802be438aSmrgextern void TDFXSync(ScrnInfoPtr pScrn); 26902be438aSmrgextern Bool TDFXDRIScreenInit(ScreenPtr pScreen); 27002be438aSmrgextern void TDFXDRICloseScreen(ScreenPtr pScreen); 27102be438aSmrgextern Bool TDFXDRIFinishScreenInit(ScreenPtr pScreen); 27202be438aSmrgextern Bool TDFXDGAInit(ScreenPtr pScreen); 27302be438aSmrgextern void TDFXCursorGrabMemory(ScreenPtr pScreen); 27402be438aSmrgextern void TDFXSetLFBConfig(TDFXPtr pTDFX); 27502be438aSmrgextern void TDFXSendNOPFifo(ScrnInfoPtr pScrn); 27602be438aSmrg 27702be438aSmrgextern Bool TDFXSwitchMode(int scrnIndex, DisplayModePtr mode, int flags); 27802be438aSmrgextern void TDFXAdjustFrame(int scrnIndex, int x, int y, int flags); 27902be438aSmrg 28002be438aSmrgextern void TDFXSetPIOAccess(TDFXPtr pTDFX); 28102be438aSmrgextern void TDFXSetMMIOAccess(TDFXPtr pTDFX); 28202be438aSmrgextern void TDFXWriteLongMMIO(TDFXPtr pTDFX, int addr, int val); 28302be438aSmrgextern int TDFXReadLongMMIO(TDFXPtr pTDFX, int addr); 28402be438aSmrgextern void TDFXWriteChipLongMMIO(TDFXPtr pTDFX, int chip, int addr, int val); 28502be438aSmrg 28602be438aSmrgextern void TDFXNeedSync(ScrnInfoPtr pScrn); 28702be438aSmrgextern void TDFXCheckSync(ScrnInfoPtr pScrn); 28802be438aSmrgextern void TDFXFirstSync(ScrnInfoPtr pScrn); 28902be438aSmrg 29002be438aSmrgextern void TDFXSetupForScreenToScreenCopy(ScrnInfoPtr pScrn, int xdir, 29102be438aSmrg int ydir, int rop, 29202be438aSmrg unsigned int planemask, 29302be438aSmrg int trans_color); 29402be438aSmrgextern void TDFXSubsequentScreenToScreenCopy(ScrnInfoPtr pScrn, int srcX, 29502be438aSmrg int srcY, int dstX, int dstY, 29602be438aSmrg int w, int h); 29702be438aSmrgextern void TDFXSetupForSolidFill(ScrnInfoPtr pScrn, int color, int rop, 29802be438aSmrg unsigned int planemask); 29902be438aSmrgextern void TDFXSubsequentSolidFillRect(ScrnInfoPtr pScrn, int x, int y, 30002be438aSmrg int w, int h); 30102be438aSmrg 30202be438aSmrgextern void TDFXSelectBuffer(TDFXPtr pTDFX, int which); 30302be438aSmrg 30402be438aSmrgextern void TDFXInitVideo(ScreenPtr pScreen); 30502be438aSmrgextern void TDFXCloseVideo(ScreenPtr pScreen); 30602be438aSmrg 30702be438aSmrg#endif 308