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

📄 savage_3d_reg.h

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 H
📖 第 1 页 / 共 2 页
字号:
/* This reg exists only on Savage3D. */typedef union{    struct    {        unsigned scissorXStart : 11;	unsigned reserved1     : 5;        unsigned scissorYStart : 11;	unsigned reserved2     : 5;    } ni;    u_int32_t ui;} savageRegScissorsStart;/* This reg exists only on Savage3D. */typedef union{    struct    {        unsigned scissorXEnd : 11;	unsigned reserved1   : 5;        unsigned scissorYEnd : 11;	unsigned reserved2   : 5;    } ni;    u_int32_t ui;} savageRegScissorsEnd;/******************************** Address Registers**********************************//* I havn't found a Savage3D equivalent of this reg in the Utah-driver.  * But Tim Roberts claims that the Savage3D supports DMA vertex and * command buffers. */typedef union{    struct    {        unsigned isSys    : 1;        unsigned isAGP    : 1;        unsigned reserved : 1;        unsigned addr     : 29; /*quad word aligned*/    }ni;    u_int32_t ui;} savageRegVertBufAddr;/* I havn't found a Savage3D equivalent of this reg in the Utah-driver.  * But Tim Roberts claims that the Savage3D supports DMA vertex and * command buffers. */typedef union{    struct    {        unsigned isSys    : 1;        unsigned isAGP    : 1;        unsigned reserved : 1;        unsigned addr     : 29; /*4-quad word aligned*/    }ni;    u_int32_t ui;} savageRegDMABufAddr;/******************************** H/W Debug Registers**********************************//* The layout of this reg is the same on Savage4 and Savage3D. */typedef union{    struct    {        unsigned y01        : 1;        unsigned y12        : 1;        unsigned y20        : 1;        unsigned u01        : 1;        unsigned u12        : 1;        unsigned u20        : 1;        unsigned v01        : 1;        unsigned v12        : 1;        unsigned v20        : 1;        unsigned cullEn     : 1;        unsigned cullOrient : 1;        unsigned loadNewTex : 1;        unsigned loadNewPal : 1;        unsigned doDSetup   : 1;        unsigned reserved   : 17;        unsigned kickOff    : 1;    }ni;    u_int32_t ui;} savageRegFlag;/******************************** Z Buffer Registers -- Global**********************************//* The layout of this reg differs between Savage4 and Savage3D. */typedef union{    struct    {        unsigned zCmpFunc      : 3;        unsigned reserved1     : 2;        unsigned zBufEn        : 1;        unsigned reserved2     : 1;        unsigned zExpOffset    : 8;        unsigned reserved3     : 1;        unsigned stencilRefVal : 8;        unsigned autoZEnable   : 1;        unsigned frameID       : 1;        unsigned reserved4     : 4;        unsigned floatZEn      : 1;        unsigned wToZEn        : 1;    }ni;    u_int32_t ui;} savageRegZBufCtrl_s4;typedef union{    struct {        unsigned zCmpFunc         : 3;        unsigned drawUpdateEn     : 1;        unsigned zUpdateEn        : 1;        unsigned zBufEn           : 1;        /**	 * We suspect that, in conjunction with	 * \c savageRegZBufOffset::zDepthSelect, these 2 bits are actually	 * \c stencilUpdateEn and \c stencilBufEn.  If not, then some of	 * the bits in \c reserved2 may fulfill that purpose.	 */        unsigned reserved1        : 2;        unsigned zExpOffset       : 8;        unsigned wrZafterAlphaTst : 1;        unsigned reserved2        : 15;    }ni;    u_int32_t ui;} savageRegZBufCtrl_s3d;/* The layout of this reg on Savage4 and Savage3D is very similar. */typedef union{    struct    {	/* In the Utah-Driver the offset is defined as 13-bit, 2k-aligned. */        unsigned offset           : 14;        unsigned reserved         : 11; /* 12-bits in Utah-driver */        unsigned zBufWidthInTiles : 6;               /**	 * 0 selects 16-bit depth buffer.  On Savage4 hardware, 1 selects	 * 24-bit depth buffer (with 8-bits for stencil).  Though it has never	 * been tried, we suspect that on Savage3D hardware, 1 selects 15-bit	 * depth buffer (with 1-bit for stencil).	 */        unsigned zDepthSelect     : 1;    }ni;    u_int32_t ui;} savageRegZBufOffset;/* The layout of this reg is the same on Savage4 and Savage3D. */typedef union{    struct    {        unsigned rLow      : 6;        unsigned reserved1 : 2;        unsigned rHigh     : 6;        unsigned reserved2 : 2;        unsigned wLow      : 6;        unsigned reserved3 : 2;        unsigned wHigh     : 6;        unsigned reserved4 : 2;    }ni;    u_int32_t ui;} savageRegZWatermarks;/******************************** Fog Registers -- Global**********************************//* The layout of this reg is the same on Savage4 and Savage3D. */typedef union{    struct    {        unsigned fogClr      : 24;        unsigned expShift    : 3;        unsigned reserved    : 1;        unsigned fogEn       : 1;        unsigned fogMode     : 1;        unsigned fogEndShift : 2;    }ni;    u_int32_t ui;} savageRegFogCtrl;/*not in spec, but tempo for pp and driver*/typedef union{    struct    {        unsigned fogDensity : 16;        unsigned fogStart   : 16;    }ni;    u_int32_t ui;} savageRegFogParam;/************************************** Destination Buffer Registers -- Global***************************************//* The layout of this reg on Savage4 and Savage3D are very similar. */typedef union{    struct    {        unsigned dstWidthInTile :  7;        unsigned reserved       :  1;	/* In the Utah-Driver the offset is defined as 13-bit, 2k-aligned. */        unsigned offset         : 14;        unsigned reserved1      :  7;	/* antiAliasMode does not exist in the Utah-driver. But it includes the	 * high bit of this in the destPixFmt. However, only values 0 and 2	 * are used as dstPixFmt, so antiAliasMode is effectively always 0	 * in the Utah-driver. In other words, treat as reserved on Savage3D.*/        unsigned antiAliasMode  :  2;        unsigned dstPixFmt      :  1;    }ni;    u_int32_t ui;} savageRegDestCtrl;/* The layout of this reg on Savage4 and Savage3D are very similar. */typedef union{    struct    {        unsigned destReadLow   : 6;        unsigned destReadHigh  : 6;        unsigned destWriteLow  : 6;        unsigned destWriteHigh : 6;        unsigned texRead       : 4;        unsigned reserved4     : 2;	/* The Utah-driver calls this pixel FIFO length:	 * 00 - 240, 01 - 180, 10 - 120, 11 - 60	 * However, it is not used in either driver. */        unsigned destFlush     : 2;    }ni;    u_int32_t ui;} savageRegDestTexWatermarks;/* Savage4/Twister/ProSavage register BCI addresses */#define SAVAGE_DRAWLOCALCTRL_S4       0x1e#define SAVAGE_TEXPALADDR_S4          0x1f#define SAVAGE_TEXCTRL0_S4            0x20#define SAVAGE_TEXCTRL1_S4            0x21#define SAVAGE_TEXADDR0_S4            0x22#define SAVAGE_TEXADDR1_S4            0x23#define SAVAGE_TEXBLEND0_S4           0x24#define SAVAGE_TEXBLEND1_S4           0x25#define SAVAGE_TEXXPRCLR_S4           0x26 /* never used */#define SAVAGE_TEXDESCR_S4            0x27#define SAVAGE_FOGTABLE_S4            0x28#define SAVAGE_FOGCTRL_S4             0x30#define SAVAGE_STENCILCTRL_S4         0x31#define SAVAGE_ZBUFCTRL_S4            0x32#define SAVAGE_ZBUFOFF_S4             0x33#define SAVAGE_DESTCTRL_S4            0x34#define SAVAGE_DRAWCTRLGLOBAL0_S4     0x35#define SAVAGE_DRAWCTRLGLOBAL1_S4     0x36#define SAVAGE_ZWATERMARK_S4          0x37#define SAVAGE_DESTTEXRWWATERMARK_S4  0x38#define SAVAGE_TEXBLENDCOLOR_S4       0x39/* Savage3D/MX/IC register BCI addresses */#define SAVAGE_TEXPALADDR_S3D         0x18#define SAVAGE_TEXXPRCLR_S3D          0x19 /* never used */#define SAVAGE_TEXADDR_S3D            0x1A#define SAVAGE_TEXDESCR_S3D           0x1B#define SAVAGE_TEXCTRL_S3D            0x1C#define SAVAGE_FOGTABLE_S3D           0x20#define SAVAGE_FOGCTRL_S3D            0x30#define SAVAGE_DRAWCTRL_S3D           0x31#define SAVAGE_ZBUFCTRL_S3D           0x32#define SAVAGE_ZBUFOFF_S3D            0x33#define SAVAGE_DESTCTRL_S3D           0x34#define SAVAGE_SCSTART_S3D            0x35#define SAVAGE_SCEND_S3D              0x36#define SAVAGE_ZWATERMARK_S3D         0x37 #define SAVAGE_DESTTEXRWWATERMARK_S3D 0x38#define SAVAGE_FIRST_REG 0x18#define SAVAGE_NR_REGS   34typedef struct savage_registers_s4_t {    u_int32_t                   unused1[6];        /* 0x18-0x1d */    savageRegDrawLocalCtrl     drawLocalCtrl;     /* 0x1e */    savageRegTexPalAddr        texPalAddr;        /* 0x1f */    savageRegTexCtrl_s4        texCtrl[2];        /* 0x20, 0x21 */    savageRegTexAddr           texAddr[2];        /* 0x22, 0x23 */    savageRegTexBlendCtrl      texBlendCtrl[2];   /* 0x24, 0x25 */    savageRegTexXprClr         texXprClr;         /* 0x26 */    savageRegTexDescr_s4       texDescr;          /* 0x27 */    u_int8_t                   fogTable[32];      /* 0x28-0x2f (8dwords) */    savageRegFogCtrl           fogCtrl;           /* 0x30 */    savageRegStencilCtrl       stencilCtrl;       /* 0x31 */    savageRegZBufCtrl_s4       zBufCtrl;          /* 0x32 */    savageRegZBufOffset        zBufOffset;        /* 0x33 */    savageRegDestCtrl          destCtrl;          /* 0x34 */    savageRegDrawCtrl0         drawCtrl0;         /* 0x35 */    savageRegDrawCtrl1         drawCtrl1;         /* 0x36 */    savageRegZWatermarks       zWatermarks;       /* 0x37 */    savageRegDestTexWatermarks destTexWatermarks; /* 0x38 */    savageRegTexBlendColor     texBlendColor;     /* 0x39 */} savageRegistersS4;typedef struct savage_registers_s3d_t {    savageRegTexPalAddr        texPalAddr;        /* 0x18 */    savageRegTexXprClr         texXprClr;         /* 0x19 */    savageRegTexAddr           texAddr;           /* 0x1a */    savageRegTexDescr_s3d      texDescr;          /* 0x1b */    savageRegTexCtrl_s3d       texCtrl;           /* 0x1c */    u_int32_t                  unused1[3];        /* 0x1d-0x1f */    u_int8_t                   fogTable[64];      /* 0x20-0x2f (16dwords) */    savageRegFogCtrl           fogCtrl;           /* 0x30 */    savageRegDrawCtrl          drawCtrl;          /* 0x31 */    savageRegZBufCtrl_s3d      zBufCtrl;          /* 0x32 */    savageRegZBufOffset        zBufOffset;        /* 0x33 */    savageRegDestCtrl          destCtrl;          /* 0x34 */    savageRegScissorsStart     scissorsStart;     /* 0x35 */    savageRegScissorsEnd       scissorsEnd;       /* 0x36 */    savageRegZWatermarks       zWatermarks;       /* 0x37 */    savageRegDestTexWatermarks destTexWatermarks; /* 0x38 */    u_int32_t                   unused2;           /* 0x39 */} savageRegistersS3D;typedef union savage_registers_t {    savageRegistersS4  s4;    savageRegistersS3D s3d;    u_int32_t           ui[SAVAGE_NR_REGS];} savageRegisters;#define DV_PF_555           (0x1<<8)#define DV_PF_565           (0x2<<8)#define DV_PF_8888          (0x4<<8)#define SAVAGEPACKCOLORA4L4(l,a) \  ((l >> 4) | (a & 0xf0))#define SAVAGEPACKCOLOR4444(r,g,b,a) \  ((((a) & 0xf0) << 8) | (((r) & 0xf0) << 4) | ((g) & 0xf0) | ((b) >> 4))#define SAVAGEPACKCOLOR1555(r,g,b,a) \  ((((r) & 0xf8) << 7) | (((g) & 0xf8) << 2) | (((b) & 0xf8) >> 3) | \    ((a) ? 0x8000 : 0))#define SAVAGEPACKCOLOR8888(r,g,b,a) \  (((a) << 24) | ((r) << 16) | ((g) << 8) | (b))#define SAVAGEPACKCOLOR565(r,g,b) \  ((((r) & 0xf8) << 8) | (((g) & 0xfc) << 3) | (((b) & 0xf8) >> 3))#endif

⌨️ 快捷键说明

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