172b676d7Smrg/*
272b676d7Smrg * 2D Acceleration for SiS 530, 620, 300, 540, 630, 730.
372b676d7Smrg * Definitions for the SIS engine communication
472b676d7Smrg *
572b676d7Smrg * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria
672b676d7Smrg *
772b676d7Smrg * Redistribution and use in source and binary forms, with or without
872b676d7Smrg * modification, are permitted provided that the following conditions
972b676d7Smrg * are met:
1072b676d7Smrg * 1) Redistributions of source code must retain the above copyright
1172b676d7Smrg *    notice, this list of conditions and the following disclaimer.
1272b676d7Smrg * 2) Redistributions in binary form must reproduce the above copyright
1372b676d7Smrg *    notice, this list of conditions and the following disclaimer in the
1472b676d7Smrg *    documentation and/or other materials provided with the distribution.
1572b676d7Smrg * 3) The name of the author may not be used to endorse or promote products
1672b676d7Smrg *    derived from this software without specific prior written permission.
1772b676d7Smrg *
1872b676d7Smrg * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1972b676d7Smrg * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
2072b676d7Smrg * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
2172b676d7Smrg * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
2272b676d7Smrg * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2372b676d7Smrg * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2472b676d7Smrg * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2572b676d7Smrg * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2672b676d7Smrg * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
2772b676d7Smrg * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2872b676d7Smrg *
2972b676d7Smrg * Authors:   Thomas Winischhofer <thomas@winischhofer.net>
3072b676d7Smrg *	      Can-Ru Yeou, SiS Inc. (code base)
3172b676d7Smrg *
3272b676d7Smrg */
3372b676d7Smrg
3472b676d7Smrg#define PATREGSIZE      384  /* Pattern register size. 384 bytes @ 0x8300 */
3572b676d7Smrg#define BR(x)   (0x8200 | (x) << 2)
3672b676d7Smrg#define PBR(x)  (0x8300 | (x) << 2)
3772b676d7Smrg
3872b676d7Smrg/* SiS300 engine commands */
3972b676d7Smrg#define BITBLT                  0x00000000  /* Blit */
4072b676d7Smrg#define COLOREXP                0x00000001  /* Color expand */
4172b676d7Smrg#define ENCOLOREXP              0x00000002  /* Enhanced color expand */
4272b676d7Smrg#define MULTIPLE_SCANLINE       0x00000003  /* ? */
4372b676d7Smrg#define LINE                    0x00000004  /* Draw line */
4472b676d7Smrg#define TRAPAZOID_FILL          0x00000005  /* Fill trapezoid */
4572b676d7Smrg#define TRANSPARENT_BITBLT      0x00000006  /* Transparent Blit */
4672b676d7Smrg
4772b676d7Smrg/* source select */
4872b676d7Smrg#define SRCVIDEO                0x00000000  /* source is video RAM */
4972b676d7Smrg#define SRCSYSTEM               0x00000010  /* source is system memory */
5072b676d7Smrg#define SRCCPUBLITBUF           SRCSYSTEM   /* source is CPU-driven BitBuffer (for color expand) */
5172b676d7Smrg#define SRCAGP                  0x00000020  /* source is AGP memory (?) */
5272b676d7Smrg
5372b676d7Smrg/* Pattern flags */
5472b676d7Smrg#define PATFG                   0x00000000  /* foreground color */
5572b676d7Smrg#define PATPATREG               0x00000040  /* pattern in pattern buffer (0x8300) */
5672b676d7Smrg#define PATMONO                 0x00000080  /* mono pattern */
5772b676d7Smrg
5872b676d7Smrg/* blitting direction */
5972b676d7Smrg#define X_INC                   0x00010000
6072b676d7Smrg#define X_DEC                   0x00000000
6172b676d7Smrg#define Y_INC                   0x00020000
6272b676d7Smrg#define Y_DEC                   0x00000000
6372b676d7Smrg
6472b676d7Smrg/* Clipping flags */
6572b676d7Smrg#define NOCLIP                  0x00000000
6672b676d7Smrg#define NOMERGECLIP             0x04000000
6772b676d7Smrg#define CLIPENABLE              0x00040000
6872b676d7Smrg#define CLIPWITHOUTMERGE        0x04040000
6972b676d7Smrg
7072b676d7Smrg/* Transparency */
7172b676d7Smrg#define OPAQUE                  0x00000000
7272b676d7Smrg#define TRANSPARENT             0x00100000
7372b676d7Smrg
7472b676d7Smrg/* Trapezoid */
7572b676d7Smrg#define T_XISMAJORL             0x00800000  /* X axis is driving axis (left) */
7672b676d7Smrg#define T_XISMAJORR             0x01000000  /* X axis is driving axis (right) */
7772b676d7Smrg#define T_L_Y_INC               Y_INC       /* left edge direction Y */
7872b676d7Smrg#define T_L_X_INC               X_INC       /* left edge direction X */
7972b676d7Smrg#define T_R_Y_INC               0x00400000  /* right edge direction Y */
8072b676d7Smrg#define T_R_X_INC               0x00200000  /* right edge direction X */
8172b676d7Smrg
8272b676d7Smrg/* ? */
8372b676d7Smrg#define DSTAGP                  0x02000000
8472b676d7Smrg#define DSTVIDEO                0x02000000
8572b676d7Smrg
8672b676d7Smrg/* Line */
8772b676d7Smrg#define LINE_STYLE              0x00800000
8872b676d7Smrg#define NO_RESET_COUNTER        0x00400000
8972b676d7Smrg#define NO_LAST_PIXEL           0x00200000
9072b676d7Smrg
9172b676d7Smrg
9272b676d7Smrg/* Macros to do useful things with the SIS BitBLT engine */
9372b676d7Smrg
9472b676d7Smrg/* BR(16) (0x8240):
9572b676d7Smrg
9672b676d7Smrg   bit 31 2D engine: 1 is idle,
9772b676d7Smrg   bit 30 3D engine: 1 is idle,
9872b676d7Smrg   bit 29 Command queue: 1 is empty
9972b676d7Smrg
10072b676d7Smrg   bits 28:24: Current CPU driven BitBlt buffer stage bit[4:0]
10172b676d7Smrg
10272b676d7Smrg   bits 15:0:  Current command queue length (530/620: 12:0)
10372b676d7Smrg
10472b676d7Smrg*/
10572b676d7Smrg
10672b676d7Smrg/* BR(16)+2 = 0x8242 */
10772b676d7Smrg
10872b676d7Smrg/* As sis_dri.c relocated the cmd-q len to the sarea, don't use it directly here */
10972b676d7Smrg/* #define CmdQueLen pSiS->cmdQueueLen */
11072b676d7Smrg#define CmdQueLen (*(pSiS->cmdQueueLenPtr))
11172b676d7Smrg
11272b676d7Smrg#define SiSIdle \
11372b676d7Smrg  { \
11472b676d7Smrg  while( (SIS_MMIO_IN16(pSiS->IOBase, BR(16)+2) & 0xE000) != 0xE000){}; \
11572b676d7Smrg  while( (SIS_MMIO_IN16(pSiS->IOBase, BR(16)+2) & 0xE000) != 0xE000){}; \
11672b676d7Smrg  while( (SIS_MMIO_IN16(pSiS->IOBase, BR(16)+2) & 0xE000) != 0xE000){}; \
11772b676d7Smrg  CmdQueLen = (SIS_MMIO_IN16(pSiS->IOBase, 0x8240) & pSiS->CmdQueLenMask) - pSiS->CmdQueLenFix; \
11872b676d7Smrg  }
11972b676d7Smrg/* (do three times, because 2D engine seems quite unsure about whether or not it's idle) */
12072b676d7Smrg
12172b676d7Smrg#define SiSSetupSRCBase(base) \
12272b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
12372b676d7Smrg                SIS_MMIO_OUT32(pSiS->IOBase, BR(0), base);\
12472b676d7Smrg                CmdQueLen--;
12572b676d7Smrg
12672b676d7Smrg#define SiSSetupSRCPitch(pitch) \
12772b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
12872b676d7Smrg                SIS_MMIO_OUT16(pSiS->IOBase, BR(1), pitch);\
12972b676d7Smrg                CmdQueLen--;
13072b676d7Smrg
13172b676d7Smrg#define SiSSetupSRCXY(x,y) \
13272b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
1339fb9d7ebSjoerg                SIS_MMIO_OUT32(pSiS->IOBase, BR(2), (CARD32)(x)<<16 | (CARD32)(y) );\
13472b676d7Smrg                CmdQueLen--;
13572b676d7Smrg
13672b676d7Smrg#define SiSSetupDSTBase(base) \
13772b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
13872b676d7Smrg                SIS_MMIO_OUT32(pSiS->IOBase, BR(4), base);\
13972b676d7Smrg                CmdQueLen--;
14072b676d7Smrg
14172b676d7Smrg#define SiSSetupDSTXY(x,y) \
14272b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
1439fb9d7ebSjoerg                SIS_MMIO_OUT32(pSiS->IOBase, BR(3), (CARD32)(x)<<16 | (CARD32)(y) );\
14472b676d7Smrg                CmdQueLen--;
14572b676d7Smrg
14672b676d7Smrg#define SiSSetupDSTRect(x,y) \
14772b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
1489fb9d7ebSjoerg                SIS_MMIO_OUT32(pSiS->IOBase, BR(5), (CARD32)(y)<<16 | (CARD32)(x) );\
14972b676d7Smrg                CmdQueLen--;
15072b676d7Smrg
15172b676d7Smrg#define SiSSetupDSTColorDepth(bpp) \
15272b676d7Smrg                if(pSiS->VGAEngine != SIS_530_VGA) { \
15372b676d7Smrg                  if (CmdQueLen <= 0)  SiSIdle;\
15472b676d7Smrg                  SIS_MMIO_OUT16(pSiS->IOBase, BR(1)+2, bpp);\
15572b676d7Smrg                  CmdQueLen--; \
15672b676d7Smrg		}
15772b676d7Smrg
15872b676d7Smrg#define SiSSetupRect(w,h) \
15972b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
1609fb9d7ebSjoerg                SIS_MMIO_OUT32(pSiS->IOBase, BR(6), (CARD32)(h)<<16 | (CARD32)(w) );\
16172b676d7Smrg                CmdQueLen--;
16272b676d7Smrg
16372b676d7Smrg#define SiSSetupPATFG(color) \
16472b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
16572b676d7Smrg                SIS_MMIO_OUT32(pSiS->IOBase, BR(7), color);\
16672b676d7Smrg                CmdQueLen--;
16772b676d7Smrg
16872b676d7Smrg#define SiSSetupPATBG(color) \
16972b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
17072b676d7Smrg                SIS_MMIO_OUT32(pSiS->IOBase, BR(8), color);\
17172b676d7Smrg                CmdQueLen--;
17272b676d7Smrg
17372b676d7Smrg#define SiSSetupSRCFG(color) \
17472b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
17572b676d7Smrg                SIS_MMIO_OUT32(pSiS->IOBase, BR(9), color);\
17672b676d7Smrg                CmdQueLen--;
17772b676d7Smrg
17872b676d7Smrg#define SiSSetupSRCBG(color) \
17972b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
18072b676d7Smrg                SIS_MMIO_OUT32(pSiS->IOBase, BR(10), color);\
18172b676d7Smrg                CmdQueLen--;
18272b676d7Smrg
18372b676d7Smrg/* 0x8224 src colorkey high */
18472b676d7Smrg/* 0x8228 src colorkey low */
18572b676d7Smrg/* 0x821c dest colorkey high */
18672b676d7Smrg/* 0x8220 dest colorkey low */
18772b676d7Smrg#define SiSSetupSRCTrans(color) \
18872b676d7Smrg                if (CmdQueLen <= 1)  SiSIdle;\
18972b676d7Smrg                SIS_MMIO_OUT32(pSiS->IOBase, 0x8224, color);\
19072b676d7Smrg		SIS_MMIO_OUT32(pSiS->IOBase, 0x8228, color);\
19172b676d7Smrg		CmdQueLen -= 2;
19272b676d7Smrg
19372b676d7Smrg#define SiSSetupDSTTrans(color) \
19472b676d7Smrg		if (CmdQueLen <= 1)  SiSIdle;\
19572b676d7Smrg		SIS_MMIO_OUT32(pSiS->IOBase, 0x821C, color); \
19672b676d7Smrg		SIS_MMIO_OUT32(pSiS->IOBase, 0x8220, color); \
19772b676d7Smrg                CmdQueLen -= 2;
19872b676d7Smrg
19972b676d7Smrg#define SiSSetupMONOPAT(p0,p1) \
20072b676d7Smrg                if (CmdQueLen <= 1)  SiSIdle;\
20172b676d7Smrg                SIS_MMIO_OUT32(pSiS->IOBase, BR(11), p0);\
20272b676d7Smrg                SIS_MMIO_OUT32(pSiS->IOBase, BR(12), p1);\
20372b676d7Smrg                CmdQueLen -= 2;
20472b676d7Smrg
20572b676d7Smrg#define SiSSetupClipLT(left,top) \
20672b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
2079fb9d7ebSjoerg                SIS_MMIO_OUT32(pSiS->IOBase, BR(13), ((left) & 0xFFFF) | (CARD32)(top)<<16 );\
20872b676d7Smrg                CmdQueLen--;
20972b676d7Smrg
21072b676d7Smrg#define SiSSetupClipRB(right,bottom) \
21172b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
2129fb9d7ebSjoerg                SIS_MMIO_OUT32(pSiS->IOBase, BR(14), ((right) & 0xFFFF) | (CARD32)(bottom)<<16 );\
21372b676d7Smrg                CmdQueLen--;
21472b676d7Smrg
21572b676d7Smrg/* General */
21672b676d7Smrg#define SiSSetupROP(rop) \
21772b676d7Smrg                pSiS->CommandReg = (rop) << 8;
21872b676d7Smrg
21972b676d7Smrg#define SiSSetupCMDFlag(flags) \
22072b676d7Smrg                pSiS->CommandReg |= (flags);
22172b676d7Smrg
22272b676d7Smrg#define SiSDoCMD \
22372b676d7Smrg                if (CmdQueLen <= 1)  SiSIdle;\
22472b676d7Smrg                SIS_MMIO_OUT32(pSiS->IOBase, BR(15), pSiS->CommandReg); \
22572b676d7Smrg		CmdQueLen--; \
22672b676d7Smrg		if(pSiS->VGAEngine != SIS_530_VGA) { \
22772b676d7Smrg                   SIS_MMIO_OUT32(pSiS->IOBase, BR(16), 0);\
22872b676d7Smrg                   CmdQueLen--; \
22972b676d7Smrg		} else { \
23072b676d7Smrg		   unsigned long temp; \
23172b676d7Smrg		   temp = SIS_MMIO_IN32(pSiS->IOBase, BR(16)); \
23272b676d7Smrg		   (void) temp; \
23372b676d7Smrg		} \
23472b676d7Smrg
23572b676d7Smrg/* Line */
23672b676d7Smrg#define SiSSetupX0Y0(x,y) \
23772b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
2389fb9d7ebSjoerg                SIS_MMIO_OUT32(pSiS->IOBase, BR(2), (CARD32)(y)<<16 | (CARD32)(x) );\
23972b676d7Smrg                CmdQueLen--;
24072b676d7Smrg
24172b676d7Smrg#define SiSSetupX1Y1(x,y) \
24272b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
2439fb9d7ebSjoerg                SIS_MMIO_OUT32(pSiS->IOBase, BR(3), (CARD32)(y)<<16 | (CARD32)(x) );\
24472b676d7Smrg                CmdQueLen--;
24572b676d7Smrg
24672b676d7Smrg#define SiSSetupLineCount(c) \
24772b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
24872b676d7Smrg                SIS_MMIO_OUT16(pSiS->IOBase, BR(6), c);\
24972b676d7Smrg                CmdQueLen--;
25072b676d7Smrg
25172b676d7Smrg#define SiSSetupStylePeriod(p) \
25272b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
25372b676d7Smrg                SIS_MMIO_OUT16(pSiS->IOBase, BR(6)+2, p);\
25472b676d7Smrg                CmdQueLen--;
25572b676d7Smrg
25672b676d7Smrg#define SiSSetupStyleLow(ls) \
25772b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
25872b676d7Smrg                SIS_MMIO_OUT32(pSiS->IOBase, BR(11), ls);\
25972b676d7Smrg                CmdQueLen--;
26072b676d7Smrg
26172b676d7Smrg#define SiSSetupStyleHigh(ls) \
26272b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
26372b676d7Smrg                SIS_MMIO_OUT32(pSiS->IOBase, BR(12), ls);\
26472b676d7Smrg                CmdQueLen--;
26572b676d7Smrg
26672b676d7Smrg/* Trapezoid */
26772b676d7Smrg#define SiSSetupYH(y,h) \
26872b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
2699fb9d7ebSjoerg                SIS_MMIO_OUT32(pSiS->IOBase, 0x8208, (CARD32)(y)<<16 | (CARD32)(h) );\
27072b676d7Smrg                CmdQueLen--;
27172b676d7Smrg
27272b676d7Smrg#define SiSSetupLR(left,right) \
27372b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
2749fb9d7ebSjoerg                SIS_MMIO_OUT32(pSiS->IOBase, 0x820C, (CARD32)(right)<<16 | (CARD32)(left) );\
27572b676d7Smrg                CmdQueLen--;
27672b676d7Smrg
27772b676d7Smrg#define SiSSetupdL(dxL,dyL) \
27872b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
2799fb9d7ebSjoerg                SIS_MMIO_OUT32(pSiS->IOBase, 0x8244, (CARD32)(dyL)<<16 | (CARD32)(dxL) );\
28072b676d7Smrg                CmdQueLen--;
28172b676d7Smrg
28272b676d7Smrg#define SiSSetupdR(dxR,dyR) \
28372b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
2849fb9d7ebSjoerg		SIS_MMIO_OUT32(pSiS->IOBase, 0x8248, (CARD32)(dyR)<<16 | (CARD32)(dxR) );\
28572b676d7Smrg                CmdQueLen--;
28672b676d7Smrg
28772b676d7Smrg#define SiSSetupEL(eL) \
28872b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
28972b676d7Smrg		SIS_MMIO_OUT32(pSiS->IOBase, 0x824C, eL);\
29072b676d7Smrg		CmdQueLen--;
29172b676d7Smrg
29272b676d7Smrg#define SiSSetupER(eR) \
29372b676d7Smrg                if (CmdQueLen <= 0)  SiSIdle;\
29472b676d7Smrg                SIS_MMIO_OUT32(pSiS->IOBase, 0x8250, eR);\
29572b676d7Smrg                CmdQueLen--;
29672b676d7Smrg
29772b676d7Smrg
29872b676d7Smrg/* Set Pattern register */
29972b676d7Smrg#define SiSSetPattern(num, value) \
30072b676d7Smrg      if (CmdQueLen <= 0)  SiSIdle; \
30172b676d7Smrg      SIS_MMIO_OUT32(pSiS->IOBase, (PATTERN_REG + (num * 4)), value); \
30272b676d7Smrg      CmdQueLen--;
30372b676d7Smrg
30472b676d7Smrg
30572b676d7Smrg/* 3D stuff (used for RENDER) */
30672b676d7Smrg
30772b676d7Smrg/*
30872b676d7Smrg * Register Addresses of 300/630/730/(540?)
30972b676d7Smrg */
31072b676d7Smrg#define REG_3D_TSFSa                    0x8800
31172b676d7Smrg#define REG_3D_TSZa                     0x8804
31272b676d7Smrg#define REG_3D_TSXa                     0x8808
31372b676d7Smrg#define REG_3D_TSYa                     0x880C
31472b676d7Smrg#define REG_3D_TSARGBa                  0x8810
31572b676d7Smrg#define REG_3D_TSWGa                    0x8814
31672b676d7Smrg#define REG_3D_TSUAa                    0x8818
31772b676d7Smrg#define REG_3D_TSVAa                    0x881C
31872b676d7Smrg#define REG_3D_TSUBa                    0x8820
31972b676d7Smrg#define REG_3D_TSVBa                    0x8824
32072b676d7Smrg#define REG_3D_TSUCa                    0x8828
32172b676d7Smrg#define REG_3D_TSVCa                    0x882C
32272b676d7Smrg
32372b676d7Smrg#define REG_3D_TSFSb                    0x8830
32472b676d7Smrg#define REG_3D_TSZb                     0x8834
32572b676d7Smrg#define REG_3D_TSXb                     0x8838
32672b676d7Smrg#define REG_3D_TSYb                     0x883C
32772b676d7Smrg#define REG_3D_TSARGBb                  0x8840
32872b676d7Smrg#define REG_3D_TSWGb                    0x8844
32972b676d7Smrg#define REG_3D_TSUAb                    0x8848
33072b676d7Smrg#define REG_3D_TSVAb                    0x884C
33172b676d7Smrg#define REG_3D_TSUBb                    0x8850
33272b676d7Smrg#define REG_3D_TSVBb                    0x8854
33372b676d7Smrg#define REG_3D_TSUCb                    0x8858
33472b676d7Smrg#define REG_3D_TSVCb                    0x885C
33572b676d7Smrg
33672b676d7Smrg#define REG_3D_TSFSc                    0x8860
33772b676d7Smrg#define REG_3D_TSZc                     0x8864
33872b676d7Smrg#define REG_3D_TSXc                     0x8868
33972b676d7Smrg#define REG_3D_TSYc                     0x886C
34072b676d7Smrg#define REG_3D_TSARGBc                  0x8870
34172b676d7Smrg#define REG_3D_TSWGc                    0x8874
34272b676d7Smrg#define REG_3D_TSUAc                    0x8878
34372b676d7Smrg#define REG_3D_TSVAc                    0x887C
34472b676d7Smrg#define REG_3D_TSUBc                    0x8880
34572b676d7Smrg#define REG_3D_TSVBc                    0x8884
34672b676d7Smrg#define REG_3D_TSUCc                    0x8888
34772b676d7Smrg#define REG_3D_TSVCc                    0x888C
34872b676d7Smrg
34972b676d7Smrg/*
35072b676d7Smrg * REG_3D_AGPCmdSetting (89e4h-89f7)
35172b676d7Smrg */
35272b676d7Smrg#define REG_3D_AGPCmBase                0x89E4
35372b676d7Smrg#define REG_3D_AGPRmDwNum               0x89E8
35472b676d7Smrg#define REG_3D_AGPTtDwNum               0x89EC
35572b676d7Smrg#define REG_3D_AGPCmFire                0x89F0
35672b676d7Smrg
35772b676d7Smrg#define REG_3D_ParsingSet               0x89F4
35872b676d7Smrg#define REG_3D_PrimitiveSet             0x89F8
35972b676d7Smrg#define REG_3D_ShadeMode                0x89F8
36072b676d7Smrg#define REG_3D_EngineFire               0x89FC
36172b676d7Smrg#define REG_3D_EngineStatus             0x89FC
36272b676d7Smrg#define REG_3D_TEnable                  0x8A00
36372b676d7Smrg#define REG_3D_TEnable2                 0x8A04
36472b676d7Smrg
36572b676d7Smrg#define REG_3D_ZSet                     0x8A08
36672b676d7Smrg#define REG_3D_ZBias                    0x8A0C
36772b676d7Smrg#define REG_3D_ZStWriteMask             0x8A10
36872b676d7Smrg
36972b676d7Smrg#define REG_3D_ZAddress                 0x8A14
37072b676d7Smrg#define REG_3D_AlphaSet                 0x8A18
37172b676d7Smrg#define REG_3D_AlphaAddress             0x8A1C
37272b676d7Smrg#define REG_3D_DstSet                   0x8A20
37372b676d7Smrg#define REG_3D_DstAlphaWriteMask        0x8A24
37472b676d7Smrg
37572b676d7Smrg#define REG_3D_DstAddress               0x8A28
37672b676d7Smrg
37772b676d7Smrg#define REG_3D_LinePattern              0x8A2C
37872b676d7Smrg
37972b676d7Smrg#define REG_3D_FogSet                   0x8A30
38072b676d7Smrg
38172b676d7Smrg#define REG_3D_FogFarDistance           0x8A34
38272b676d7Smrg#define REG_3D_FogInverseDistance       0x8A38
38372b676d7Smrg#define REG_3D_FogFactorDensity         0x8A3C
38472b676d7Smrg
38572b676d7Smrg#define REG_3D_StencilSet               0x8A44
38672b676d7Smrg#define REG_3D_StencilSet2              0x8A48
38772b676d7Smrg#define REG_3D_StencilAddress           0x8A4C
38872b676d7Smrg
38972b676d7Smrg#define REG_3D_DstBlendMode             0x8A50
39072b676d7Smrg#define REG_3D_SrcBlendMode             0x8A50
39172b676d7Smrg#define REG_3D_ClipTopBottom            0x8A54
39272b676d7Smrg#define REG_3D_ClipLeftRight            0x8A58
39372b676d7Smrg
39472b676d7Smrg#define REG_3D_Brightness               0x8A5C
39572b676d7Smrg
39672b676d7Smrg#define REG_3D_BumpMapSet               0x8A68
39772b676d7Smrg#define REG_3D_BumpMapAddress           0x8A6C
39872b676d7Smrg#define REG_3D_BumpMapPitch             0x8A70
39972b676d7Smrg#define REG_3D_BumpMapMatrix0           0x8A74
40072b676d7Smrg#define REG_3D_BumpMapMatrix1           0x8A78
40172b676d7Smrg
40272b676d7Smrg/*
40372b676d7Smrg * Texture Registers
40472b676d7Smrg */
40572b676d7Smrg#define REG_3D_TextureSet                     0x8A7C
40672b676d7Smrg#define REG_3D_TextureWidthHeight             0x8A7C
40772b676d7Smrg#define REG_3D_TextureMip                     0x8A80
40872b676d7Smrg
40972b676d7Smrg#define REG_3D_TextureTransparencyColorHigh    0x8A84
41072b676d7Smrg#define REG_3D_TextureTransparencyColorLow     0x8A88
41172b676d7Smrg#define REG_3D_TextureBorderColor              0x8A8C
41272b676d7Smrg#define REG_3D_TextureAddress0                 0x8A90
41372b676d7Smrg#define REG_3D_TextureAddress1                 0x8A94
41472b676d7Smrg#define REG_3D_TextureAddress2                 0x8A98
41572b676d7Smrg#define REG_3D_TextureAddress3                 0x8A9C
41672b676d7Smrg#define REG_3D_TextureAddress4                 0x8AA0
41772b676d7Smrg#define REG_3D_TextureAddress5                 0x8AA4
41872b676d7Smrg#define REG_3D_TextureAddress6                 0x8AA8
41972b676d7Smrg#define REG_3D_TextureAddress7                 0x8AAC
42072b676d7Smrg#define REG_3D_TextureAddress8                 0x8AB0
42172b676d7Smrg#define REG_3D_TextureAddress9                 0x8AB4
42272b676d7Smrg#define REG_3D_TextureAddress10                0x8AB8
42372b676d7Smrg#define REG_3D_TextureAddress11                0x8ABC
42472b676d7Smrg#define REG_3D_TexturePitch0                   0x8AC0
42572b676d7Smrg#define REG_3D_TexturePitch1                   0x8AC0
42672b676d7Smrg#define REG_3D_TexturePitch2                   0x8AC4
42772b676d7Smrg#define REG_3D_TexturePitch3                   0x8AC4
42872b676d7Smrg#define REG_3D_TexturePitch4                   0x8AC8
42972b676d7Smrg#define REG_3D_TexturePitch5                   0x8AC8
43072b676d7Smrg#define REG_3D_TexturePitch6                   0x8ACC
43172b676d7Smrg#define REG_3D_TexturePitch7                   0x8ACC
43272b676d7Smrg#define REG_3D_TexturePitch8                   0x8AD0
43372b676d7Smrg#define REG_3D_TexturePitch9                   0x8AD0
43472b676d7Smrg#define REG_3D_TexturePitch10                  0x8AD4
43572b676d7Smrg
43672b676d7Smrg#define REG_3D_Texture1Set                     0x8ADC
43772b676d7Smrg#define REG_3D_Texture1WidthHeight             0x8ADC
43872b676d7Smrg#define REG_3D_Texture1Mip                     0x8AE0
43972b676d7Smrg
44072b676d7Smrg#define REG_3D_Texture1TransparencyColorHigh   0x8AE4
44172b676d7Smrg#define REG_3D_Texture1TransparencyColorLow    0x8AE8
44272b676d7Smrg#define REG_3D_Texture1BorderColor             0x8AEC
44372b676d7Smrg#define REG_3D_Texture1Address0                0x8AF0
44472b676d7Smrg#define REG_3D_Texture1Address1                0x8AF4
44572b676d7Smrg#define REG_3D_Texture1Address2                0x8AF8
44672b676d7Smrg#define REG_3D_Texture1Address3                0x8AFC
44772b676d7Smrg#define REG_3D_Texture1Address4                0x8B00
44872b676d7Smrg#define REG_3D_Texture1Address5                0x8B04
44972b676d7Smrg#define REG_3D_Texture1Address6                0x8B08
45072b676d7Smrg#define REG_3D_Texture1Address7                0x8B0C
45172b676d7Smrg#define REG_3D_Texture1Address8                0x8B10
45272b676d7Smrg#define REG_3D_Texture1Address9                0x8B14
45372b676d7Smrg#define REG_3D_Texture1Address10               0x8B18
45472b676d7Smrg#define REG_3D_Texture1Address11               0x8B1C
45572b676d7Smrg#define REG_3D_Texture1Pitch0                  0x8B20
45672b676d7Smrg#define REG_3D_Texture1Pitch1                  0x8B20
45772b676d7Smrg#define REG_3D_Texture1Pitch2                  0x8B24
45872b676d7Smrg#define REG_3D_Texture1Pitch3                  0x8B24
45972b676d7Smrg#define REG_3D_Texture1Pitch4                  0x8B28
46072b676d7Smrg#define REG_3D_Texture1Pitch5                  0x8B28
46172b676d7Smrg#define REG_3D_Texture1Pitch6                  0x8B2C
46272b676d7Smrg#define REG_3D_Texture1Pitch7                  0x8B2C
46372b676d7Smrg#define REG_3D_Texture1Pitch8                  0x8B30
46472b676d7Smrg#define REG_3D_Texture1Pitch9                  0x8B30
46572b676d7Smrg#define REG_3D_Texture1Pitch10                 0x8B34
46672b676d7Smrg
46772b676d7Smrg#define REG_3D_TextureBlendFactor              0x8B3C
46872b676d7Smrg#define REG_3D_TextureColorBlendSet0           0x8B40
46972b676d7Smrg#define REG_3D_TextureColorBlendSet1           0x8B44
47072b676d7Smrg#define REG_3D_TextureAlphaBlendSet0           0x8B48
47172b676d7Smrg#define REG_3D_TextureAlphaBlendSet1           0x8B4C
47272b676d7Smrg
47372b676d7Smrg#define REG_3D_EndPrimitiveList                0x8B50
47472b676d7Smrg
47572b676d7Smrg#define REG_3D_Stipple0                        0x8B60
47672b676d7Smrg
47772b676d7Smrg#define REG_3D_TexturePalette                  0x8C00
47872b676d7Smrg
47972b676d7Smrg/*
48072b676d7Smrg * REG_3D_ParsingSet - Parsing Mask (89F4h-89F7h)
48172b676d7Smrg */
48272b676d7Smrg#define MASK_VertexDWSize		0xF0000000
48372b676d7Smrg#define MASK_VertexDataFormat		0x0FFF0000
48472b676d7Smrg#define MASK_PsVertex_HAS_RHW           0x08000000
48572b676d7Smrg#define MASK_PsVertex_HAS_NORMALXYZ     0x04000000
48672b676d7Smrg#define MASK_PsVertex_HAS_DIFFUSE       0x02000000
48772b676d7Smrg#define MASK_PsVertex_HAS_SPECULAR      0x01000000
48872b676d7Smrg#define MASK_PsUVSet                    0x00FF0000
48972b676d7Smrg#define MASK_PsVertex_HAS_1SetUV        0x00800000
49072b676d7Smrg#define MASK_PsVertex_HAS_2SetUV        0x00C00000
49172b676d7Smrg#define MASK_PsVertex_HAS_3SetUV        0x00E00000
49272b676d7Smrg#define MASK_PsVertex_HAS_UVSet1        0x00800000
49372b676d7Smrg#define MASK_PsVertex_HAS_UVSet2        0x00400000
49472b676d7Smrg#define MASK_PsVertex_HAS_UVSet3        0x00200000
49572b676d7Smrg#define MASK_PsCullDirection_CCW        0x00008000
49672b676d7Smrg#define MASK_PsShadingMode              0x00007000
49772b676d7Smrg#define MASK_PsTextureFrom              0x000003F0
49872b676d7Smrg#define MASK_PsTexture0FromA            0x00000000
49972b676d7Smrg#define MASK_PsTexture1FromA            0x00000000
50072b676d7Smrg#define MASK_PsTexture1FromB            0x00000040
50172b676d7Smrg#define MASK_PsBumpTextureFromA         0x00000000
50272b676d7Smrg#define MASK_PsBumpTextureFromB         0x00000010
50372b676d7Smrg#define MASK_PsBumpTextureFromC         0x00000020
50472b676d7Smrg#define MASK_PsDataType                 0x0000000F
50572b676d7Smrg#define MASK_PsPointList                0x00000000
50672b676d7Smrg#define MASK_PsLineList                 0x00000004
50772b676d7Smrg#define MASK_PsLineStrip                0x00000005
50872b676d7Smrg#define MASK_PsTriangleList             0x00000008
50972b676d7Smrg#define MASK_PsTriangleStrip            0x00000009
51072b676d7Smrg#define MASK_PsTriangleFan              0x0000000A
51172b676d7Smrg/*
51272b676d7Smrg * REG_3D_PrimitiveSet - Fire Primitive Mask (89F8h-89FBh)
51372b676d7Smrg */
51472b676d7Smrg#define MASK_DrawPrimitiveCommand       0x00000007
51572b676d7Smrg#define MASK_SetFirePosition            0x00001F00
51672b676d7Smrg#define MASK_BumpTextureFrom            0x00030000
51772b676d7Smrg#define MASK_Texture1From               0x000C0000
51872b676d7Smrg#define MASK_Texture0From               0x00300000
51972b676d7Smrg#define MASK_ShadingMode                0x07000000
52072b676d7Smrg#define MASK_CullDirection              0x08000000
52172b676d7Smrg/*
52272b676d7Smrg *  Command Queue Length Mask (89FCh-89FF)
52372b676d7Smrg */
52472b676d7Smrg#define MASK_CmdQueueLen                0x0FFF0000
52572b676d7Smrg
52672b676d7Smrg/*
52772b676d7Smrg * REG_3D_TEnable - Capability Enable Mask (8A00h-8A03h)
52872b676d7Smrg */
52972b676d7Smrg#define MASK_DitherEnable               0x00000001
53072b676d7Smrg#define MASK_BlendEnable                0x00000002
53172b676d7Smrg#define MASK_FogTestEnable              0x00000004
53272b676d7Smrg#define MASK_FogEnable                  0x00000008
53372b676d7Smrg#define MASK_SpecularEnable             0x00000010
53472b676d7Smrg#define MASK_FogPerspectiveEnable       0x00000020
53572b676d7Smrg#define MASK_TextureCacheClear          0x00000040
53672b676d7Smrg#define MASK_TextureCacheEnable         0x00000080
53772b676d7Smrg#define MASK_BumpMapEnable              0x00000100
53872b676d7Smrg#define MASK_TexturePerspectiveEnable   0x00000200
53972b676d7Smrg#define MASK_TextureEnable              0x00000400
54072b676d7Smrg#define MASK_CullEnable                 0x00000800
54172b676d7Smrg#define MASK_TextureNumUsed             0x0000F000
54272b676d7Smrg#define MASK_AlphaBufferEnable          0x00010000
54372b676d7Smrg#define MASK_AlphaTestEnable            0x00020000
54472b676d7Smrg#define MASK_AlphaWriteEnable           0x00040000
54572b676d7Smrg#define MASK_ZTestEnable                0x00080000
54672b676d7Smrg#define MASK_ZWriteEnable               0x00100000
54772b676d7Smrg#define MASK_StencilBufferEnable        0x00200000
54872b676d7Smrg#define MASK_StencilTestEnable          0x00400000
54972b676d7Smrg#define MASK_StencilWriteEnable         0x00800000
55072b676d7Smrg#define MASK_Texture0TransparencyEnable 0x01000000
55172b676d7Smrg#define MASK_Texture1TransparencyEnable 0x02000000
55272b676d7Smrg#define MASK_TextureAWrapUCorrection    0x04000000
55372b676d7Smrg#define MASK_TextureAWrapVCorrection    0x08000000
55472b676d7Smrg#define MASK_TextureBWrapUCorrection    0x10000000
55572b676d7Smrg#define MASK_TextureBWrapVCorrection    0x20000000
55672b676d7Smrg#define MASK_TextureCWrapUCorrection    0x40000000
55772b676d7Smrg#define MASK_TextureCWrapVCorrection    0x80000000
55872b676d7Smrg
55972b676d7Smrg/*
56072b676d7Smrg * REG_3D_TEnable2 - Capability Enable Mask2 (8A04h-8A07h)
56172b676d7Smrg */
56272b676d7Smrg#define MASK_Texture0BlockTextureEnable 0x00000001
56372b676d7Smrg#define MASK_Texture1BlockTextureEnable 0x00000002
56472b676d7Smrg#define MASK_Texture0AnisotropicEnable  0x00000010
56572b676d7Smrg#define MASK_Texture1AnisotropicEnable  0x00000020
56672b676d7Smrg#define MASK_TextureMipmapBiasEnable    0x00000040
56772b676d7Smrg#define MASK_LinePatternEnable          0x00000100
56872b676d7Smrg#define MASK_StippleAlphaEnable         0x00000200
56972b676d7Smrg#define MASK_StippleEnable              0x00000400
57072b676d7Smrg#define MASK_AntiAliasEnable            0x00000800
57172b676d7Smrg#define MASK_ZMaskWriteEnable           0x00001000
57272b676d7Smrg#define MASK_StencilMaskWriteEnable     0x00002000
57372b676d7Smrg#define MASK_AlphaMaskWriteEnable       0x00004000
57472b676d7Smrg#define MASK_ColorMaskWriteEnable       0x00008000
57572b676d7Smrg#define MASK_ZCacheClear                0x00010000
57672b676d7Smrg#define MASK_ZCacheEnable               0x00020000
57772b676d7Smrg#define MASK_StencilCacheClear          0x00040000
57872b676d7Smrg#define MASK_StencilCacheEnable         0x00080000
57972b676d7Smrg#define MASK_AlphaCacheClear            0x00100000
58072b676d7Smrg#define MASK_AlphaCacheEnable           0x00200000
58172b676d7Smrg#define MASK_ColorCacheClear            0x00400000
58272b676d7Smrg#define MASK_ColorCacheEnable           0x00800000
58372b676d7Smrg
58472b676d7Smrg/*
58572b676d7Smrg * REG_3D_ZSet -- Define Z Buffer Setting Mask (8A08h-8A0Bh)
58672b676d7Smrg */
58772b676d7Smrg#define MASK_ZBufferPitch               0x00000FFF
58872b676d7Smrg#define MASK_ZTestMode                  0x00070000
58972b676d7Smrg#define MASK_ZBufferInSystem            0x00080000
59072b676d7Smrg#define MASK_ZBufferFormat              0x01F00000
59172b676d7Smrg
59272b676d7Smrg/*
59372b676d7Smrg * REG_3D_ZBias -- Define Z Buffer Setting Mask (8A0Ch-8A0Fh)
59472b676d7Smrg */
59572b676d7Smrg#define MASK_ZBias                      0xFFFFFFFF
59672b676d7Smrg
59772b676d7Smrg/*
59872b676d7Smrg * REG_3D_ZStWriteMask -- Define Z and Stencil Buffer Mask (8A10h-8A13h)
59972b676d7Smrg */
60072b676d7Smrg#define MASK_ZWriteMask                 0x00FFFFFF
60172b676d7Smrg
60272b676d7Smrg/*
60372b676d7Smrg * REG_3D_ZAddress -- Define Z Buffer Base Address(8A14h-8A17h)
60472b676d7Smrg */
60572b676d7Smrg#define MASK_ZAddress                   0xFFFFFFFF
60672b676d7Smrg
60772b676d7Smrg/*
60872b676d7Smrg * REG_3D_AlphaSet -- Define Alpha Buffer Setting Mask (8A18h-8A1Bh)
60972b676d7Smrg */
61072b676d7Smrg#define MASK_AlphaBufferPitch           0x000003FF
61172b676d7Smrg#define MASK_AlphaRefValue              0x00FF0000
61272b676d7Smrg#define MASK_AlphaTestMode              0x07000000
61372b676d7Smrg#define MASK_AlphaBufferInSystem        0x08000000
61472b676d7Smrg#define MASK_AlphaBufferFormat          0x30000000
61572b676d7Smrg
61672b676d7Smrg/*
61772b676d7Smrg * REG_3D_AlphaAddress -- Define Alpha Buffer Base Address(8A1Ch-8A1Fh)
61872b676d7Smrg */
61972b676d7Smrg#define MASK_AlphaAddress               0xFFFFFFFF
62072b676d7Smrg
62172b676d7Smrg/*
62272b676d7Smrg * REG_3D_DstSet -- Define Destination Buffer Setting Mask (8A20h-8A23h)
62372b676d7Smrg */
62472b676d7Smrg#define MASK_DstBufferPitch             0x00000FFF
62572b676d7Smrg#define MASK_DstBufferFormat            0x000F0000
62672b676d7Smrg#define MASK_DstBufferBitDepth          0x00300000
62772b676d7Smrg#define MASK_DstBufferRgbOrder          0x00400000
62872b676d7Smrg#define MASK_DstBufferInSystem          0x00800000
62972b676d7Smrg#define MASK_Dst7BitFormat              0x007F0000
63072b676d7Smrg#define MASK_ROP2                       0x0F000000
63172b676d7Smrg
63272b676d7Smrg/*
63372b676d7Smrg * REG_3D_DstAlphaWriteMask -- Define Destination/Alpha  Buffer Write Mask (8A24h-8A27h)
63472b676d7Smrg */
63572b676d7Smrg#define MASK_ColorWriteMask             0x00FFFFFF
63672b676d7Smrg#define MASK_AlphaWriteMask             0xFF000000
63772b676d7Smrg
63872b676d7Smrg/*
63972b676d7Smrg * REG_3D_DstAddress -- Define Destination Buffer Base Address(8A1Ch-8A1Fh)
64072b676d7Smrg */
64172b676d7Smrg#define MASK_DstAddress                 0xFFFFFFFF
64272b676d7Smrg
64372b676d7Smrg/*
64472b676d7Smrg * REG_3D_LinePattern -- Define Line Pattern (8A2Ch-8A2Fh)
64572b676d7Smrg */
64672b676d7Smrg#define MASK_LinePatternRepeatFactor    0x00007FFF
64772b676d7Smrg#define MASK_LinePatternLastPixelFlag   0x00008000
64872b676d7Smrg#define MASK_LinePattern                0xFFFF0000
64972b676d7Smrg
65072b676d7Smrg/*
65172b676d7Smrg * REG_3D_FogSet -- Define Fog Mask (8A30h-8A33h)
65272b676d7Smrg */
65372b676d7Smrg#define MASK_FogColor                   0x00FFFFFF
65472b676d7Smrg#define MASK_FogMode                    0x07000000
65572b676d7Smrg#define MASK_FogZLookup		        0x08000000
65672b676d7Smrg
65772b676d7Smrg/*
65872b676d7Smrg * REG_3D_FogStartEnd -- Define Fog Start End Setting (8A34h-8A37h)
65972b676d7Smrg */
66072b676d7Smrg#define MASK_FogFarDistance            	0x0007FFFF
66172b676d7Smrg
66272b676d7Smrg/*
66372b676d7Smrg * REG_3D_FogStartEnd -- Define Fog End Setting (8A38h-8A3Bh)
66472b676d7Smrg */
66572b676d7Smrg#define MASK_FogInvFarDistance          0x0007FFFF
66672b676d7Smrg
66772b676d7Smrg#define MASK_FogDensity                 0x0003FFFF
66872b676d7Smrg#define MASK_FogFactor                  0xFF000000
66972b676d7Smrg
67072b676d7Smrg#define MASK_StencilMaskValue           0x000000FF
67172b676d7Smrg#define MASK_StencilReferenceValue      0x0000FF00
67272b676d7Smrg#define MASK_StencilTestMode            0x07000000
67372b676d7Smrg#define MASK_StencilBufferInSystem      0x08000000
67472b676d7Smrg#define MASK_StencilFormat              0x30000000
67572b676d7Smrg
67672b676d7Smrg#define MASK_StencilMode_ALWAYS         0x07000000
67772b676d7Smrg#define MASK_StencilBufferPitch         0x00000FFF
67872b676d7Smrg#define MASK_StencilZPassOp             0x00007000
67972b676d7Smrg#define MASK_StencilZFailOp             0x00070000
68072b676d7Smrg#define MASK_StencilFailOp              0x00700000
68172b676d7Smrg#define MASK_StencilWriteMask           0xFF000000
68272b676d7Smrg
68372b676d7Smrg#define MASK_StencilZPassOp_REPLACE     0x00002000
68472b676d7Smrg#define MASK_StencilZFailOp_REPLACE     0x00020000
68572b676d7Smrg#define MASK_StencilFailOp_REPLACE      0x00200000
68672b676d7Smrg#define MASK_StencilAddress             0xFFFFFFFF
68772b676d7Smrg
68872b676d7Smrg#define MASK_SrcBlendMode                       0x0000000F
68972b676d7Smrg#define MASK_DstBlendMode                       0x000000F0
69072b676d7Smrg#define MASK_DSTBLEND_ZERO                      0x00000000
69172b676d7Smrg#define MASK_DSTBLEND_ONE                       0x00000010
69272b676d7Smrg#define MASK_DSTBLEND_SRC_COLOR                 0x00000020
69372b676d7Smrg#define MASK_DSTBLEND_INV_SRC_COLOR             0x00000030
69472b676d7Smrg#define MASK_DSTBLEND_SRC_ALPHA                 0x00000040
69572b676d7Smrg#define MASK_DSTBLEND_INV_SRC_ALPHA             0x00000050
69672b676d7Smrg#define MASK_DSTBLEND_DST_ALPHA                 0x00000060
69772b676d7Smrg#define MASK_DSTBLEND_INV_DST_ALPHA             0x00000070
69872b676d7Smrg#define MASK_DSTBLEND_DST_COLOR                 0x00000080
69972b676d7Smrg#define MASK_DSTBLEND_INV_DST_COLOR             0x00000090
70072b676d7Smrg#define MASK_DSTBLEND_SRC_ALPHA_SAT             0x000000A0
70172b676d7Smrg
70272b676d7Smrg#define MASK_SRCBLEND_ZERO                      0x00000000
70372b676d7Smrg#define MASK_SRCBLEND_ONE                       0x00000001
70472b676d7Smrg#define MASK_SRCBLEND_SRC_COLOR                 0x00000002
70572b676d7Smrg#define MASK_SRCBLEND_INV_SRC_COLOR             0x00000003
70672b676d7Smrg#define MASK_SRCBLEND_SRC_ALPHA                 0x00000004
70772b676d7Smrg#define MASK_SRCBLEND_INV_SRC_ALPHA             0x00000005
70872b676d7Smrg#define MASK_SRCBLEND_DST_ALPHA                 0x00000006
70972b676d7Smrg#define MASK_SRCBLEND_INV_DST_ALPHA             0x00000007
71072b676d7Smrg#define MASK_SRCBLEND_DST_COLOR                 0x00000008
71172b676d7Smrg#define MASK_SRCBLEND_INV_DST_COLOR             0x00000009
71272b676d7Smrg#define MASK_SRCBLEND_SRC_ALPHA_SAT             0x0000000A
71372b676d7Smrg#define MASK_SRCBLEND_BOTH_SRC_ALPHA            0x0000000B
71472b676d7Smrg#define MASK_SRCBLEND_BOTH_INV_SRC_ALPHA        0x0000000C
71572b676d7Smrg
71672b676d7Smrg#define MASK_BottomClip                0x00001FFF
71772b676d7Smrg#define MASK_TopClip                   0x03FFE000
71872b676d7Smrg
71972b676d7Smrg#define MASK_RightClip                 0x00001FFF
72072b676d7Smrg#define MASK_LeftClip                  0x03FFE000
72172b676d7Smrg
72272b676d7Smrg#define MASK_BMMemoryInSystem          0x00000080
72372b676d7Smrg#define MASK_BMHeight                  0x00000F00
72472b676d7Smrg#define MASK_BMWidth                   0x0000F000
72572b676d7Smrg#define MASK_BMFilter                  0x00010000
72672b676d7Smrg#define MASK_BMMappingMode             0x007E0000
72772b676d7Smrg#define MASK_BMFormat                  0x07800000
72872b676d7Smrg#define MASK_BMTxBumpmap               0x08000000
72972b676d7Smrg
73072b676d7Smrg#define MASK_BMAddress                 0xFFFFFFFC
73172b676d7Smrg
73272b676d7Smrg#define MASK_BMOffset                  0xFF800000
73372b676d7Smrg#define MASK_BMScale                   0x007FE000
73472b676d7Smrg#define MASK_BMPitch                   0x00001FFF
73572b676d7Smrg
73672b676d7Smrg#define MASK_BMMatrix00                0x000007FF
73772b676d7Smrg#define MASK_BMMatrix01                0x07FF0000
73872b676d7Smrg#define MASK_BMMatrix10                0x000007FF
73972b676d7Smrg#define MASK_BMMatrix11                0x07FF0000
74072b676d7Smrg
74172b676d7Smrg#define MASK_TextureHeight             0x0000000F
74272b676d7Smrg#define MASK_TextureWidth              0x000000F0
74372b676d7Smrg#define MASK_TextureLevel              0x00000F00
74472b676d7Smrg#define MASK_TextureSignYUVFormat      0x00001000
74572b676d7Smrg#define MASK_TextureMappingMode        0x00FF0000
74672b676d7Smrg#define MASK_TextureWrapU              0x00010000
74772b676d7Smrg#define MASK_TextureWrapV              0x00020000
74872b676d7Smrg#define MASK_TextureMirrorU            0x00040000
74972b676d7Smrg#define MASK_TextureMirrorV            0x00080000
75072b676d7Smrg#define MASK_TextureClampU             0x00100000
75172b676d7Smrg#define MASK_TextureClampV             0x00200000
75272b676d7Smrg#define MASK_TextureBorderU            0x00400000
75372b676d7Smrg#define MASK_TextureBorderV            0x00800000
75472b676d7Smrg#define MASK_TextureFormat             0xFF000000
75572b676d7Smrg#define MASK_TextureBitDepth           0x70000000
75672b676d7Smrg#define MASK_TextureRgbOrder           0x80000000
75772b676d7Smrg
75872b676d7Smrg#define MASK_TextureAnisotropyRatio    0x0000000F
75972b676d7Smrg#define MASK_TextureMipmapLodBias      0x00003FF0
76072b676d7Smrg#define MASK_TextureFilterMin          0x0001C000
76172b676d7Smrg#define MASK_TextureFilterMag          0x00020000
76272b676d7Smrg#define MASK_TextureFilter             0x0003C000
76372b676d7Smrg#define MASK_TextureLevelInSystem      0x3FFC0000
76472b676d7Smrg#define MASK_TextureLevel0InSystem     0x00040000
76572b676d7Smrg#define MASK_TextureBlockLength        0xF0000000
76672b676d7Smrg
76772b676d7Smrg#define MASK_TextureTransparencyColorHighB  0x000000FF
76872b676d7Smrg#define MASK_TextureTransparencyColorHighG  0x0000FF00
76972b676d7Smrg#define MASK_TextureTransparencyColorHighR  0x00FF0000
77072b676d7Smrg#define MASK_TextureAlphaTransparencyMode   0x08000000
77172b676d7Smrg
77272b676d7Smrg#define MASK_TextureTransparencyColorLowB   0x000000FF
77372b676d7Smrg#define MASK_TextureTransparencyColorLowG   0x0000FF00
77472b676d7Smrg#define MASK_TextureTransparencyColorLowR   0x00FF0000
77572b676d7Smrg#define MASK_TextureBlockHeight             0x07000000
77672b676d7Smrg#define MASK_TextureBlockWidth              0x70000000
77772b676d7Smrg
77872b676d7Smrg#define MASK_TextureBorderColorB        0x000000FF
77972b676d7Smrg#define MASK_TextureBorderColorG        0x0000FF00
78072b676d7Smrg#define MASK_TextureBorderColorR        0x00FF0000
78172b676d7Smrg#define MASK_TextureBorderColorA        0xFF000000
78272b676d7Smrg
78372b676d7Smrg#define MASK_TexturePitchOdd            0x000003FF
78472b676d7Smrg#define MASK_TexturePitchEven           0x03FF0000
78572b676d7Smrg#define SHIFT_TexturePitchEven          16
78672b676d7Smrg
78772b676d7Smrg#define MASK_TextureRealInSystem        0x00000001
78872b676d7Smrg#define MASK_TextureDowngrade           0x00000002
78972b676d7Smrg
79072b676d7Smrg#define OP_3D_POINT_DRAW                0x00000000
79172b676d7Smrg#define OP_3D_LINE_DRAW                 0x00000001
79272b676d7Smrg#define OP_3D_TRIANGLE_DRAW             0x00000002
79372b676d7Smrg
79472b676d7Smrg#define OP_3D_DIRECTION_RIGHT           0x00000000
79572b676d7Smrg#define OP_3D_DIRECTION_LEFT            0x00000100
79672b676d7Smrg#define OP_3D_DIRECTION_HORIZONTAL      0x00000000
79772b676d7Smrg#define OP_3D_DIRECTION_VERTICAL        0x00000100
79872b676d7Smrg
79972b676d7Smrg#define OP_3D_FIRE_TFIRE                0x00000000
80072b676d7Smrg#define OP_3D_FIRE_TSARGBa              0x00000100
80172b676d7Smrg#define OP_3D_FIRE_TSWa                 0x00000200
80272b676d7Smrg#define OP_3D_FIRE_TSVAa                0x00000300
80372b676d7Smrg#define OP_3D_FIRE_TSVBa                0x00000400
80472b676d7Smrg#define OP_3D_FIRE_TSVCa                0x00000500
80572b676d7Smrg
80672b676d7Smrg#define OP_3D_FIRE_TSARGBb              0x00000900
80772b676d7Smrg#define OP_3D_FIRE_TSWb                 0x00000a00
80872b676d7Smrg#define OP_3D_FIRE_TSVAb                0x00000b00
80972b676d7Smrg#define OP_3D_FIRE_TSVBb                0x00000c00
81072b676d7Smrg#define OP_3D_FIRE_TSVCb                0x00000d00
81172b676d7Smrg
81272b676d7Smrg#define OP_3D_FIRE_TSARGBc              0x00001100
81372b676d7Smrg#define OP_3D_FIRE_TSWc                 0x00001200
81472b676d7Smrg#define OP_3D_FIRE_TSVAc                0x00001300
81572b676d7Smrg#define OP_3D_FIRE_TSVBc                0x00001400
81672b676d7Smrg#define OP_3D_FIRE_TSVCc                0x00001500
81772b676d7Smrg
81872b676d7Smrg#define OP_3D_Texture0FromA             0x00000000
81972b676d7Smrg#define OP_3D_Texture0FromB             0x00100000
82072b676d7Smrg#define OP_3D_Texture0FromC             0x00200000
82172b676d7Smrg#define OP_3D_Texture1FromA             0x00000000
82272b676d7Smrg#define OP_3D_Texture1FromB             0x00040000
82372b676d7Smrg#define OP_3D_Texture1FromC             0x00080000
82472b676d7Smrg#define OP_3D_TextureBumpFromA          0x00000000
82572b676d7Smrg#define OP_3D_TextureBumpFromB          0x00010000
82672b676d7Smrg#define OP_3D_TextureBumpFromC          0x00020000
82772b676d7Smrg
82872b676d7Smrg#define SHADE_FLAT_VertexA              0x01000000
82972b676d7Smrg#define SHADE_FLAT_VertexB              0x02000000
83072b676d7Smrg#define SHADE_FLAT_VertexC              0x03000000
83172b676d7Smrg#define SHADE_GOURAUD                   0x04000000
83272b676d7Smrg
83372b676d7Smrg#define Z_BUFFER_FORMAT_Z16             0x00000000
83472b676d7Smrg#define Z_BUFFER_FORMAT_Z16_INT         0x00100000
83572b676d7Smrg#define Z_BUFFER_FORMAT_S1Z15           0x00400000
83672b676d7Smrg#define Z_BUFFER_FORMAT_S1Z15_INT       0x00500000
83772b676d7Smrg#define Z_BUFFER_FORMAT_Z32             0x00800000
83872b676d7Smrg#define Z_BUFFER_FORMAT_S1Z31           0x00C00000
83972b676d7Smrg#define Z_BUFFER_FORMAT_S2Z30           0x00D00000
84072b676d7Smrg#define Z_BUFFER_FORMAT_S4Z28           0x00E00000
84172b676d7Smrg#define Z_BUFFER_FORMAT_S8Z24           0x00F00000
84272b676d7Smrg#define Z_BUFFER_FORMAT_FZ30            0x01800000
84372b676d7Smrg#define Z_BUFFER_FORMAT_FS1Z30          0x01C00000
84472b676d7Smrg#define Z_BUFFER_FORMAT_FS2Z30          0x01D00000
84572b676d7Smrg#define MASK_Z_BUFFER_FORMAT            0x01F00000
84672b676d7Smrg
84772b676d7Smrg#define ALPHA_BUFFER_FORMAT_1           0x00000000
84872b676d7Smrg#define ALPHA_BUFFER_FORMAT_2           0x10000000
84972b676d7Smrg#define ALPHA_BUFFER_FORMAT_4           0x20000000
85072b676d7Smrg#define ALPHA_BUFFER_FORMAT_8           0x30000000
85172b676d7Smrg
85272b676d7Smrg#define DST_FORMAT_RGB_555              0x00100000
85372b676d7Smrg#define DST_FORMAT_RGB_565              0x00110000
85472b676d7Smrg#define DST_FORMAT_ARGB_1555            0x00120000
85572b676d7Smrg#define DST_FORMAT_ARGB_4444            0x00130000
85672b676d7Smrg#define DST_FORMAT_ARGB_1888            0x00300000
85772b676d7Smrg#define DST_FORMAT_ARGB_2888            0x00310000
85872b676d7Smrg#define DST_FORMAT_ARGB_4888            0x00320000
85972b676d7Smrg#define DST_FORMAT_ARGB_8888            0x00330000
86072b676d7Smrg#define DST_FORMAT_ARGB_0888            0x00340000
86172b676d7Smrg
86272b676d7Smrg#define DST_FORMAT_BGR_555              0x00500000
86372b676d7Smrg#define DST_FORMAT_BGR_565              0x00510000
86472b676d7Smrg#define DST_FORMAT_ABGR_1555            0x00520000
86572b676d7Smrg#define DST_FORMAT_ABGR_4444            0x00530000
86672b676d7Smrg#define DST_FORMAT_ABGR_1888            0x00700000
86772b676d7Smrg#define DST_FORMAT_ABGR_2888            0x00710000
86872b676d7Smrg#define DST_FORMAT_ABGR_4888            0x00720000
86972b676d7Smrg#define DST_FORMAT_ABGR_8888            0x00730000
87072b676d7Smrg#define DST_FORMAT_ABGR_0888            0x00740000
87172b676d7Smrg
87272b676d7Smrg#define MASK_TEXTURE_FORMAT        	0xFF000000
87372b676d7Smrg
87472b676d7Smrg#define TEXEL_INDEX1                    0x00000000
87572b676d7Smrg#define TEXEL_INDEX2                    0x01000000
87672b676d7Smrg#define TEXEL_INDEX4                    0x02000000
87772b676d7Smrg#define TEXEL_INDEX8                    0x03000000
87872b676d7Smrg
87972b676d7Smrg#define TEXEL_INDEX1WithAlpha           0x04000000
88072b676d7Smrg#define TEXEL_INDEX2WithAlpha           0x05000000
88172b676d7Smrg#define TEXEL_INDEX4WithAlpha           0x06000000
88272b676d7Smrg#define TEXEL_INDEX8WithAlpha           0x07000000
88372b676d7Smrg
88472b676d7Smrg#define TEXEL_I1                        0x10000000
88572b676d7Smrg#define TEXEL_I2                        0x11000000
88672b676d7Smrg#define TEXEL_I4                        0x12000000
88772b676d7Smrg#define TEXEL_I8                        0x13000000
88872b676d7Smrg
88972b676d7Smrg#define TEXEL_DXT1                      0x19000000
89072b676d7Smrg#define TEXEL_DXT2                      0x1A000000
89172b676d7Smrg#define TEXEL_DXT3                      0x1B000000
89272b676d7Smrg
89372b676d7Smrg#define TEXEL_YUV422                    0x20000000
89472b676d7Smrg#define TEXEL_YVU422                    0x21000000
89572b676d7Smrg#define TEXEL_UVY422                    0x22000000
89672b676d7Smrg#define TEXEL_VUY422                    0x23000000
89772b676d7Smrg#define TEXEL_YUV411                    0x24000000
89872b676d7Smrg
89972b676d7Smrg#define TEXEL_L1                        0x30000000
90072b676d7Smrg#define TEXEL_L2                        0x31000000
90172b676d7Smrg#define TEXEL_L4                        0x32000000
90272b676d7Smrg#define TEXEL_L8                        0x33000000
90372b676d7Smrg
90472b676d7Smrg#define TEXEL_AL11                      0x34000000
90572b676d7Smrg#define TEXEL_AL44                      0x35000000
90672b676d7Smrg#define TEXEL_AL26                      0x37000000
90772b676d7Smrg#define TEXEL_AL88                      0x38000000
90872b676d7Smrg
90972b676d7Smrg#define TEXEL_A1                        0x40000000
91072b676d7Smrg#define TEXEL_A2                        0x41000000
91172b676d7Smrg#define TEXEL_A4                        0x42000000
91272b676d7Smrg#define TEXEL_A8                        0x43000000
91372b676d7Smrg
91472b676d7Smrg#define TEXEL_RGB_332_8                 0x50000000
91572b676d7Smrg#define TEXEL_RGB_233_8                 0x51000000
91672b676d7Smrg#define TEXEL_RGB_232_8                 0x52000000
91772b676d7Smrg#define TEXEL_ARGB_1232_8               0x53000000
91872b676d7Smrg#define TEXEL_ARGB_2222_8               0x54000000
91972b676d7Smrg
92072b676d7Smrg#define TEXEL_RGB_555_16                0x60000000
92172b676d7Smrg#define TEXEL_RGB_565_16                0x61000000
92272b676d7Smrg#define TEXEL_ARGB_1555_16              0x62000000
92372b676d7Smrg#define TEXEL_ARGB_4444_16              0x63000000
92472b676d7Smrg
92572b676d7Smrg#define TEXEL_ARGB_1888_32              0x70000000
92672b676d7Smrg#define TEXEL_ARGB_2888_32              0x71000000
92772b676d7Smrg#define TEXEL_ARGB_4888_32              0x72000000
92872b676d7Smrg#define TEXEL_ARGB_8888_32              0x73000000
92972b676d7Smrg#define TEXEL_ARGB_0888_32              0x74000000
93072b676d7Smrg
93172b676d7Smrg#define TEXEL_BGR_332_8                 0xD0000000
93272b676d7Smrg#define TEXEL_BGR_233_8                 0xD1000000
93372b676d7Smrg#define TEXEL_BGR_232_8                 0xD2000000
93472b676d7Smrg#define TEXEL_ABGR_1232_8               0xD3000000
93572b676d7Smrg#define TEXEL_ABGR_2222_8               0xD4000000
93672b676d7Smrg
93772b676d7Smrg#define TEXEL_BGR_555_16                0xE0000000
93872b676d7Smrg#define TEXEL_BGR_565_16                0xE1000000
93972b676d7Smrg#define TEXEL_ABGR_1555_16              0xE2000000
94072b676d7Smrg#define TEXEL_ABGR_4444_16              0xE3000000
94172b676d7Smrg
94272b676d7Smrg#define TEXEL_ABGR_1888_32              0xF0000000
94372b676d7Smrg#define TEXEL_ABGR_2888_32              0xF1000000
94472b676d7Smrg#define TEXEL_ABGR_4888_32              0xF2000000
94572b676d7Smrg#define TEXEL_ABGR_8888_32              0xF3000000
94672b676d7Smrg#define TEXEL_ABGR_0888_32              0xF4000000
94772b676d7Smrg
94872b676d7Smrg#define TEXEL_VU88                      0x00000000
94972b676d7Smrg#define TEXEL_LVU655                    0x00800000
95072b676d7Smrg#define TEXEL_LVU888                    0x01000000
95172b676d7Smrg#define TEXEL_UV88                      0x02000000
95272b676d7Smrg#define TEXEL_LUV655                    0x02800000
95372b676d7Smrg#define TEXEL_LUV888                    0x03000000
95472b676d7Smrg
95572b676d7Smrg#define FOGMODE_CHEAP                  	0x04000000
95672b676d7Smrg#define FOGMODE_LINEAR                  0x05000000
95772b676d7Smrg#define FOGMODE_EXP                     0x06000000
95872b676d7Smrg#define FOGMODE_EXP2                    0x07000000
95972b676d7Smrg
96072b676d7Smrg#define Z_16				0x00000000
96172b676d7Smrg#define S_1_Z_15			0x00400000
96272b676d7Smrg#define Z_32				0x00800000
96372b676d7Smrg#define S_1_Z_31			0x00c00000
96472b676d7Smrg#define S_2_Z_30			0x00d00000
96572b676d7Smrg#define S_4_Z_28			0x00e00000
96672b676d7Smrg#define S_8_Z_24			0x00f00000
96772b676d7Smrg
96872b676d7Smrg#define S_1				0x00000000
96972b676d7Smrg#define S_2				0x10000000
97072b676d7Smrg#define S_4				0x20000000
97172b676d7Smrg#define S_8				0x30000000
97272b676d7Smrg
97372b676d7Smrg#define TEXTURE_FILTER_NEAREST			0x00000000
97472b676d7Smrg#define TEXTURE_FILTER_LINEAR			0x00004000
97572b676d7Smrg#define TEXTURE_FILTER_NEAREST_MIP_NEAREST	0x00008000
97672b676d7Smrg#define TEXTURE_FILTER_NEAREST_MIP_LINEAR	0x00010000
97772b676d7Smrg#define TEXTURE_FILTER_LINEAR_MIP_NEAREST	0x0000c000
97872b676d7Smrg#define TEXTURE_FILTER_LINEAR_MIP_LINEAR	0x00014000
97972b676d7Smrg
98072b676d7Smrg#define A_REPLACE_RGB_STAGE0		0xa1485000
98172b676d7Smrg#define A_REPLACE_A_STAGE0		0xc3230000
98272b676d7Smrg#define L_REPLACE__RGB_STAGE0		0xc1485000
98372b676d7Smrg#define L_REPLACE__A_STAGE0		0x63230000
98472b676d7Smrg#define LA_REPLACE__RGB_STAGE0		0xc1485000
98572b676d7Smrg#define LA_REPLACE__A_STAGE0		0xc3230000
98672b676d7Smrg#define I_REPLACE__RGB_STAGE0		0xc1485000
98772b676d7Smrg#define I_REPLACE__A_STAGE0		0xc3230000
98872b676d7Smrg#define RGB_REPLACE__RGB_STAGE0		0xc1485000
98972b676d7Smrg#define RGB_REPLACE__A_STAGE0		0x63230000
99072b676d7Smrg#define RGBA_REPLACE__RGB_STAGE0	0xc1485000
99172b676d7Smrg#define RGBA_REPLACE__A_STAGE0		0xc3230000
99272b676d7Smrg
99372b676d7Smrg#define A_MODULATE_RGB_STAGE0		0xa1485000
99472b676d7Smrg#define A_MODULATE_A_STAGE0		0x63c30000
99572b676d7Smrg#define L_MODULATE__RGB_STAGE0		0xa1705000
99672b676d7Smrg#define L_MODULATE__A_STAGE0		0x63230000
99772b676d7Smrg#define LA_MODULATE__RGB_STAGE0		0xa1705000
99872b676d7Smrg#define LA_MODULATE__A_STAGE0		0x63c30000
99972b676d7Smrg#define I_MODULATE__RGB_STAGE0		0xa1705000
100072b676d7Smrg#define I_MODULATE__A_STAGE0		0x63c30000
100172b676d7Smrg#define RGB_MODULATE__RGB_STAGE0	0xa1705000
100272b676d7Smrg#define RGB_MODULATE__A_STAGE0		0x63230000
100372b676d7Smrg#define RGBA_MODULATE__RGB_STAGE0	0xa1705000
100472b676d7Smrg#define RGBA_MODULATE__A_STAGE0		0x63c30000
100572b676d7Smrg
100672b676d7Smrg#define RGB_DECAL__RGB_STAGE0		0xc1485000
100772b676d7Smrg#define RGB_DECAL__A_STAGE0		0x63230000
100872b676d7Smrg#define RGBA_DECAL__RGB_STAGE0		0xc534c001
100972b676d7Smrg#define RGBA_DECAL__A_STAGE0		0x63230000
101072b676d7Smrg
101172b676d7Smrg#define A_BLEND_RGB_STAGE0		0xa1485000
101272b676d7Smrg#define A_BLEND_A_STAGE0		0x63c30000
101372b676d7Smrg#define L_BLEND__RGB_STAGE0		0x4530c001
101472b676d7Smrg#define L_BLEND__A_STAGE0		0x63230000
101572b676d7Smrg#define LA_BLEND__RGB_STAGE0		0x4530c001
101672b676d7Smrg#define LA_BLEND__A_STAGE0		0x63c30000
101772b676d7Smrg#define I_BLEND__RGB_STAGE0		0x4530c001
101872b676d7Smrg#define I_BLEND__A_STAGE0		0x46c60001
101972b676d7Smrg#define RGB_BLEND__RGB_STAGE0		0x4530c001
102072b676d7Smrg#define RGB_BLEND__A_STAGE0		0x63230000
102172b676d7Smrg#define RGBA_BLEND__RGB_STAGE0		0x4530c001
102272b676d7Smrg#define RGBA_BLEND__A_STAGE0		0x63c30000
102372b676d7Smrg
102472b676d7Smrg#define RGB_STAGE1			0xa1485000
102572b676d7Smrg#define A_STAGE1			0xa3230000
102672b676d7Smrg
102772b676d7Smrg#define A_REPLACE_RGB_STAGE1		0xa1485000
102872b676d7Smrg#define A_REPLACE_A_STAGE1		0xe3230000
102972b676d7Smrg#define L_REPLACE__RGB_STAGE1		0xe1485000
103072b676d7Smrg#define L_REPLACE__A_STAGE1		0xa3230000
103172b676d7Smrg#define LA_REPLACE__RGB_STAGE1		0xe1485000
103272b676d7Smrg#define LA_REPLACE__A_STAGE1		0xe3230000
103372b676d7Smrg#define I_REPLACE__RGB_STAGE1		0xe1485000
103472b676d7Smrg#define I_REPLACE__A_STAGE1		0xe3230000
103572b676d7Smrg#define RGB_REPLACE__RGB_STAGE1		0xe1485000
103672b676d7Smrg#define RGB_REPLACE__A_STAGE1		0xa3230000
103772b676d7Smrg#define RGBA_REPLACE__RGB_STAGE1	0xe1485000
103872b676d7Smrg#define RGBA_REPLACE__A_STAGE1		0xe3230000
103972b676d7Smrg
104072b676d7Smrg#define A_MODULATE_RGB_STAGE1		0xa1485000
104172b676d7Smrg#define A_MODULATE_A_STAGE1		0xa3e30000
104272b676d7Smrg#define L_MODULATE__RGB_STAGE1		0xa1785000
104372b676d7Smrg#define L_MODULATE__A_STAGE1		0xa3230000
104472b676d7Smrg#define LA_MODULATE__RGB_STAGE1		0xa1785000
104572b676d7Smrg#define LA_MODULATE__A_STAGE1		0xa3e30000
104672b676d7Smrg#define I_MODULATE__RGB_STAGE1		0xa1785000
104772b676d7Smrg#define I_MODULATE__A_STAGE1		0xa3e30000
104872b676d7Smrg#define RGB_MODULATE__RGB_STAGE1	0xa1785000
104972b676d7Smrg#define RGB_MODULATE__A_STAGE1		0xa3230000
105072b676d7Smrg#define RGBA_MODULATE__RGB_STAGE1	0xa1785000
105172b676d7Smrg#define RGBA_MODULATE__A_STAGE1		0xa3e30000
105272b676d7Smrg
105372b676d7Smrg#define RGB_DECAL__RGB_STAGE1		0xe1485000
105472b676d7Smrg#define RGB_DECAL__A_STAGE1		0xa3230000
105572b676d7Smrg#define RGBA_DECAL__RGB_STAGE1		0xe5394001
105672b676d7Smrg#define RGBA_DECAL__A_STAGE1		0xa3230000
105772b676d7Smrg
105872b676d7Smrg#define A_BLEND_RGB_STAGE1		0xa1485000
105972b676d7Smrg#define A_BLEND_A_STAGE1		0xa3e30000
106072b676d7Smrg#define L_BLEND__RGB_STAGE1		0x45394001
106172b676d7Smrg#define L_BLEND__A_STAGE1		0xa3230000
106272b676d7Smrg#define LA_BLEND__RGB_STAGE1		0x45394001
106372b676d7Smrg#define LA_BLEND__A_STAGE1		0xa3e30000
106472b676d7Smrg#define I_BLEND__RGB_STAGE1		0x45394001
106572b676d7Smrg#define I_BLEND__A_STAGE1		0x4aea0001
106672b676d7Smrg#define RGB_BLEND__RGB_STAGE1		0x45394001
106772b676d7Smrg#define RGB_BLEND__A_STAGE1		0xa3230000
106872b676d7Smrg#define RGBA_BLEND__RGB_STAGE1		0x45394001
106972b676d7Smrg#define RGBA_BLEND__A_STAGE1		0xa3e30000
107072b676d7Smrg
107172b676d7Smrg
107272b676d7Smrg#define INIT_6327_CapsEnable            0x00000080
107372b676d7Smrg#define INIT_6327_CapsEnable2           0x00000000
107472b676d7Smrg
107572b676d7Smrg#define INIT_6327_ZSet                  0x00030000
107672b676d7Smrg#define INIT_6327_ZMask			0xffffffff
107772b676d7Smrg#define INIT_6327_AlphaSet              0x07000000
107872b676d7Smrg#define INIT_6327_DstSet                0x0C000000
107972b676d7Smrg#define INIT_6327_DstMask		0xffffffff
108072b676d7Smrg#define INIT_6327_FogSet                0x04000000
108172b676d7Smrg#define INIT_6327_BlendMode             0x00000001
108272b676d7Smrg#define INIT_6327_TextureSet            0x00030000
108372b676d7Smrg#define INIT_6327_TextureMip            0x00000000
108472b676d7Smrg#define INIT_6327_TextureColorBlend0    0xC1485000
108572b676d7Smrg#define INIT_6327_TextureAlphaBlend0    0x333A0000
108672b676d7Smrg#define INIT_6327_Texture1Set           0x00030000
108772b676d7Smrg#define INIT_6327_Texture1Set2          0x00000000
108872b676d7Smrg#define INIT_6327_TextureColorBlend1    0x294B4000
108972b676d7Smrg#define INIT_6327_TextureAlphaBlend1    0x333A0000
109072b676d7Smrg#define INIT_6327_ParsingSet            0x00000060
109172b676d7Smrg
109272b676d7Smrg#define SiS_Z_COMP_NEVER                0x00000000
109372b676d7Smrg#define SiS_Z_COMP_S_LT_B             	0x00010000
109472b676d7Smrg#define SiS_Z_COMP_S_EQ_B              	0x00020000
109572b676d7Smrg#define SiS_Z_COMP_S_LE_B              	0x00030000
109672b676d7Smrg#define SiS_Z_COMP_S_GT_B               0x00040000
109772b676d7Smrg#define SiS_Z_COMP_S_NE_B               0x00050000
109872b676d7Smrg#define SiS_Z_COMP_S_GE_B               0x00060000
109972b676d7Smrg#define SiS_Z_COMP_ALWAYS               0x00070000
110072b676d7Smrg
110172b676d7Smrg#define SiS_ALPHA_NEVER                 0x00000000
110272b676d7Smrg#define SiS_ALPHA_LESS                  0x01000000
110372b676d7Smrg#define SiS_ALPHA_EQUAL                 0x02000000
110472b676d7Smrg#define SiS_ALPHA_LEQUAL                0x03000000
110572b676d7Smrg#define SiS_ALPHA_GREATER               0x04000000
110672b676d7Smrg#define SiS_ALPHA_NOTEQUAL              0x05000000
110772b676d7Smrg#define SiS_ALPHA_GEQUAL                0x06000000
110872b676d7Smrg#define SiS_ALPHA_ALWAYS                0x07000000
110972b676d7Smrg
111072b676d7Smrg#define SiS_STENCIL_NEVER		0x00000000
111172b676d7Smrg#define SiS_STENCIL_LESS                0x01000000
111272b676d7Smrg#define SiS_STENCIL_EQUAL               0x02000000
111372b676d7Smrg#define SiS_STENCIL_LEQUAL              0x03000000
111472b676d7Smrg#define SiS_STENCIL_GREATER             0x04000000
111572b676d7Smrg#define SiS_STENCIL_NOTEQUAL		0x05000000
111672b676d7Smrg#define SiS_STENCIL_GEQUAL              0x06000000
111772b676d7Smrg#define SiS_STENCIL_ALWAYS              0x07000000
111872b676d7Smrg
111972b676d7Smrg#define SiS_SFAIL_KEEP			0x00000000
112072b676d7Smrg#define SiS_SFAIL_ZERO			0x00100000
112172b676d7Smrg#define SiS_SFAIL_REPLACE               0x00200000
112272b676d7Smrg#define SiS_SFAIL_INVERT		0x00500000
112372b676d7Smrg#define SiS_SFAIL_INCR			0x00600000
112472b676d7Smrg#define SiS_SFAIL_DECR			0x00700000
112572b676d7Smrg
112672b676d7Smrg#define SiS_SPASS_ZFAIL_KEEP		0x00000000
112772b676d7Smrg#define SiS_SPASS_ZFAIL_ZERO		0x00010000
112872b676d7Smrg#define SiS_SPASS_ZFAIL_REPLACE		0x00020000
112972b676d7Smrg#define SiS_SPASS_ZFAIL_INVERT		0x00050000
113072b676d7Smrg#define SiS_SPASS_ZFAIL_INCR		0x00060000
113172b676d7Smrg#define SiS_SPASS_ZFAIL_DECR		0x00070000
113272b676d7Smrg
113372b676d7Smrg#define SiS_SPASS_ZPASS_KEEP		0x00000000
113472b676d7Smrg#define SiS_SPASS_ZPASS_ZERO		0x00001000
113572b676d7Smrg#define SiS_SPASS_ZPASS_REPLACE		0x00002000
113672b676d7Smrg#define SiS_SPASS_ZPASS_INVERT		0x00005000
113772b676d7Smrg#define SiS_SPASS_ZPASS_INCR		0x00006000
113872b676d7Smrg#define SiS_SPASS_ZPASS_DECR		0x00007000
113972b676d7Smrg
114072b676d7Smrg#define SiS_D_ZERO			0x00000000
114172b676d7Smrg#define SiS_D_ONE			0x00000010
114272b676d7Smrg#define SiS_D_SRC_COLOR			0x00000020
114372b676d7Smrg#define SiS_D_ONE_MINUS_SRC_COLOR	0x00000030
114472b676d7Smrg#define SiS_D_SRC_ALPHA			0x00000040
114572b676d7Smrg#define SiS_D_ONE_MINUS_SRC_ALPHA	0x00000050
114672b676d7Smrg#define SiS_D_DST_ALPHA			0x00000060
114772b676d7Smrg#define SiS_D_ONE_MINUS_DST_ALPHA	0x00000070
114872b676d7Smrg
114972b676d7Smrg#define SiS_S_ZERO			0x00000000
115072b676d7Smrg#define SiS_S_ONE			0x00000001
115172b676d7Smrg#define SiS_S_SRC_ALPHA                 0x00000004
115272b676d7Smrg#define SiS_S_ONE_MINUS_SRC_ALPHA	0x00000005
115372b676d7Smrg#define SiS_S_DST_ALPHA                 0x00000006
115472b676d7Smrg#define SiS_S_ONE_MINUS_DST_ALPHA       0x00000007
115572b676d7Smrg#define SiS_S_DST_COLOR                 0x00000008
115672b676d7Smrg#define SiS_S_ONE_MINUS_DST_COLOR       0x00000009
115772b676d7Smrg#define SiS_S_SRC_ALPHA_SATURATE        0x0000000a
115872b676d7Smrg
115972b676d7Smrg/* Logic Op */
116072b676d7Smrg#define LOP_CLEAR			0x00000000
116172b676d7Smrg#define LOP_NOR				0x01000000
116272b676d7Smrg#define LOP_AND_INVERTED		0x02000000
116372b676d7Smrg#define LOP_COPY_INVERTED		0x03000000
116472b676d7Smrg#define LOP_AND_REVERSE			0x04000000
116572b676d7Smrg#define LOP_INVERT			0x05000000
116672b676d7Smrg#define LOP_XOR				0x06000000
116772b676d7Smrg#define LOP_NAND			0x07000000
116872b676d7Smrg#define LOP_AND				0x08000000
116972b676d7Smrg#define LOP_EQUIV			0x09000000
117072b676d7Smrg#define LOP_NOOP			0x0a000000
117172b676d7Smrg#define LOP_OR_INVERTED			0x0b000000
117272b676d7Smrg#define LOP_COPY			0x0c000000
117372b676d7Smrg#define LOP_OR_REVERSE			0x0d000000
117472b676d7Smrg#define LOP_OR				0x0e000000
117572b676d7Smrg#define LOP_SET				0x0f000000
117672b676d7Smrg
117772b676d7Smrg#define SiSWait3DCmdQueue(wLen)\
117872b676d7Smrgdo{ \
117972b676d7Smrg  while ( CmdQueLen < (int)(wLen)) { \
118072b676d7Smrg      CmdQueLen = (SIS_MMIO_IN16(pSiS->IOBase, 0x8240) & pSiS->CmdQueLenMask) - pSiS->CmdQueLenFix; \
118172b676d7Smrg  } \
118272b676d7Smrg  CmdQueLen -= (int)(wLen); \
118372b676d7Smrg} while(0)
118472b676d7Smrg
1185