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

📄 savage_bci.h

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 H
字号:
/* * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved. * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sub license, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice (including the * next paragraph) shall be included in all copies or substantial portions * of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL * VIA, S3 GRAPHICS, AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */#ifndef SAVAGE_BCI_H#define SAVAGE_BCI_H/***********************  3D and 2D command************************/typedef enum {    AMO_BurstCmdData=   0x01010000,    AMO_3DReg=          0x01048500,    AMO_MotionCompReg=  0x01048900,    AMO_VideoEngUnit=   0x01048A00,    AMO_CmdBufAddr=     0x01048c14,    AMO_TiledSurfReg0=  0x01048C40,    AMO_TiledSurfReg1=  0x01048C44,    AMO_TiledSurfReg2=  0x01048C48,    AMO_TiledSurfReg3=  0x01048C4C,    AMO_TiledSurfReg4=  0x01048C50,    AMO_TiledSurfReg5=  0x01048C54,    AMO_TiledSurfReg6=  0x01048C58,    AMO_TiledSurfReg7=  0x01048C5C,    AMO_LPBModeReg=     0x0100FF00,    AMO_LPBFifoSat=     0x0100FF04,    AMO_LPBIntFlag=     0x0100FF08,    AMO_LPBFmBufA0=     0x0100FF0C,    AMO_LPBFmBufA1=     0x0100FF10,    AMO_LPBRdWtAdr=     0x0100FF14,    AMO_LPBRdWtDat=     0x0100FF18,    AMO_LPBIOPort =     0x0100FF1C,    AMO_LPBSerPort=     0x0100FF20,    AMO_LPBVidInWinSz=  0x0100FF24,    AMO_LPBVidDatOffs=  0x0100FF28,    AMO_LPBHorScalCtrl= 0x0100FF2C,    AMO_LPBVerDeciCtrl= 0x0100FF30,    AMO_LPBLnStride=    0x0100FF34,    AMO_LPBFmBufAddr2=  0x0100FF38,    AMO_LPBVidCapVDCtrl=0x0100FF3C,    AMO_LPBVidCapFdStAd=0x0100FF60,    AMO_LPBVidCapFdMdAd=0x0100FF64,    AMO_LPBVidCapFdBtAd=0x0100FF68,    AMO_LPBVidCapFdSize=0x0100FF6C,    AMO_LPBBilinDecim1= 0x0100FF70,    AMO_LPBBilinDecim2= 0x0100FF74,    AMO_LPBBilinDecim3= 0x0100FF78,    AMO_LPBDspVEUHorSRR=0x0100FF7C,    AMO_LPBDspVEUVerSRR=0x0100FF80,    AMO_LPBDspVeuDnScDR=0x0100FF84,    AMO_LPB_VEUERPReg=  0x0100FF88,    AMO_LPB_VBISelReg=  0x0100FF8C,    AMO_LPB_VBIBasAdReg=0x0100FF90,    AMO_LPB_DatOffsReg= 0x0100FF94,    AMO_LPB_VBIVerDcReg=0x0100FF98,    AMO_LPB_VBICtrlReg= 0x0100FF9C,    AMO_LPB_VIPXferCtrl=0x0100FFA0,    AMO_LPB_FIFOWtMark= 0x0100FFA4,    AMO_LPB_FIFOCount=  0x0100FFA8,    AMO_LPBFdSkipPat=   0x0100FFAC,    AMO_LPBCapVEUHorSRR=0x0100FFB0,    AMO_LPBCapVEUVerSRR=0x0100FFB4,    AMO_LPBCapVeuDnScDR=0x0100FFB8}AddressMapOffset;   /*more to add*/typedef enum {  CMD_DrawPrim=0x10,          /*10000*/  CMD_DrawIdxPrim=0x11,       /*10001*/  CMD_SetRegister=0x12,       /*10010*/  CMD_UpdateShadowStat=0x13 , /*10011*/  CMD_PageFlip=0x14,          /* 10100*/  CMD_BusMasterImgXfer=0x15,  /* 10101*/  CMD_ScaledImgXfer=0x16,     /* 10110*/  CMD_Macroblock=0x17,         /*10111*/  CMD_Wait= 0x18,             /*11000*/  CMD_2D_NOP=0x08,            /* 01000*/  CMD_2D_RCT=0x09,            /*01001   rectangular fill*/  CMD_2D_SCNL=0x0a,           /* 01010   scan line*/  CMD_2D_LIN=0x0b,            /*01011   line*/  CMD_2D_SMTXT=0x0c,          /*01100*/  CMD_2D_BPTXT=0x0d,          /*01101*/  CMD_InitFlag=0x1f           /*11111, for S/W initialization control*/}Command;typedef enum {    VRR_List,    VRR_Strip,    VRR_Fan,    VRR_QuadList}VertexReplaceRule;/***********************   Destination************************/typedef enum {    DFT_RGB565 = 0,    DFT_XRGB8888}DestinationFmt;/*************************    Z Buffer / Alpha test*************************/typedef enum {    CF_Never,    CF_Less,    CF_Equal,    CF_LessEqual,    CF_Greater,    CF_NotEqual,    CF_GreaterEqual,    CF_Always}ZCmpFunc;   /* same for Alpha test and Stencil test compare function */typedef ZCmpFunc ACmpFunc;typedef enum {  ZDS_16i,    /* .16 fixed*/  ZDS_32f     /* 1.8.15 float*/}ZDepthSelect;/**********************************    BCI Register Addressing Index***********************************/typedef enum {    CRI_VTX0_X =    0x00,    CRI_VTX0_Y =    0x01,    CRI_VTX0_W =    0x02,    CRI_VTX0_DIFFU= 0x03,    CRI_VTX0_SPECU= 0x04,    CRI_VTX0_U =    0x05,    CRI_VTX0_V =    0x06,    CRI_VTX0_U2 =   0x07,    CRI_VTX0_V2 =   0x08,    CRI_VTX1_X =    0x09,    CRI_VTX1_Y =    0x0a,    CRI_VTX1_W =    0x0b,    CRI_VTX1_DIFFU= 0x0c,    CRI_VTX1_SPECU= 0x0d,    CRI_VTX1_U =    0x0e,    CRI_VTX1_V =    0x0f,    CRI_VTX1_U2 =   0x10,    CRI_VTX1_V2 =   0x11,    CRI_VTX2_X =    0x12,    CRI_VTX2_Y =    0x13,    CRI_VTX2_W =    0x14,    CRI_VTX2_DIFFU= 0x15,    CRI_VTX2_SPECU= 0x16,    CRI_VTX2_U =    0x17,    CRI_VTX2_V =    0x18,    CRI_VTX2_U2 =   0x19,    CRI_VTX2_V2 =   0x1a,    CRI_ZPixelOffset  = 0x1d,    CRI_DrawCtrlLocal = 0x1e,    CRI_TexPalAddr    = 0x1f,    CRI_TexCtrl0      = 0x20,    CRI_TexCtrl1      = 0x21,    CRI_TexAddr0      = 0x22,    CRI_TexAddr1      = 0x23,    CRI_TexBlendCtrl0 = 0x24,    CRI_TexBlendCtrl1 = 0x25,    CRI_TexXprClr     = 0x26,    CRI_TexDescr      = 0x27,    CRI_FogTable00= 0x28,    CRI_FogTable04= 0x29,    CRI_FogTable08= 0x2a,    CRI_FogTable12= 0x2b,    CRI_FogTable16= 0x2c,    CRI_FogTable20= 0x2d,    CRI_FogTable24= 0x2e,    CRI_FogTable28= 0x2f,    CRI_FogCtrl=    0x30,    CRI_StencilCtrl= 0x31,    CRI_ZBufCtrl=   0x32,    CRI_ZBufOffset= 0x33,    CRI_DstCtrl=    0x34,    CRI_DrawCtrlGlobal0=   0x35,    CRI_DrawCtrlGlobal1=   0x36,    CRI_ZRW_WTMK =  0x37,    CRI_DST_WTMK =  0x38,    CRI_TexBlendColor= 0x39,    CRI_VertBufAddr= 0x3e,    /* new in ms1*/    CRI_MauFrameAddr0 = 0x40,    CRI_MauFrameAddr1 = 0x41,    CRI_MauFrameAddr2 = 0x42,    CRI_MauFrameAddr3 = 0x43,    CRI_FrameDesc     = 0x44,    CRI_IDCT9bitEn    = 0x45,    CRI_MV0           = 0x46,    CRI_MV1           = 0x47,    CRI_MV2           = 0x48,    CRI_MV3           = 0x49,    CRI_MacroDescr    = 0x4a,  /*kickoff?*/        CRI_MeuCtrl = 0x50,    CRI_SrcYAddr = 0x51,    CRI_DestAddr = 0x52,    CRI_FmtrSrcDimen = 0x53,    CRI_FmtrDestDimen = 0x54,    CRI_SrcCbAddr = 0x55,    CRI_SrcCrAddr = 0x56,    CRI_SrcCrCbStride = 0x57,        CRI_BCI_Power= 0x5f,        CRI_PSCtrl=0xA0,    CRI_SSClrKeyCtrl=0xA1,    CRI_SSCtrl=0xA4,    CRI_SSChromUpBound=0xA5,    CRI_SSHoriScaleCtrl=0xA6,    CRI_SSClrAdj=0xA7,    CRI_SSBlendCtrl=0xA8,    CRI_PSFBAddr0=0xB0,    CRI_PSFBAddr1=0xB1,    CRI_PSStride=0xB2,    CRI_DB_LPB_Support=0xB3,    CRI_SSFBAddr0=0xB4,    CRI_SSFBAddr1=0xB5,    CRI_SSStride=0xB6,    CRI_SSOpaqueCtrl=0xB7,    CRI_SSVertScaleCtrl=0xB8,    CRI_SSVertInitValue=0xB9,    CRI_SSSrcLineCnt=0xBA,    CRI_FIFO_RAS_Ctrl=0xBB,    CRI_PSWinStartCoord=0xBC,    CRI_PSWinSize=0xBD,    CRI_SSWinStartCoord=0xBE,    CRI_SSWinSize=0xBF,    CRI_PSFIFOMon0=0xC0,    CRI_SSFIFOMon0=0xC1,    CRI_PSFIFOMon1=0xC2,    CRI_SSFIFOMon1=0xC3,    CRI_PSFBSize=0xC4,    CRI_SSFBSize=0xC5,    CRI_SSFBAddr2=0xC6,    /* 2D register starts at D0*/    CRI_CurrXY=0xD0,    CRI_DstXYorStep=0xD1 ,    CRI_LineErr=0xD2 ,    CRI_DrawCmd=0xD3,   /*kick off for image xfer*/    CRI_ShortStrkVecXfer=0xD4,    CRI_BackClr=0xD5,    CRI_ForeClr=0xD6,    CRI_BitPlaneWtMask=0xD7,    CRI_BitPlaneRdMask=0xD8,    CRI_ClrCmp=0xD9 ,    CRI_BackAndForeMix=0xDA ,    CRI_TopLeftSciss=0xDB ,    CRI_BotRightSciss=0xDC ,    CRI_PixOrMultiCtrl=0xDD ,    CRI_MultiCtrlOrRdSelct=0xDE ,    CRI_MinorOrMajorAxisCnt=0xDF ,    CRI_GlobalBmpDesc1=0xE0 ,    CRI_GlobalBmpDesc2=0xE1 ,    CRI_BurstPriBmpDesc1=0xE2 ,    CRI_BurstPriBmpDesc2=0xE3 ,    CRI_BurstSecBmpDesc1=0xE4 ,    CRI_BurstSecBmpDesc2=0xE5,    CRI_ImageDataPort=0xF8}CtrlRegIdx;/***********************        Fog Mode************************/typedef enum{  FGM_Z_FOG,  /*Table*/  FGM_V_FOG   /*Vertex*/} FogMode;/***********************  Texture************************/typedef enum{    TAM_Wrap,    TAM_Clamp,    TAM_Mirror} TexAddressModel;typedef enum{    TFT_S3TC4Bit,    TFT_Pal8Bit565,    TFT_Pal8Bit1555,    TFT_ARGB8888,    TFT_ARGB1555,    TFT_ARGB4444,    TFT_RGB565,    TFT_Pal8Bit4444,    TFT_S3TC4A4Bit,  /*like S3TC4Bit but with 4 bit alpha*/    TFT_S3TC4CA4Bit, /*like S3TC4Bit, but with 4 bit compressed alpha*/    TFT_S3TCL4,    TFT_S3TCA4L4,    TFT_L8,    TFT_A4L4,    TFT_I8,    TFT_A8} TexFmt;typedef enum{    TPS_64,    TPS_128,    TPS_192,    TPS_256} TexPaletteSize;#define MAX_MIPMAP_LOD_BIAS 255#define MIN_MIPMAP_LOD_BIAS -255typedef enum{  TFM_Point,              /*1 TPP*/  TFM_Bilin,              /*2 TPP*/  TFM_Reserved,  TFM_Trilin             /*16 TPP*/} TexFilterMode;#define TBC_Decal       0x00850410#define TBC_Modul       0x00850011#define TBC_DecalAlpha  0x00852A04#define TBC_ModulAlpha  0x00110011#define TBC_Copy        0x00840410#define TBC_CopyAlpha   0x00900405#define TBC_NoTexMap    0x00850405#define TBC_Blend0      0x00810004#define TBC_Blend1      0x00870e02#define TBC_BlendAlpha0 0x00040004#define TBC_BlendAlpha1 TBC_Blend1#define TBC_BlendInt0   0x00040004#define TBC_BlendInt1   0x01c20e02#define TBC_AddAlpha    0x19910c11#define TBC_Add         0x18110c11#define TBC_Decal1      0x00870410#define TBC_Modul1      0x00870013#define TBC_DecalAlpha1 0x00832A00#define TBC_ModulAlpha1 0x00130013#define TBC_NoTexMap1   0x00870407#define TBC_Copy1       0x00870400#define TBC_CopyAlpha1  0x00900400#define TBC_AddAlpha1   0x19930c13#define TBC_Add1        0x18130c13/* * derived from TexBlendCtrl */typedef enum{    TBC_UseSrc,    TBC_UseTex,    TBC_TexTimesSrc,    TBC_BlendTexWithSrc} TexBlendCtrlMode;/***********************        Draw Control************************/typedef enum{    BCM_Reserved,    BCM_None,    BCM_CW,    BCM_CCW} BackfaceCullingMode;typedef enum{    SAM_Zero,    SAM_One,    SAM_DstClr,    SAM_1DstClr,    SAM_SrcAlpha,    SAM_1SrcAlpha,    SAM_DstAlpha,    SAM_1DstAlpha} SrcAlphaBlendMode;/* -1 from state*/typedef enum{    DAM_Zero,    DAM_One,    DAM_SrcClr,    DAM_1SrcClr,    DAM_SrcAlpha,    DAM_1SrcAlpha,    DAM_DstAlpha,    DAM_1DstAlpha} DstAlphaBlendMode;/* * stencil control */typedef enum{    STENCIL_Keep,    STENCIL_Zero,    STENCIL_Equal,    STENCIL_IncClamp,    STENCIL_DecClamp,    STENCIL_Invert,    STENCIL_Inc,    STENCIL_Dec} StencilOp;/****************************************************************** Bitfield Structures for Programming Interface *****************************************************************************//************************** Command Header Entry**************************/typedef struct {  /*for DrawIndexPrimitive command, vert0Idx is meaningful.*/    unsigned int vert0Idx:16;    unsigned int vertCnt:8;    unsigned int cont:1;    unsigned int type:2;   /*00=list, 01=strip, 10=fan, 11=reserved*/    unsigned int cmd:5;}Reg_DrawIndexPrimitive;typedef struct {  /*for DrawIndexPrimitive command, vert0Idx is meaningful.*/    unsigned int noW:1;    unsigned int noCd:1;    unsigned int noCs:1;    unsigned int noU:1;    unsigned int noV:1;    unsigned int noU2:1;    unsigned int noV2:1;    unsigned int reserved:9;    unsigned int vertCnt:8;    unsigned int cont:1;    unsigned int type:2;   /* 00=list, 01=strip, 10=fan, 11=reserved*/    unsigned int cmd:5;}Reg_DrawPrimitive;typedef struct {    unsigned int startRegIdx:8;    unsigned int reserved:8;    unsigned int regCnt:8;    unsigned int resvered1:1;    unsigned int lowEn:1;    unsigned int highEn:1;    unsigned int cmd:5;}Reg_SetRegister;typedef struct {    unsigned int reserved1:22;    unsigned int isPrimary:1;    unsigned int MIU_SYNC:1;    unsigned int reserved2:3;    unsigned int cmd:5;}Reg_QueuedPageFlip;typedef struct {    unsigned int reserved1:22;    unsigned int DIR:1;    unsigned int CTG:1; /*set to 0*/    unsigned int BPP:1;    unsigned int reserved2:1;    unsigned int cmd:5;}Reg_MasterImgXfer;typedef struct {    unsigned int PD:4;   /*PM=mono, PS=descriptor specified*/    unsigned int PT:1;    unsigned int SD:4;    unsigned int ST:1;    unsigned int DD:3;    unsigned int DC:2; /*DC=destination clip*/  unsigned int CS:1;  /*cs=color specified*/    unsigned int MIX3:8;    unsigned int XP:1;    unsigned int YP:1;    unsigned int LP:1;    unsigned int cmd:5;}Reg_2D;typedef struct {    unsigned int CodedBlkPattern:6;    unsigned int DCT_Type:1;    unsigned int MB_Type:2;    unsigned int MotionType:2;    unsigned int MB_Row:6;    unsigned int MB_Column:6;    unsigned int mv3:1;    unsigned int mv2:1;    unsigned int mv1:1;    unsigned int mv0:1;    unsigned int cmd:5;}Reg_MacroBlock;typedef struct {    unsigned int scanLnCnt:11;    unsigned int clkCnt:5;    unsigned int e3d:1;    unsigned int e2d:1;    unsigned int mau:1;    unsigned int veu:1;    unsigned int meuMit:1;    unsigned int meuSit:1;    unsigned int meuVx:1;    unsigned int meuMau:1;    unsigned int pageFlip:1;    unsigned int scanLn:1;    unsigned int clk:1;    unsigned int cmd:5;}Reg_Wait;typedef struct{    unsigned int reserved:27;    unsigned int cmd:5;}Reg_ScaledImgXfer  ;typedef struct{    unsigned int eventTag:16;    unsigned int reserved2:6;    unsigned int ET:1;    unsigned int INT:1;    unsigned int reserved1:3;    unsigned int cmd:5;}Reg_UpdtShadowStat;typedef union {    Reg_DrawPrimitive  vert;    Reg_DrawIndexPrimitive  vertIdx;    Reg_SetRegister    set;    Reg_QueuedPageFlip pageFlip;    Reg_MasterImgXfer  masterImgXfer;    Reg_ScaledImgXfer  scaledImgXfer;    Reg_UpdtShadowStat updtShadow;    Reg_MacroBlock     macroBlk;    Reg_2D             cmd2D;    Reg_Wait           wait;}CmdHeaderUnion;/*frank 2001/11/14 add BCI write macros*//* Registers not used in the X server */#define SAVAGE_NOP_ID           0x2094#define SAVAGE_NOP_ID_MASK        ((1<<22)-1)/* 3D instructions *//*          Draw Primitive Control */#define SAVAGE_HW_NO_Z          (1<<0)#define SAVAGE_HW_NO_W          (1<<1)#define SAVAGE_HW_NO_CD         (1<<2)#define SAVAGE_HW_NO_CS         (1<<3)#define SAVAGE_HW_NO_U0         (1<<4)#define SAVAGE_HW_NO_V0         (1<<5)#define SAVAGE_HW_NO_UV0        ((1<<4) | (1<<5))#define SAVAGE_HW_NO_U1         (1<<6)#define SAVAGE_HW_NO_V1         (1<<7)#define SAVAGE_HW_NO_UV1        ((1<<6) | (1<<7))#define SAVAGE_HW_SKIPFLAGS     0x000000ff#endif

⌨️ 快捷键说明

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