186 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
|  * Copyright © 2004 Damien Ciabrini
 | |
|  *
 | |
|  * Permission to use, copy, modify, distribute, and sell this software and its
 | |
|  * documentation for any purpose is hereby granted without fee, provided that
 | |
|  * the above copyright notice appear in all copies and that both that
 | |
|  * copyright notice and this permission notice appear in supporting
 | |
|  * documentation, and that the name of Anders Carlsson not be used in
 | |
|  * advertising or publicity pertaining to distribution of the software without
 | |
|  * specific, written prior permission.  Anders Carlsson makes no
 | |
|  * representations about the suitability of this software for any purpose.  It
 | |
|  * is provided "as is" without express or implied warranty.
 | |
|  *
 | |
|  * DAMIEN CIABRINI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
 | |
|  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
 | |
|  * EVENT SHALL ANDERS CARLSSON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
 | |
|  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
 | |
|  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 | |
|  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 | |
|  * PERFORMANCE OF THIS SOFTWARE.
 | |
|  */
 | |
| 
 | |
| #ifndef __G400_COMMON_H__
 | |
| #define __G400_COMMON_H__
 | |
| 
 | |
| /* Color registers */
 | |
| #define MGA_REG_DR4             		(0x1CD0)
 | |
| #define MGA_REG_DR6             		(0x1CD8)
 | |
| #define MGA_REG_DR7             		(0x1CDC)
 | |
| #define MGA_REG_DR8             		(0x1CE0)
 | |
| #define MGA_REG_DR10            		(0x1CE8)
 | |
| #define MGA_REG_DR11            		(0x1CEC)
 | |
| #define MGA_REG_DR12            		(0x1CF0)
 | |
| #define MGA_REG_DR14            		(0x1CF8)
 | |
| #define MGA_REG_DR15            		(0x1CFC)
 | |
| 
 | |
| /* Alpha registers */
 | |
| #define MGA_REG_ALPHASTART      		(0x2C70)
 | |
| #define MGA_REG_ALPHAXINC       		(0x2C74)
 | |
| #define MGA_REG_ALPHAYINC       		(0x2C78)
 | |
| #define MGA_REG_ALPHACTRL       		(0x2C7C)
 | |
| #    define MGA_SRC_ZERO                     	(0x00000000)
 | |
| #    define MGA_SRC_ONE                      	(0x00000001)
 | |
| #    define MGA_SRC_DST_COLOR                	(0x00000002)
 | |
| #    define MGA_SRC_ONE_MINUS_DST_COLOR      	(0x00000003)
 | |
| #    define MGA_SRC_ALPHA                    	(0x00000004)
 | |
| #    define MGA_SRC_ONE_MINUS_SRC_ALPHA      	(0x00000005)
 | |
| #    define MGA_SRC_DST_ALPHA                	(0x00000006)
 | |
| #    define MGA_SRC_ONE_MINUS_DST_ALPHA      	(0x00000007)
 | |
| #    define MGA_SRC_SRC_ALPHA_SATURATE       	(0x00000008)
 | |
| #    define MGA_SRC_BLEND_MASK			(0x0000000f)
 | |
| 
 | |
| #    define MGA_DST_ZERO                     	(0x00000000)
 | |
| #    define MGA_DST_ONE                      	(0x00000010)
 | |
| #    define MGA_DST_SRC_COLOR                	(0x00000020)
 | |
| #    define MGA_DST_ONE_MINUS_SRC_COLOR      	(0x00000030)
 | |
| #    define MGA_DST_SRC_ALPHA                	(0x00000040)
 | |
| #    define MGA_DST_ONE_MINUS_SRC_ALPHA      	(0x00000050)
 | |
| #    define MGA_DST_DST_ALPHA                	(0x00000060)
 | |
| #    define MGA_DST_ONE_MINUS_DST_ALPHA      	(0x00000070)
 | |
| #    define MGA_DST_BLEND_MASK			(0x00000070)
 | |
| 
 | |
| #    define MGA_ALPHACHANNEL                 	(0x00000100)
 | |
| #    define MGA_VIDEOALPHA                   	(0x00000200)
 | |
| #    define MGA_DIFFUSEDALPHA                	(0x01000000)
 | |
| #    define MGA_MODULATEDALPHA               	(0x02000000)
 | |
| 
 | |
| /* Textures registers */
 | |
| #define MGA_REG_TEXORG 				(0x2c24)
 | |
