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