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
|