| #define MGA_REG_TEXORG1				(0x2ca4)
 | |
| #define MGA_REG_TEXWIDTH        		(0x2C28)
 | |
| #define MGA_REG_TEXHEIGHT       		(0x2C2C)
 | |
| #define MGA_REG_TMR0            		(0x2C00)
 | |
| #define MGA_REG_TMR1            		(0x2C04)
 | |
| #define MGA_REG_TMR2            		(0x2C08)
 | |
| #define MGA_REG_TMR3            		(0x2C0C)
 | |
| #define MGA_REG_TMR4            		(0x2C10)
 | |
| #define MGA_REG_TMR5            		(0x2C14)
 | |
| #define MGA_REG_TMR6            		(0x2C18)
 | |
| #define MGA_REG_TMR7            		(0x2C1C)
 | |
| #define MGA_REG_TMR8            		(0x2C20)
 | |
| 
 | |
| /* Texture Control Registers */
 | |
| #define MGA_REG_TEXCTL          		(0x2C30)
 | |
| #    define MGA_TW4				(0x00000000)
 | |
| #    define MGA_TW8           			(0x00000001)
 | |
| #    define MGA_TW15          			(0x00000002)
 | |
| #    define MGA_TW16          			(0x00000003)
 | |
| #    define MGA_TW12          			(0x00000004)
 | |
| #    define MGA_TW32				(0x00000006)
 | |
| #    define MGA_TW8A          			(0x00000007)
 | |
| #    define MGA_TW8AL         			(0x00000008)
 | |
| #    define MGA_TW422         			(0x0000000A)
 | |
| #    define MGA_TW422UYVY     			(0x0000000B)
 | |
| #    define MGA_PITCHLIN			(0x00000100)
 | |
| #    define MGA_NOPERSPECTIVE			(0x00200000)
 | |
| #    define MGA_TAKEY           	     	(0x02000000)
 | |
| #    define MGA_TAMASK				(0x04000000)
 | |
| #    define MGA_CLAMPUV				(0x18000000)
 | |
| #define MGA_REG_TEXCTL2         		(0x2C3C)
 | |
| #    define MGA_G400_TC2_MAGIC			(0x00008000)
 | |
| #    define MGA_TC2_DECALBLEND 			(0x00000001)
 | |
| #    define MGA_TC2_IDECAL 			(0x00000002)
 | |
| #    define MGA_TC2_DECALDIS 			(0x00000004)
 | |
| #    define MGA_TC2_CKSTRANSDIS 		(0x00000010)
 | |
| #    define MGA_TC2_BORDEREN 			(0x00000020)
 | |
| #    define MGA_TC2_SPECEN 			(0x00000040)
 | |
| #    define MGA_TC2_DUALTEX 			(0x00000080)
 | |
| #    define MGA_TC2_TABLEFOG 			(0x00000100)
 | |
| #    define MGA_TC2_BUMPMAP 			(0x00000200)
 | |
| #    define MGA_TC2_SELECT_TMU1 		(0x80000000)
 | |
| #define MGA_REG_TEXFILTER       		(0x2C58)
 | |
| #    define MGA_MIN_NRST            		(0x00000000)
 | |
| #    define MGA_MIN_BILIN           		(0x00000002)
 | |
| #    define MGA_MIN_ANISO           		(0x0000000D)
 | |
| #    define MGA_MAG_NRST            		(0x00000000)
 | |
| #    define MGA_MAG_BILIN           		(0x00000020)
 | |
| 	
 | |
| /* Multi-Textures Control Registers */
 | |
| #define MGA_REG_TDUALSTAGE0   			(0x2CF8)
 | |
| #define MGA_REG_TDUALSTAGE1   			(0x2CFC)
 | |
| #    define MGA_TDS_COLOR_ARG2_DIFFUSE 		(0x00000000)
 | |
| #    define MGA_TDS_COLOR_ARG2_SPECULAR 	(0x00000001)
 | |
| #    define MGA_TDS_COLOR_ARG2_FCOL 		(0x00000002)
 | |
| #    define MGA_TDS_COLOR_ARG2_PREVSTAGE 	(0x00000003)
 | |
| #    define MGA_TDS_COLOR_ALPHA_DIFFUSE 	(0x00000000)
 | |
| #    define MGA_TDS_COLOR_ALPHA_FCOL 		(0x00000004)
 | |
| #    define MGA_TDS_COLOR_ALPHA_CURRTEX 	(0x00000008)
 | |
| #    define MGA_TDS_COLOR_ALPHA_PREVTEX 	(0x0000000c)
 | |
| #    define MGA_TDS_COLOR_ALPHA_PREVSTAGE 	(0x00000010)
 | |
| #    define MGA_TDS_COLOR_ARG1_REPLICATEALPHA 	(0x00000020)
 | |
| #    define MGA_TDS_COLOR_ARG1_INV 		(0x00000040)
 | |
| #    define MGA_TDS_COLOR_ARG2_REPLICATEALPHA 	(0x00000080)
 | |
| #    define MGA_TDS_COLOR_ARG2_INV 		(0x00000100)
 | |
| #    define MGA_TDS_COLOR_ALPHA1INV 		(0x00000200)
 | |
| #    define MGA_TDS_COLOR_ALPHA2INV 		(0x00000400)
 | |
| #    define MGA_TDS_COLOR_ARG1MUL_ALPHA1 	(0x00000800)
 | |
| #    define MGA_TDS_COLOR_ARG2MUL_ALPHA2 	(0x00001000)
 | |
| #    define MGA_TDS_COLOR_ARG1ADD_MULOUT 	(0x00002000)
 | |
| #    define MGA_TDS_COLOR_ARG2ADD_MULOUT 	(0x00004000)
 | |
| #    define MGA_TDS_COLOR_MODBRIGHT_2X 		(0x00008000)
 | |
| #    define MGA_TDS_COLOR_MODBRIGHT_4X 		(0x00010000)
 | |
| #    define MGA_TDS_COLOR_ADD_SUB 		(0x00000000)
 | |
| #    define MGA_TDS_COLOR_ADD_ADD 		(0x00020000)
 | |
| #    define MGA_TDS_COLOR_ADD2X 		(0x00040000)
 | |
| #    define MGA_TDS_COLOR_ADDBIAS 		(0x00080000)
 | |
| #    define MGA_TDS_COLOR_BLEND 		(0x00100000)
 | |
| #    define MGA_TDS_COLOR_SEL_ARG1 		(0x00000000)
 | |
| #    define MGA_TDS_COLOR_SEL_ARG2 		(0x00200000)
 | |
| #    define MGA_TDS_COLOR_SEL_ADD 		(0x00400000)
 | |
| #    define MGA_TDS_COLOR_SEL_MUL 		(0x00600000)
 | |
| #    define MGA_TDS_ALPHA_ARG1_INV 		(0x00800000)
 | |
| #    define MGA_TDS_ALPHA_ARG2_DIFFUSE 		(0x00000000)
 | |
| #    define MGA_TDS_ALPHA_ARG2_FCOL 		(0x01000000)
 | |
| #    define MGA_TDS_ALPHA_ARG2_PREVTEX 		(0x02000000)
 | |
| #    define MGA_TDS_ALPHA_ARG2_PREVSTAGE 	(0x03000000)
 | |
| #    define MGA_TDS_ALPHA_ARG2_INV 		(0x04000000)
 | |
| #    define MGA_TDS_ALPHA_ADD 			(0x08000000)
 | |
| #    define MGA_TDS_ALPHA_ADDBIAS 		(0x10000000)
 | |
| #    define MGA_TDS_ALPHA_ADD2X 		(0x20000000)
 | |
| #    define MGA_TDS_ALPHA_SEL_ARG1 		(0x00000000)
 | |
| #    define MGA_TDS_ALPHA_SEL_ARG2 		(0x40000000)
 | |
| #    define MGA_TDS_ALPHA_SEL_ADD 		(0x80000000)
 | |
| #    define MGA_TDS_ALPHA_SEL_MUL 		(0xc0000000)
 | |
| 
 | |
| 
 | |
| 
 | |
| /* Composition Prototypes. MMIO Access */
 | |
| Bool
 | |
| mgaCheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture,
 | |
| 		  PicturePtr pDstPicture);
 | |
| 
 | |
| Bool
 | |
| mgaPrepareComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture,
 | |
| 		    PicturePtr pDstPicture, PixmapPtr pSrc,
 | |
| 		    PixmapPtr pMask, PixmapPtr pDst);
 | |
| 
 | |
| void
 | |
| mgaComposite(int srcX, int srcY, int maskX, int maskY,
 | |
| 	     int dstX, int dstY, int w, int h);
 | |
| 
 | |
| void
 | |
| mgaDoneComposite(void);
 | |
| 
 | |
| #endif
 |