clean includes (wip)
This commit is contained in:
@@ -15,11 +15,11 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <cvg.h>
|
||||
#include <fxpci.h>
|
||||
#include <sst1init.h>
|
||||
#include <3dfx.h>
|
||||
#include <glide.h>
|
||||
#include "glide_internal/cvg.h"
|
||||
#include "glide_internal/fxpci.h"
|
||||
#include "glide_internal/sst1init.h"
|
||||
#include <glide/3dfx.h>
|
||||
#include <glide/glide.h>
|
||||
|
||||
#include "FaultSources.h"
|
||||
#include "Utils.h"
|
||||
|
||||
10
Test_Data.c
10
Test_Data.c
@@ -15,11 +15,11 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <cvg.h>
|
||||
#include <fxpci.h>
|
||||
#include <sst1init.h>
|
||||
#include <3dfx.h>
|
||||
#include <glide.h>
|
||||
#include "glide_internal/cvg.h"
|
||||
#include "glide_internal/fxpci.h"
|
||||
#include "glide_internal/sst1init.h"
|
||||
#include <glide/3dfx.h>
|
||||
#include <glide/glide.h>
|
||||
|
||||
#include "FaultSources.h"
|
||||
#include "Utils.h"
|
||||
|
||||
@@ -20,11 +20,11 @@
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <cvg.h>
|
||||
#include <fxpci.h>
|
||||
#include <sst1init.h>
|
||||
#include <3dfx.h>
|
||||
#include <glide.h>
|
||||
#include "glide_internal/cvg.h"
|
||||
#include "glide_internal/fxpci.h"
|
||||
#include "glide_internal/sst1init.h"
|
||||
#include <glide/3dfx.h>
|
||||
#include <glide/glide.h>
|
||||
|
||||
#include "FaultSources.h"
|
||||
#include "Utils.h"
|
||||
|
||||
34
glide_internal/cvg.h
Normal file
34
glide_internal/cvg.h
Normal file
@@ -0,0 +1,34 @@
|
||||
#ifndef __H3_H__
|
||||
#define __H3_H__
|
||||
|
||||
/*
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
** $Revision: 1.1.1.1 $
|
||||
** $Date: 1999/12/07 21:49:24 $
|
||||
*/
|
||||
|
||||
#include <3dfx.h>
|
||||
#include <gdebug.h>
|
||||
#include <cvgregs.h>
|
||||
#include <cvgdefs.h>
|
||||
#include <sst1vid.h>
|
||||
#include <fxhal.h>
|
||||
|
||||
#endif /* !__H3_H__ */
|
||||
944
glide_internal/cvgdefs.h
Normal file
944
glide_internal/cvgdefs.h
Normal file
@@ -0,0 +1,944 @@
|
||||
/*-*-c++-*-*/
|
||||
#ifndef __CVGDEFS_H__
|
||||
#define __CVGDEFS_H__
|
||||
|
||||
/*
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
** $Revision: 1.1.1.1 $
|
||||
** $Date: 1999/12/07 21:49:24 $
|
||||
*/
|
||||
|
||||
//----------------------- CMDFIFO Section ---------------------------
|
||||
//----------------------- CMDFIFO Section ---------------------------
|
||||
//----------------------- CMDFIFO Section ---------------------------
|
||||
|
||||
// CVG/H3 abstraction
|
||||
#define SST_IS_CMDFIFO_ENABLED(sst) (sst->fbiInit7 & SST_EN_CMDFIFO)
|
||||
|
||||
//----------------- SST cmdFifoBase bits ---------------------------
|
||||
#define SST_CMDFIFO_START_SHIFT 0
|
||||
#define SST_CMDFIFO_START (0x3FF<<SST_CMDFIFO_START_SHIFT)
|
||||
#define SST_CMDFIFO_END_SHIFT 16
|
||||
#define SST_CMDFIFO_END (0x3FF<<SST_CMDFIFO_END_SHIFT)
|
||||
|
||||
// SST COMMAND PACKET defines
|
||||
#define SSTCP_PKT_SIZE 3
|
||||
#define SSTCP_PKT SST_MASK(SSTCP_PKT_SIZE)
|
||||
#define SSTCP_PKT0 0
|
||||
#define SSTCP_PKT1 1
|
||||
#define SSTCP_PKT2 2
|
||||
#define SSTCP_PKT3 3
|
||||
#define SSTCP_PKT4 4
|
||||
#define SSTCP_PKT5 5
|
||||
#define SSTCP_PKT6 6
|
||||
#define SSTCP_PKT7 7
|
||||
|
||||
#define SSTCP_BOGUS_WORDS_SHIFT 29
|
||||
#define SSTCP_BOGUS_WORDS (7 << SSTCP_BOGUS_WORDS_SHIFT)
|
||||
|
||||
// packet 0 defines
|
||||
#define SSTCP_PKT0_FUNC_SHIFT 3
|
||||
#define SSTCP_PKT0_FUNC (7 << SSTCP_PKT0_FUNC_SHIFT)
|
||||
#define SSTCP_PKT0_NOP ((0<<SSTCP_PKT0_FUNC_SHIFT) | SSTCP_PKT0)
|
||||
#define SSTCP_PKT0_JSR ((1<<SSTCP_PKT0_FUNC_SHIFT) | SSTCP_PKT0)
|
||||
#define SSTCP_PKT0_RET ((2<<SSTCP_PKT0_FUNC_SHIFT) | SSTCP_PKT0)
|
||||
#define SSTCP_PKT0_JMP_LOCAL ((3<<SSTCP_PKT0_FUNC_SHIFT) | SSTCP_PKT0)
|
||||
#define SSTCP_PKT0_JMP_AGP ((4<<SSTCP_PKT0_FUNC_SHIFT) | SSTCP_PKT0)
|
||||
#define SSTCP_PKT0_ADDR_SHIFT 6
|
||||
#define SSTCP_PKT0_ADDR (0x7FFFFF<<SSTCP_PKT0_ADDR_SHIFT)
|
||||
|
||||
// packet 1 defines
|
||||
#define SSTCP_REGBASE_SHIFT SSTCP_PKT_SIZE
|
||||
#define SSTCP_REGBASE ((0xFFF)<<SSTCP_REGBASE_SHIFT)
|
||||
#define SSTCP_INC BIT(15)
|
||||
#define SSTCP_PKT1_NWORDS_SHIFT 16
|
||||
#define SSTCP_PKT1_NWORDS (0xFFFFUL<<SSTCP_PKT1_NWORDS_SHIFT)
|
||||
|
||||
// packet 2 defines
|
||||
#define SSTCP_PKT2_MASK_SHIFT SSTCP_PKT_SIZE
|
||||
#define SSTCP_PKT2_MASK (0x1FFFFFFFUL<<SSTCP_PKT2_MASK_SHIFT)
|
||||
|
||||
// packet 3 defines
|
||||
#define SSTCP_PKT3_CMD_SHIFT SSTCP_PKT_SIZE
|
||||
#define SSTCP_PKT3_CMD (0x7<<SSTCP_PKT3_CMD_SHIFT)
|
||||
# define SSTCP_PKT3_BDDBDD (0<<SSTCP_PKT3_CMD_SHIFT)
|
||||
# define SSTCP_PKT3_BDDDDD (1<<SSTCP_PKT3_CMD_SHIFT)
|
||||
# define SSTCP_PKT3_DDDDDD (2<<SSTCP_PKT3_CMD_SHIFT)
|
||||
#define SSTCP_PKT3_NUMVERTEX_SHIFT (SSTCP_PKT_SIZE+3)
|
||||
#define SSTCP_PKT3_NUMVERTEX (0xF << SSTCP_PKT3_NUMVERTEX_SHIFT)
|
||||
#define SSTCP_PKT3_PMASK_SHIFT (SSTCP_PKT_SIZE+3+4)
|
||||
#define SSTCP_PKT3_PMASK (0xFFFUL<<SSTCP_PKT3_PMASK_SHIFT)
|
||||
#define SSTCP_PKT3_SMODE_SHIFT (SSTCP_PKT3_PMASK_SHIFT+12)
|
||||
#define SSTCP_PKT3_SMODE (0x3FUL<<SSTCP_PKT3_SMODE_SHIFT)
|
||||
#define SSTCP_PKT3_PACKEDCOLOR BIT(28)
|
||||
|
||||
// packet 4 defines
|
||||
#define SSTCP_REGBASE_SHIFT SSTCP_PKT_SIZE
|
||||
#define SSTCP_REGBASE ((0xFFF)<<SSTCP_REGBASE_SHIFT)
|
||||
#define SSTCP_PKT4_MASK_SHIFT 15
|
||||
#define SSTCP_PKT4_MASK (0x3FFFUL<<SSTCP_PKT4_MASK_SHIFT)
|
||||
|
||||
// packet 5 defines
|
||||
#define SSTCP_PKT5_NWORDS_SHIFT 3
|
||||
#define SSTCP_PKT5_NWORDS (0x7FFFFUL<<SSTCP_PKT5_NWORDS_SHIFT)
|
||||
#define SSTCP_PKT5_BYTEN_WN_SHIFT 22
|
||||
#define SSTCP_PKT5_BYTEN_WN (0xFUL<<SSTCP_PKT5_BYTEN_WN_SHIFT)
|
||||
#define SSTCP_PKT5_BYTEN_W2_SHIFT 26
|
||||
#define SSTCP_PKT5_BYTEN_W2 (0xFUL<<SSTCP_PKT5_BYTEN_W2_SHIFT)
|
||||
#define SSTCP_PKT5_SPACE_SHIFT 30
|
||||
#define SSTCP_PKT5_SPACE (0x3UL<<SSTCP_PKT5_SPACE_SHIFT)
|
||||
#define SSTCP_PKT5_LFB (0x0UL<<SSTCP_PKT5_SPACE_SHIFT)
|
||||
#define SSTCP_PKT5_YUV (0x1UL<<SSTCP_PKT5_SPACE_SHIFT)
|
||||
#define SSTCP_PKT5_3DLFB (0x2UL<<SSTCP_PKT5_SPACE_SHIFT)
|
||||
#define SSTCP_PKT5_TEXPORT (0x3UL<<SSTCP_PKT5_SPACE_SHIFT)
|
||||
#define SSTCP_PKT5_BASEADDR 0x1FFFFFFUL
|
||||
|
||||
//----------------------- 2D Section ---------------------------
|
||||
//----------------------- 2D Section ---------------------------
|
||||
//----------------------- 2D Section ---------------------------
|
||||
|
||||
#define SSTG_XY_SIZE 11
|
||||
#define SSTG_BLIT_SIZE 12
|
||||
|
||||
//----------------- SSTG CVG command bits ---------------------------
|
||||
#define SSTG_COMMAND_SHIFT 0
|
||||
#define SSTG_COMMAND (0x7<<SSTG_COMMAND_SHIFT)
|
||||
# define SSTG_BLT (0<<SSTG_COMMAND_SHIFT)
|
||||
# define SSTG_HOST_BLT (1<<SSTG_COMMAND_SHIFT)
|
||||
# define SSTG_RECTFILL (2<<SSTG_COMMAND_SHIFT)
|
||||
# define SSTG_FRECTFILL (3<<SSTG_COMMAND_SHIFT)
|
||||
|
||||
#define SSTG_SRC_FORMAT_SHIFT 3
|
||||
# define SSTG_SRC_FORMAT (0x7UL << SSTG_SRC_FORMAT_SHIFT)
|
||||
# define SSTG_PIXFMT_1BPPstd (0x0UL << SSTG_SRC_FORMAT_SHIFT)
|
||||
# define SSTG_PIXFMT_1BPP (0x1UL << SSTG_SRC_FORMAT_SHIFT)
|
||||
# define SSTG_PIXFMT_16BPP (0x2UL << SSTG_SRC_FORMAT_SHIFT)
|
||||
# define SSTG_PIXFMT_24BPP (0x3UL << SSTG_SRC_FORMAT_SHIFT)
|
||||
# define SSTG_PIXFMT_24BPPdit2 (0x4UL << SSTG_SRC_FORMAT_SHIFT)
|
||||
# define SSTG_PIXFMT_24BPPdit4 (0x5UL << SSTG_SRC_FORMAT_SHIFT)
|
||||
#define SSTG_SRC_LANES_SHIFT 6
|
||||
# define SSTG_SRC_LANES (0x3UL << SSTG_SRC_LANES_SHIFT)
|
||||
# define SSTG_SRC_LANES_ARGB (0x0UL << SSTG_SRC_LANES_SHIFT)
|
||||
# define SSTG_SRC_LANES_ABGR (0x1UL << SSTG_SRC_LANES_SHIFT)
|
||||
# define SSTG_SRC_LANES_RGBA (0x2UL << SSTG_SRC_LANES_SHIFT)
|
||||
# define SSTG_SRC_LANES_BGRA (0x3UL << SSTG_SRC_LANES_SHIFT)
|
||||
|
||||
#define SSTG_HOST_BYTE_SWIZZLE BIT(8)
|
||||
#define SSTG_HOST_WORD_SWIZZLE BIT(9)
|
||||
#define SSTG_EN_SRC_COLORKEY BIT(10)
|
||||
#define SSTG_EN_DST_COLORKEY BIT(12)
|
||||
#define SSTG_SRC_IS_TILED BIT(14)
|
||||
#define SSTG_DST_IS_TILED BIT(15)
|
||||
#define SSTG_EN_CLIP BIT(16)
|
||||
#define SSTG_TRANSPARENT BIT(17)
|
||||
|
||||
#define SSTG_GO BIT(31)
|
||||
|
||||
//----------------- SSTG baseAddr defines ---------------------------
|
||||
#define SSTG_LINEAR_STRIDE 0xFFF
|
||||
#define SSTG_TILES_INX 0x03F
|
||||
#define SSTG_TILES_BASEROW 0x3FF
|
||||
#define SSTG_TILES_INVERT_RS BIT(6)
|
||||
|
||||
//----------------- SSTG rop defines ---------------------------
|
||||
#define SSTG_ROP_ZERO 0x0UL
|
||||
#define SSTG_ROP_NOR 0x1UL
|
||||
#define SSTG_ROP_ANDI 0x2UL
|
||||
#define SSTG_ROP_NSRC 0x3UL
|
||||
#define SSTG_ROP_ANDR 0x4UL
|
||||
#define SSTG_ROP_NDST 0x5UL
|
||||
#define SSTG_ROP_XOR 0x6UL
|
||||
#define SSTG_ROP_NAND 0x7UL
|
||||
#define SSTG_ROP_AND 0x8UL
|
||||
#define SSTG_ROP_XNOR 0x9UL
|
||||
#define SSTG_ROP_DST 0xaUL
|
||||
#define SSTG_ROP_ORI 0xbUL
|
||||
#define SSTG_ROP_SRC 0xcUL
|
||||
#define SSTG_ROP_ORR 0xdUL
|
||||
#define SSTG_ROP_OR 0xeUL
|
||||
#define SSTG_ROP_ONE 0xfUL
|
||||
|
||||
|
||||
//----------------------- 3D Section ---------------------------
|
||||
//----------------------- 3D Section ---------------------------
|
||||
//----------------------- 3D Section ---------------------------
|
||||
#define MAX_NUM_TMUS 3
|
||||
|
||||
// SST commands
|
||||
#define SST_NOPCMD 1
|
||||
#define SST_TRIANGLECMD 2
|
||||
#define SST_FASTFILLCMD 3
|
||||
#define SST_SWAPBUFCMD 4
|
||||
#define SST_SBEGINTRICMD 5
|
||||
#define SST_SDRAWTRICMD 6
|
||||
|
||||
// this crazy macro fixes the binary point within a floating point
|
||||
// number so that it has 'fracbits' to the right of the binary point
|
||||
// it also adds a '1' bit to the MSB so that slightly negative numbers
|
||||
// end up looking like twos complement numbers (they carry out from the '1')
|
||||
#define FLOAT_FIX(f,fracbits) ((f)+(float)(3<<(22-(fracbits))))
|
||||
|
||||
#define SST_FLOAT(f,scale,shift) (unsigned long)((f)*((scale)*(float)(1<<shift)))
|
||||
#define SST_TLOD_MINMAX(lodmin,lodmax) \
|
||||
(((lodmin) << (SST_LODMIN_SHIFT)) | \
|
||||
((lodmax) << (SST_LODMAX_SHIFT)))
|
||||
#define SST_TLOD_MINMAX_INT(lodmin,lodmax) \
|
||||
(((lodmin) << (SST_LOD_FRACBITS+SST_LODMIN_SHIFT)) | \
|
||||
((lodmax) << (SST_LOD_FRACBITS+SST_LODMAX_SHIFT)))
|
||||
|
||||
// this crazy macro tests the sign bit of a float by loading it into
|
||||
// an integer register and then testing the sign bit of the integer
|
||||
#define FLOAT_ISNEG(f) ((*(int *)(&(f))) < 0)
|
||||
|
||||
// these crazy macros returns the sign of a number (1 if >= 0; -1 if < 0)
|
||||
#define ISIGN(x) (((x) | 0x40000000L) >> 30)
|
||||
#define FSIGN(f) ISIGN(*(long *)&f)
|
||||
|
||||
#define BIT(n) (1UL<<(n))
|
||||
#define SST_MASK(n) (0xFFFFFFFFL >> (32-(n)))
|
||||
#define SST_MASK64(n) FX_MASK64(n)
|
||||
|
||||
//----------------- SST binary point locations ---------------
|
||||
#define SST_LOD_SIZE 6
|
||||
#define SST_LOD_FRACBITS 2
|
||||
#define SST_XY_SIZE 16
|
||||
#define SST_XY_INTBITS 12
|
||||
#define SST_XY_FRACBITS 4
|
||||
#define SST_RGBA_SIZE 24
|
||||
#define SST_RGBA_INTBITS 8
|
||||
#define SST_RGBA_FRACBITS 12
|
||||
#define SST_Z_SIZE 32
|
||||
#define SST_Z_INTBITS 16
|
||||
#define SST_Z_FRACBITS 12
|
||||
// NOTE: below are ONLY for the fixed point registers
|
||||
#define SST_ST_SIZE 32
|
||||
#define SST_ST_INTBITS 14
|
||||
#define SST_ST_FRACBITS 18
|
||||
#define SST_W_SIZE 32
|
||||
#define SST_W_INTBITS 2
|
||||
#define SST_W_FRACBITS 30
|
||||
|
||||
//----------------- SST status bits ---------------------------
|
||||
#define SST_FIFOLEVEL 0x3F
|
||||
#define SST_VRETRACE BIT(6)
|
||||
#define SST_FBI_BUSY BIT(7)
|
||||
#define SST_TMU_BUSY BIT(8)
|
||||
#define SST_TREX_BUSY SST_TMU_BUSY
|
||||
#define SST_BUSY BIT(9)
|
||||
#define SST_DISPLAYED_BUFFER_SHIFT 10
|
||||
#define SST_DISPLAYED_BUFFER (0x3<<SST_DISPLAYED_BUFFER_SHIFT)
|
||||
#define SST_MEMFIFOLEVEL_SHIFT 12
|
||||
#define SST_MEMFIFOLEVEL (0xFFFF<<SST_MEMFIFOLEVEL_SHIFT)
|
||||
#define SST_SWAPBUFPENDING_SHIFT 28
|
||||
#define SST_SWAPBUFPENDING (0x7<<SST_SWAPBUFPENDING_SHIFT)
|
||||
|
||||
//----------------- SST intrCtrl bits ---------------------------
|
||||
#define SST_EN_HSYNC_RISING BIT(0)
|
||||
#define SST_EN_HSYNC_FALLING BIT(1)
|
||||
#define SST_EN_VSYNC_RISING BIT(2)
|
||||
#define SST_EN_VSYNC_FALLING BIT(3)
|
||||
#define SST_EN_PCI_FIFO_FULL BIT(4)
|
||||
#define SST_EN_USER_INTR BIT(5)
|
||||
#define SST_HSYNC_RISING BIT76)
|
||||
#define SST_HSYNC_FALLING BIT(7)
|
||||
#define SST_VSYNC_RISING BIT(8)
|
||||
#define SST_VSYNC_FALLING BIT(9)
|
||||
#define SST_PCI_FIFO_FULL BIT(10)
|
||||
#define SST_USER_INTR BIT(11)
|
||||
|
||||
//----------------- SST lfbMode bits --------------------------
|
||||
#define SST_LFB_FORMAT_SHIFT 0
|
||||
#define SST_LFB_FORMAT (0xF<<SST_LFB_FORMAT_SHIFT)
|
||||
# define SST_LFB_565 (0<<SST_LFB_FORMAT_SHIFT)
|
||||
# define SST_LFB_555 (1<<SST_LFB_FORMAT_SHIFT)
|
||||
# define SST_LFB_1555 (2<<SST_LFB_FORMAT_SHIFT)
|
||||
# define SST_LFB_u1 (3<<SST_LFB_FORMAT_SHIFT)
|
||||
# define SST_LFB_888 (4<<SST_LFB_FORMAT_SHIFT)
|
||||
# define SST_LFB_8888 (5<<SST_LFB_FORMAT_SHIFT)
|
||||
# define SST_LFB_u2 (6<<SST_LFB_FORMAT_SHIFT)
|
||||
# define SST_LFB_u3 (7<<SST_LFB_FORMAT_SHIFT)
|
||||
# define SST_LFB_Z565 (12<<SST_LFB_FORMAT_SHIFT)
|
||||
# define SST_LFB_Z555 (13<<SST_LFB_FORMAT_SHIFT)
|
||||
# define SST_LFB_Z1555 (14<<SST_LFB_FORMAT_SHIFT)
|
||||
# define SST_LFB_ZZ (15<<SST_LFB_FORMAT_SHIFT)
|
||||
#define SST_LFB_WRITEBUFSELECT_SHIFT 4
|
||||
#define SST_LFB_WRITEBUFSELECT (0x3<<SST_LFB_WRITEBUFSELECT_SHIFT)
|
||||
# define SST_LFB_WRITEFRONTBUFFER (0<<SST_LFB_WRITEBUFSELECT_SHIFT)
|
||||
# define SST_LFB_WRITEBACKBUFFER (1<<SST_LFB_WRITEBUFSELECT_SHIFT)
|
||||
#define SST_LFB_READBUFSELECT_SHIFT 6
|
||||
#define SST_LFB_READBUFSELECT (0x3<<SST_LFB_READBUFSELECT_SHIFT)
|
||||
# define SST_LFB_READFRONTBUFFER (0<<SST_LFB_READBUFSELECT_SHIFT)
|
||||
# define SST_LFB_READBACKBUFFER (1<<SST_LFB_READBUFSELECT_SHIFT)
|
||||
# define SST_LFB_READDEPTHABUFFER (2<<SST_LFB_READBUFSELECT_SHIFT)
|
||||
# define SST_LFB_READAUXBUFFER SST_LFB_READDEPTHABUFFER
|
||||
#define SST_LFB_ENPIXPIPE BIT(8)
|
||||
#define SST_LFB_RGBALANES_SHIFT 9
|
||||
#define SST_LFB_RGBALANES (0x3<<SST_LFB_RGBALANES_SHIFT)
|
||||
# define SST_LFB_RGBALANES_ARGB (0<<SST_LFB_RGBALANES_SHIFT)
|
||||
# define SST_LFB_RGBALANES_ABGR (1<<SST_LFB_RGBALANES_SHIFT)
|
||||
# define SST_LFB_RGBALANES_RGBA (2<<SST_LFB_RGBALANES_SHIFT)
|
||||
# define SST_LFB_RGBALANES_BGRA (3<<SST_LFB_RGBALANES_SHIFT)
|
||||
#define SST_LFB_WRITE_SWAP16 BIT(11)
|
||||
#define SST_LFB_WRITE_BYTESWAP BIT(12)
|
||||
#define SST_LFB_YORIGIN BIT(13)
|
||||
#define SST_LFB_WSELECT BIT(14)
|
||||
#define SST_LFB_READ_SWAP16 BIT(15)
|
||||
#define SST_LFB_READ_BYTESWAP BIT(16)
|
||||
|
||||
#define SST_LFB_ADDR_STRIDE 1024
|
||||
#define SST_LFB_ADDR_X_SHIFT 0
|
||||
#define SST_LFB_ADDR_X (0x3FF<<SST_LFB_ADDR_X_SHIFT)
|
||||
#define SST_LFB_ADDR_Y_SHIFT 10
|
||||
#define SST_LFB_ADDR_Y (0x3FF<<SST_LFB_ADDR_Y_SHIFT)
|
||||
|
||||
|
||||
//----------------- SST videoFilterRgbThreshold
|
||||
#define SST_VIDEOFILTER_BLUE_SHIFT 0
|
||||
#define SST_VIDEOFILTER_BLUE (0xff << SST_VIDEOFILTER_BLUE_SHIFT)
|
||||
#define SST_VIDEOFILTER_GREEN_SHIFT 8
|
||||
#define SST_VIDEOFILTER_GREEN (0xff << SST_VIDEOFILTER_GREEN_SHIFT)
|
||||
#define SST_VIDEOFILTER_RED_SHIFT 16
|
||||
#define SST_VIDEOFILTER_RED (0xff << SST_VIDEOFILTER_RED_SHIFT)
|
||||
|
||||
//----------------- SST textureMode bits -----------------------
|
||||
#define SST_TPERSP_ST BIT(0)
|
||||
#define SST_TMINFILTER BIT(1)
|
||||
#define SST_TMAGFILTER BIT(2)
|
||||
#define SST_TCLAMPW BIT(3)
|
||||
#define SST_TLODDITHER BIT(4)
|
||||
#define SST_TNCCSELECT BIT(5) // selects which table
|
||||
#define SST_TCLAMPS BIT(6)
|
||||
#define SST_TCLAMPT BIT(7)
|
||||
#define SST_T8BIT(mode) ((mode&SST_TFORMAT)<SST_ARGB8332)
|
||||
#define SST_TFORMAT_SHIFT 8
|
||||
#define SST_TFORMAT (0xF<<SST_TFORMAT_SHIFT)
|
||||
# define SST_RGB332 (0<<SST_TFORMAT_SHIFT)
|
||||
# define SST_YIQ422 (1<<SST_TFORMAT_SHIFT)
|
||||
# define SST_A8 (2<<SST_TFORMAT_SHIFT)
|
||||
# define SST_I8 (3<<SST_TFORMAT_SHIFT)
|
||||
# define SST_AI44 (4<<SST_TFORMAT_SHIFT)
|
||||
# define SST_P8 (5<<SST_TFORMAT_SHIFT)
|
||||
# define SST_P8_ARGB6666 (6<<SST_TFORMAT_SHIFT)
|
||||
# define SST_ARGB8332 (8<<SST_TFORMAT_SHIFT)
|
||||
# define SST_AYIQ8422 (9<<SST_TFORMAT_SHIFT)
|
||||
# define SST_RGB565 (10<<SST_TFORMAT_SHIFT)
|
||||
# define SST_ARGB1555 (11<<SST_TFORMAT_SHIFT)
|
||||
# define SST_ARGB4444 (12<<SST_TFORMAT_SHIFT)
|
||||
# define SST_AI88 (13<<SST_TFORMAT_SHIFT)
|
||||
# define SST_AP88 (14<<SST_TFORMAT_SHIFT)
|
||||
#define SST_TC_ZERO_OTHER BIT(12)
|
||||
#define SST_TC_SUB_CLOCAL BIT(13)
|
||||
#define SST_TC_MSELECT_SHIFT 14
|
||||
#define SST_TC_MSELECT (0x7<<SST_TC_MSELECT_SHIFT)
|
||||
# define SST_TC_MONE (0<<SST_TC_MSELECT_SHIFT)
|
||||
# define SST_TC_MCLOCAL (1<<SST_TC_MSELECT_SHIFT)
|
||||
# define SST_TC_MAOTHER (2<<SST_TC_MSELECT_SHIFT)
|
||||
# define SST_TC_MALOCAL (3<<SST_TC_MSELECT_SHIFT)
|
||||
# define SST_TC_MLOD (4<<SST_TC_MSELECT_SHIFT)
|
||||
# define SST_TC_MLODFRAC (5<<SST_TC_MSELECT_SHIFT)
|
||||
#define SST_TC_REVERSE_BLEND BIT(17)
|
||||
#define SST_TC_ADD_CLOCAL BIT(18)
|
||||
#define SST_TC_ADD_ALOCAL BIT(19)
|
||||
#define SST_TC_INVERT_OUTPUT BIT(20)
|
||||
#define SST_TCA_ZERO_OTHER BIT(21)
|
||||
#define SST_TCA_SUB_CLOCAL BIT(22)
|
||||
#define SST_TCA_MSELECT_SHIFT 23
|
||||
#define SST_TCA_MSELECT (0x7<<SST_TCA_MSELECT_SHIFT)
|
||||
# define SST_TCA_MONE (0<<SST_TCA_MSELECT_SHIFT)
|
||||
# define SST_TCA_MCLOCAL (1<<SST_TCA_MSELECT_SHIFT)
|
||||
# define SST_TCA_MAOTHER (2<<SST_TCA_MSELECT_SHIFT)
|
||||
# define SST_TCA_MALOCAL (3<<SST_TCA_MSELECT_SHIFT)
|
||||
# define SST_TCA_MLOD (4<<SST_TCA_MSELECT_SHIFT)
|
||||
# define SST_TCA_MLODFRAC (5<<SST_TCA_MSELECT_SHIFT)
|
||||
#define SST_TCA_REVERSE_BLEND BIT(26)
|
||||
#define SST_TCA_ADD_CLOCAL BIT(27)
|
||||
#define SST_TCA_ADD_ALOCAL BIT(28)
|
||||
#define SST_TCA_INVERT_OUTPUT BIT(29)
|
||||
#define SST_TRILINEAR BIT(30)
|
||||
#define SST_SEQ_8_DOWNLD BIT(31)
|
||||
|
||||
// here are some abstract constants that most people will be using
|
||||
// TC stands for Texture Combine (RGB channels)
|
||||
// TCA stands for Texture Combine Alpha (just the Alpha channel)
|
||||
// BLEND_ATT blends on the Alpha channel of the color passed from TMU to TMU
|
||||
// BLEND_ALOCAL blends on the Alpha channel of the local texture color
|
||||
// NOTE: and of the BLEND modes can be modified using SST_TC_REVERSE_BLEND
|
||||
// and/or SST_TCA_REVERSE_BLEND, these modifiers reverse the "polarity"
|
||||
// of the blend
|
||||
#define SST_TC_MZERO (SST_TC_MONE | SST_TC_REVERSE_BLEND)
|
||||
#define SST_TCA_MZERO (SST_TCA_MONE | SST_TCA_REVERSE_BLEND)
|
||||
|
||||
#define SST_TCOMBINE_SHIFT 12 // RGB COMBINE MODES
|
||||
#define SST_TCOMBINE (0x1FF<<SST_TCOMBINE_SHIFT)
|
||||
# define SST_TC_REPLACE (SST_TC_ZERO_OTHER | SST_TC_ADD_CLOCAL)
|
||||
# define SST_TC_PASS (SST_TC_MONE)
|
||||
# define SST_TC_ADD (SST_TC_MONE | SST_TC_ADD_CLOCAL)
|
||||
# define SST_TC_SUB (SST_TC_SUB_CLOCAL | SST_TC_MONE)
|
||||
# define SST_TC_MULT (SST_TC_MCLOCAL | SST_TC_REVERSE_BLEND)
|
||||
# define SST_TC_ZERO (SST_TC_MZERO)
|
||||
# define SST_TC_ONE (SST_TC_MZERO | SST_TC_INVERT_OUTPUT)
|
||||
# define SST_TC_BLEND (SST_TC_SUB_CLOCAL | SST_TC_ADD_CLOCAL)
|
||||
# define SST_TC_BLEND_LOD (SST_TC_BLEND | SST_TC_MLOD)
|
||||
# define SST_TC_BLEND_LODFRAC (SST_TC_BLEND | SST_TC_MLODFRAC)
|
||||
# define SST_TC_BLEND_ATT (SST_TC_BLEND | SST_TC_MAOTHER)
|
||||
# define SST_TC_BLEND_ALOCAL (SST_TC_BLEND | SST_TC_MALOCAL)
|
||||
#define SST_TACOMBINE_SHIFT 21 // ALPHA COMBINE MODES
|
||||
#define SST_TACOMBINE (0x1FF<<SST_TACOMBINE_SHIFT)
|
||||
# define SST_TCA_REPLACE (SST_TCA_ZERO_OTHER | SST_TCA_ADD_CLOCAL)
|
||||
# define SST_TCA_PASS (SST_TCA_MONE)
|
||||
# define SST_TCA_ADD (SST_TCA_MONE | SST_TCA_ADD_CLOCAL)
|
||||
# define SST_TCA_SUB (SST_TCA_SUB_CLOCAL | SST_TCA_MONE)
|
||||
# define SST_TCA_MULT (SST_TCA_MCLOCAL | SST_TCA_REVERSE_BLEND)
|
||||
# define SST_TCA_ONE (SST_TCA_MZERO | SST_TCA_INVERT_OUTPUT)
|
||||
# define SST_TCA_ZERO (SST_TCA_MZERO)
|
||||
# define SST_TCA_BLEND (SST_TCA_SUB_CLOCAL | SST_TCA_ADD_CLOCAL)
|
||||
# define SST_TCA_BLEND_LOD (SST_TCA_BLEND | SST_TCA_MLOD)
|
||||
# define SST_TCA_BLEND_LODFRAC (SST_TCA_BLEND | SST_TCA_MLODFRAC)
|
||||
# define SST_TCA_BLEND_ATT (SST_TCA_BLEND | SST_TCA_MAOTHER)
|
||||
# define SST_TCA_BLEND_ALOCAL (SST_TCA_BLEND | SST_TCA_MALOCAL)
|
||||
#define SST_TMU_ACTIVE(texMode) \
|
||||
((texMode & (SST_TCOMBINE|SST_TACOMBINE)) != (SST_TC_PASS|SST_TCA_PASS))
|
||||
#define SST_TREX_ACTIVE(texMode) SST_TMU_ACTIVE(texMode)
|
||||
|
||||
//----------------- SST tLOD bits -----------------------------
|
||||
#define SST_LODMIN_SHIFT 0 // 4.2 format
|
||||
#define SST_LODMIN (0x3F<<SST_LODMIN_SHIFT)
|
||||
#define SST_LODMAX_SHIFT 6
|
||||
#define SST_LODMAX (0x3F<<SST_LODMAX_SHIFT)
|
||||
#define SST_LODBIAS_SHIFT 12
|
||||
#define SST_LODBIAS (0x3F<<SST_LODBIAS_SHIFT)
|
||||
#define SST_LOD_ODD BIT(18)
|
||||
#define SST_LOD_TSPLIT BIT(19)
|
||||
#define SST_LOD_S_IS_WIDER BIT(20)
|
||||
#define SST_LOD_ASPECT_SHIFT 21
|
||||
#define SST_LOD_ASPECT (0x3<<SST_LOD_ASPECT_SHIFT)
|
||||
#define SST_LOD_ZEROFRAC BIT(23)
|
||||
#define SST_TMULTIBASEADDR BIT(24)
|
||||
#define SST_TDATA_SWIZZLE BIT(25)
|
||||
#define SST_TDATA_SWAP BIT(26)
|
||||
#define SST_TDIRECT_WRITE BIT(27)
|
||||
#define SST_TMIRRORS BIT(28)
|
||||
#define SST_TMIRRORT BIT(29)
|
||||
|
||||
//----------------- SST tDetail bits --------------------------
|
||||
#define SST_DETAIL_MAX_SHIFT 0 // 8.0 format
|
||||
#define SST_DETAIL_MAX (0xFF<<SST_DETAIL_MAX_SHIFT)
|
||||
#define SST_DETAIL_BIAS_SHIFT 8 // 6.0 format signed
|
||||
#define SST_DETAIL_BIAS (0x3F<<SST_DETAIL_BIAS_SHIFT)
|
||||
#define SST_DETAIL_SCALE_SHIFT 14 // 3.0 format
|
||||
#define SST_DETAIL_SCALE (0x7<<SST_DETAIL_SCALE_SHIFT)
|
||||
#define SST_TMINFILTER_RGB BIT(17)
|
||||
#define SST_TMAGFILTER_RGB BIT(18)
|
||||
#define SST_TMINFILTER_A BIT(19)
|
||||
#define SST_TMAGFILTER_A BIT(20)
|
||||
#define SST_TFILTER_SEPARATE BIT(21)
|
||||
|
||||
//----------------- SST fbzMode bits --------------------------
|
||||
#define SST_ENRECTCLIP BIT(0)
|
||||
#define SST_ENCHROMAKEY BIT(1)
|
||||
#define SST_ENSTIPPLE BIT(2)
|
||||
#define SST_WBUFFER BIT(3)
|
||||
#define SST_ENDEPTHBUFFER BIT(4)
|
||||
# define SST_ZFUNC_LT BIT(5)
|
||||
# define SST_ZFUNC_EQ BIT(6)
|
||||
# define SST_ZFUNC_GT BIT(7)
|
||||
# define SST_ZFUNC_SHIFT 5
|
||||
# define SST_ZFUNC ( 0x7 << SST_ZFUNC_SHIFT )
|
||||
#define SST_ENDITHER BIT(8)
|
||||
#define SST_RGBWRMASK BIT(9)
|
||||
#define SST_ZAWRMASK BIT(10)
|
||||
#define SST_DITHER2x2 BIT(11)
|
||||
#define SST_ENSTIPPLEPATTERN BIT(12)
|
||||
#define SST_ENALPHAMASK BIT(13)
|
||||
#define SST_DRAWBUFFER_SHIFT 14
|
||||
#define SST_DRAWBUFFER (0x3<<SST_DRAWBUFFER_SHIFT)
|
||||
#define SST_DRAWBUFFER_FRONT (0<<SST_DRAWBUFFER_SHIFT)
|
||||
#define SST_DRAWBUFFER_BACK (1<<SST_DRAWBUFFER_SHIFT)
|
||||
#define SST_ENZBIAS BIT(16)
|
||||
#define SST_YORIGIN BIT(17)
|
||||
#define SST_ENALPHABUFFER BIT(18)
|
||||
#define SST_ENDITHERSUBTRACT BIT(19)
|
||||
#define SST_ABLEND_DITHER_SUB_EN SST_ENDITHERSUBTRACT
|
||||
#define SST_ENDITHERSUBTRACT BIT(19)
|
||||
#define SST_ZCOMPARE_TO_ZACOLOR BIT(20)
|
||||
#define SST_DEPTH_FLOAT_SEL BIT(21)
|
||||
|
||||
//----------------- SST fbzColorPath bits ---------------------------
|
||||
#define SST_RGBSELECT_SHIFT 0
|
||||
#define SST_RGBSELECT (0x3<<SST_RGBSELECT_SHIFT)
|
||||
# define SST_RGBSEL_RGBA (0<<SST_RGBSELECT_SHIFT)
|
||||
# define SST_RGBSEL_TMUOUT (1<<SST_RGBSELECT_SHIFT)
|
||||
# define SST_RGBSEL_TREXOUT SST_RGBSEL_TMUOUT
|
||||
# define SST_RGBSEL_C1 (2<<SST_RGBSELECT_SHIFT)
|
||||
# define SST_RGBSEL_LFB (3<<SST_RGBSELECT_SHIFT)
|
||||
#define SST_ASELECT_SHIFT 2
|
||||
#define SST_ASELECT (0x3<<SST_ASELECT_SHIFT)
|
||||
# define SST_ASEL_RGBA (0<<SST_ASELECT_SHIFT)
|
||||
# define SST_ASEL_TMUOUT (1<<SST_ASELECT_SHIFT)
|
||||
# define SST_ASEL_TREXOUT SST_ASEL_TMUOUT
|
||||
# define SST_ASEL_C1 (2<<SST_ASELECT_SHIFT)
|
||||
# define SST_ASEL_LFB (3<<SST_ASELECT_SHIFT)
|
||||
#define SST_LOCALSELECT_SHIFT 4
|
||||
#define SST_LOCALSELECT BIT(4)
|
||||
#define SST_ALOCALSELECT_SHIFT 5
|
||||
#define SST_ALOCALSELECT (0x3<<SST_ALOCALSELECT_SHIFT)
|
||||
#define SST_ALOCAL_ITERATOR (0<<SST_ALOCALSELECT_SHIFT)
|
||||
#define SST_ALOCAL_C0 (1<<SST_ALOCALSELECT_SHIFT)
|
||||
#define SST_ALOCAL_Z (2<<SST_ALOCALSELECT_SHIFT)
|
||||
#define SST_ALOCAL_W (3<<SST_ALOCALSELECT_SHIFT)
|
||||
#define SST_LOCALSELECT_OVERRIDE_WITH_ATEX BIT(7)
|
||||
#define SST_CC_ZERO_OTHER BIT(8)
|
||||
#define SST_CC_SUB_CLOCAL BIT(9)
|
||||
#define SST_CC_MSELECT_SHIFT 10
|
||||
#define SST_CC_MSELECT (0x7<<SST_CC_MSELECT_SHIFT)
|
||||
# define SST_CC_MONE (0<<SST_CC_MSELECT_SHIFT)
|
||||
# define SST_CC_MCLOCAL (1<<SST_CC_MSELECT_SHIFT)
|
||||
# define SST_CC_MAOTHER (2<<SST_CC_MSELECT_SHIFT)
|
||||
# define SST_CC_MALOCAL (3<<SST_CC_MSELECT_SHIFT)
|
||||
# define SST_CC_MATMU (4<<SST_CC_MSELECT_SHIFT)
|
||||
# define SST_CC_MATREX SST_CC_MATMU
|
||||
# define SST_CC_MRGBTMU (5<<SST_CC_MSELECT_SHIFT)
|
||||
#define SST_CC_REVERSE_BLEND BIT(13)
|
||||
#define SST_CC_ADD_CLOCAL BIT(14)
|
||||
#define SST_CC_ADD_ALOCAL BIT(15)
|
||||
#define SST_CC_INVERT_OUTPUT BIT(16)
|
||||
#define SST_CCA_ZERO_OTHER BIT(17)
|
||||
#define SST_CCA_SUB_CLOCAL BIT(18)
|
||||
#define SST_CCA_MSELECT_SHIFT 19
|
||||
#define SST_CCA_MSELECT (0x7<<SST_CCA_MSELECT_SHIFT)
|
||||
# define SST_CCA_MONE (0<<SST_CCA_MSELECT_SHIFT)
|
||||
# define SST_CCA_MCLOCAL (1<<SST_CCA_MSELECT_SHIFT)
|
||||
# define SST_CCA_MAOTHER (2<<SST_CCA_MSELECT_SHIFT)
|
||||
# define SST_CCA_MALOCAL (3<<SST_CCA_MSELECT_SHIFT)
|
||||
# define SST_CCA_MATMU (4<<SST_CCA_MSELECT_SHIFT)
|
||||
# define SST_CCA_MATREX SST_CCA_MATMU
|
||||
#define SST_CCA_REVERSE_BLEND BIT(22)
|
||||
#define SST_CCA_ADD_CLOCAL BIT(23)
|
||||
#define SST_CCA_ADD_ALOCAL BIT(24)
|
||||
#define SST_CCA_INVERT_OUTPUT BIT(25)
|
||||
#define SST_PARMADJUST BIT(26)
|
||||
#define SST_ENTEXTUREMAP BIT(27)
|
||||
#define SST_RGBAZ_CLAMP BIT(28)
|
||||
#define SST_ENANTIALIAS BIT(29)
|
||||
|
||||
// here are some abstract constants that most people will be using
|
||||
// CC stands for Color Combine (RGB channels)
|
||||
// CCA stands for Color Combine Alpha (just the Alpha channel)
|
||||
// BLEND_ATT blends on the Alpha channel of the color passed from TMU to TMU
|
||||
// BLEND_ALOCAL blends on the Alpha channel of the local texture color
|
||||
// NOTE: and of the BLEND modes can be modified using SST_CC_REVERSE_BLEND
|
||||
// and/or SST_CCA_REVERSE_BLEND, these modifiers reverse the "polarity"
|
||||
// of the blend
|
||||
#define SST_CC_MZERO (SST_CC_MONE | SST_CC_REVERSE_BLEND)
|
||||
#define SST_CCA_MZERO (SST_CCA_MONE | SST_CCA_REVERSE_BLEND)
|
||||
|
||||
#define SST_CCOMBINE_SHIFT 8 // RGB COMBINE MODES
|
||||
#define SST_CCOMBINE (0x1FF<<SST_CCOMBINE_SHIFT)
|
||||
# define SST_CC_REPLACE (SST_CC_ZERO_OTHER | SST_CC_ADD_CLOCAL)
|
||||
# define SST_CC_PASS (SST_CC_MONE)
|
||||
# define SST_CC_ADD (SST_CC_MONE | SST_CC_ADD_CLOCAL)
|
||||
# define SST_CC_SUB (SST_CC_SUB_CLOCAL | SST_CC_MONE)
|
||||
# define SST_CC_MULT (SST_CC_MCLOCAL | SST_CC_REVERSE_BLEND)
|
||||
# define SST_CC_ZERO (SST_CC_MZERO)
|
||||
# define SST_CC_ONE (SST_CC_MZERO | SST_CC_INVERT_OUTPUT)
|
||||
# define SST_CC_BLEND (SST_CC_SUB_CLOCAL | SST_CC_ADD_CLOCAL)
|
||||
# define SST_CC_BLEND_ATT (SST_CC_BLEND | SST_CC_MAOTHER)
|
||||
# define SST_CC_BLEND_ATEX (SST_CC_BLEND | SST_CC_MATMU)
|
||||
# define SST_CC_BLEND_ATEX_REV (SST_CC_BLEND | SST_CC_MATMU | SST_CC_REVERSE_BLEND)
|
||||
# define SST_CC_BLEND_ATT_REV (SST_CC_BLEND | SST_CC_MAOTHER | SST_CC_REVERSE_BLEND)
|
||||
# define SST_CC_BLEND_ALOCAL (SST_CC_BLEND | SST_CC_MALOCAL)
|
||||
#define SST_CACOMBINE_SHIFT 17 // ALPHA COMBINE MODES
|
||||
#define SST_CACOMBINE (0x1FF<<SST_CACOMBINE_SHIFT)
|
||||
# define SST_CCA_REPLACE (SST_CCA_ZERO_OTHER | SST_CCA_ADD_CLOCAL)
|
||||
# define SST_CCA_PASS (SST_CCA_MONE)
|
||||
# define SST_CCA_ADD (SST_CCA_MONE | SST_CCA_ADD_CLOCAL)
|
||||
# define SST_CCA_SUB (SST_CCA_SUB_CLOCAL | SST_CCA_MONE)
|
||||
# define SST_CCA_MULT (SST_CCA_MCLOCAL | SST_CCA_REVERSE_BLEND)
|
||||
# define SST_CCA_ONE (SST_CCA_MZERO | SST_CCA_INVERT_OUTPUT)
|
||||
# define SST_CCA_ZERO (SST_CCA_MZERO)
|
||||
# define SST_CCA_BLEND (SST_CCA_SUB_CLOCAL | SST_CCA_ADD_CLOCAL)
|
||||
# define SST_CCA_BLEND_ATT (SST_CCA_BLEND | SST_CCA_MAOTHER)
|
||||
# define SST_CCA_BLEND_ATEX (SST_CCA_BLEND | SST_CCA_MATMU)
|
||||
# define SST_CCA_BLEND_ATEX_REV (SST_CCA_BLEND | SST_CCA_MATMU | SST_CCA_REVERSE_BLEN)
|
||||
# define SST_CCA_BLEND_ATT_REV (SST_CCA_BLEND | SST_CCA_MAOTHER | SST_CCA_REVERSE_BLEND)
|
||||
# define SST_CCA_BLEND_ALOCAL (SST_CCA_BLEND | SST_CCA_MALOCAL)
|
||||
|
||||
//----------------- SST fogMode bits ---------------------------
|
||||
#define SST_ENFOGGING BIT(0) // Afog*Cfog + (1-Afog)*Color
|
||||
#define SST_FOGADD BIT(1) // generates (1-Afog)*Color
|
||||
#define SST_FOGMULT BIT(2) // generates Afog*Cfog
|
||||
#define SST_FOG_ALPHA BIT(3) // use Alpha iterator to control fog
|
||||
#define SST_FOG_Z BIT(4) // use Z iterator to control fog
|
||||
#define SST_FOG_CONSTANT BIT(5) // simply add Cfog to color and clamp
|
||||
#define SST_FOG_DITHER BIT(6) // dither the Afog
|
||||
#define SST_FOG_ZONES BIT(7) // enable signed fog deltas
|
||||
|
||||
//----------------- SST alphaMode bits ------------------------
|
||||
#define SST_ENALPHAFUNC BIT(0)
|
||||
#define SST_ALPHAFNC_SHIFT 1
|
||||
#define SST_ALPHAFUNC_SHIFT 1
|
||||
# define SST_ALPHAFUNC_LT BIT(1)
|
||||
# define SST_ALPHAFUNC_EQ BIT(2)
|
||||
# define SST_ALPHAFUNC_GT BIT(3)
|
||||
# define SST_ALPHAFNC ( 0x7 << SST_ALPHAFNC_SHIFT )
|
||||
# define SST_ALPHAFUNC ( 0x7 << SST_ALPHAFUNC_SHIFT )
|
||||
#define SST_ENALPHABLEND BIT(4)
|
||||
// unused BIT(5)
|
||||
#define SST_RGBSRCFACT_SHIFT 8 // RGB source factor
|
||||
#define SST_RGBSRCFACT (0xF<<SST_RGBSRCFACT_SHIFT)
|
||||
# define SST_A_ZERO 0
|
||||
# define SST_A_SRCALPHA 1
|
||||
# define SST_A_COLOR 2
|
||||
# define SST_A_DSTALPHA 3
|
||||
# define SST_A_ONE 4
|
||||
# define SST_AOM_SRCALPHA 5
|
||||
# define SST_AOM_COLOR 6
|
||||
# define SST_AOM_DSTALPHA 7
|
||||
# define SST_A_SATURATE 0xF // for SRC factor only
|
||||
# define SST_A_COLORBEFOREFOG 0xF // for DST factor only
|
||||
#define SST_RGBDSTFACT_SHIFT 12 // RGB destination factor
|
||||
#define SST_RGBDSTFACT (0xF<<SST_RGBDSTFACT_SHIFT)
|
||||
#define SST_ASRCFACT_SHIFT 16 // A source factor
|
||||
#define SST_ASRCFACT (0xF<<SST_ASRCFACT_SHIFT)
|
||||
#define SST_ADSTFACT_SHIFT 20 // A destination factor
|
||||
#define SST_ADSTFACT (0xF<<SST_ADSTFACT_SHIFT)
|
||||
#define SST_ALPHAREF_SHIFT 24
|
||||
#define SST_ALPHAREF (0xFF<<SST_ALPHAREF_SHIFT)
|
||||
|
||||
//---------------- SST zaColor bits ----------------------
|
||||
#define SST_ZACOLOR_DEPTH_SHIFT 0
|
||||
#define SST_ZACOLOR_DEPTH ( 0xFFFF << SST_ZACOLOR_DEPTH_SHIFT )
|
||||
#define SST_ZACOLOR_ALPHA_SHIFT 24
|
||||
#define SST_ZACOLOR_ALPHA ( 0xFF << SST_ZACOLOR_ALPHA_SHIFT )
|
||||
|
||||
//----------------- SST chromaRange bits ------------------------
|
||||
#define SST_CHROMARANGE_BLUE_EX BIT(24)// Blue value in exclusive mode
|
||||
#define SST_CHROMARANGE_GREEN_EX BIT(25)// Green value in exclusive mode
|
||||
#define SST_CHROMARANGE_RED_EX BIT(26)// Red value in exclusive mode
|
||||
#define SST_CHROMARANGE_BLOCK_OR BIT(27)// Union of all colors.
|
||||
#define SST_ENCHROMARANGE BIT(28)
|
||||
#define SST_ENCHROMAKEY_TMU BIT(29) // only for TMU
|
||||
#define SST_ENCOLORSUBSTITUTION BIT(30) // only for TMU
|
||||
|
||||
//----------------- SST clip bits ------------------------
|
||||
//clipLeftRight
|
||||
#define SST_CLIPLEFT_SHIFT 16
|
||||
#define SST_CLIPRIGHT_SHIFT 0
|
||||
//clipBottomTop
|
||||
#define SST_CLIPBOTTOM_SHIFT 16
|
||||
#define SST_CLIPTOP_SHIFT 0
|
||||
|
||||
//----------------- SST sSetupMode bits ------------------------
|
||||
#define SST_SETUP_RGB BIT(0)
|
||||
#define SST_SETUP_A BIT(1)
|
||||
#define SST_SETUP_Z BIT(2)
|
||||
#define SST_SETUP_Wfbi BIT(3)
|
||||
#define SST_SETUP_W0 BIT(4)
|
||||
#define SST_SETUP_ST0 BIT(5)
|
||||
#define SST_SETUP_W1 BIT(6)
|
||||
#define SST_SETUP_ST1 BIT(7)
|
||||
#define SST_SETUP_FAN BIT(16)
|
||||
#define SST_SETUP_EN_CULLING BIT(17)
|
||||
#define SST_SETUP_CULL_NEGATIVE BIT(18)
|
||||
#define SST_SETUP_DIS_PINGPONG BIT(19)
|
||||
|
||||
//----------------- SST fbiInit* ----------------------------
|
||||
// fbiInit0
|
||||
#define SST_EN_VGA_PASSTHRU BIT(0)
|
||||
#define SST_GRX_RESET BIT(1)
|
||||
#define SST_PCI_FIFO_RESET BIT(2)
|
||||
#define SST_EN_ENDIAN_SWAPPING BIT(3)
|
||||
#define SST_PCI_FIFO_LWM_SHIFT 6
|
||||
#define SST_PCI_FIFO_LWM (0x1F<<SST_PCI_FIFO_LWM_SHIFT)
|
||||
#define SST_EN_LFB_MEMFIFO BIT(11)
|
||||
#define SST_EN_TEX_MEMFIFO BIT(12)
|
||||
#define SST_MEM_FIFO_EN BIT(13)
|
||||
#define SST_MEM_FIFO_HWM_SHIFT 14
|
||||
#define SST_MEM_FIFO_HWM (0x7FF<<SST_MEM_FIFO_HWM_SHIFT)
|
||||
#define SST_MEM_FIFO_BURST_HWM_SHIFT 25
|
||||
#define SST_MEM_FIFO_BURST_HWM (0x3F<<SST_MEM_FIFO_BURST_HWM_SHIFT)
|
||||
// fbiInit1
|
||||
#define SST_PCI_WRWS_0 0x0
|
||||
#define SST_PCI_WRWS_1 BIT(1)
|
||||
#define SST_LFB_READ_EN BIT(3)
|
||||
#define SST_VIDEO_TILES_IN_X_SHIFT 4
|
||||
#define SST_VIDEO_TILES_IN_X (0xF<<SST_VIDEO_TILES_IN_X_SHIFT)
|
||||
# define SST_VIDEO_TILES_IN_X_448 (7<<SST_VIDEO_TILES_IN_X_SHIFT)
|
||||
# define SST_VIDEO_TILES_IN_X_512 (8<<SST_VIDEO_TILES_IN_X_SHIFT)
|
||||
# define SST_VIDEO_TILES_IN_X_640 (10<<SST_VIDEO_TILES_IN_X_SHIFT)
|
||||
# define SST_VIDEO_TILES_IN_X_832 (13<<SST_VIDEO_TILES_IN_X_SHIFT)
|
||||
# define SST_VIDEO_TILES_IN_X_800 SST_VIDEO_TILES_IN_X_832
|
||||
#define SST_VIDEO_RESET BIT(8)
|
||||
#define SST_VIDEO_RUN 0
|
||||
#define SST_VIDEO_STOP BIT(8)
|
||||
#define SST_HVSYNC_OVERRIDE BIT(9)
|
||||
#define SST_HSYNC_OVERRIDE_VAL BIT(10)
|
||||
#define SST_VSYNC_OVERRIDE_VAL BIT(11)
|
||||
#define SST_VIDEO_BLANK_EN BIT(12)
|
||||
#define SST_VIDEO_DATA_OE_EN BIT(13)
|
||||
#define SST_VIDEO_BLANK_OE_EN BIT(14)
|
||||
#define SST_VIDEO_HVSYNC_OE_EN BIT(15)
|
||||
#define SST_VIDEO_DCLK_OE_EN BIT(16)
|
||||
#define SST_VIDEO_VID_CLK_SEL BIT(17)
|
||||
#define SST_VIDEO_VID_CLK_2X 0x0
|
||||
#define SST_VIDEO_VID_CLK_SLAVE BIT(17)
|
||||
#define SST_VIDEO_VCLK_2X_INPUT_DEL_SHIFT 18
|
||||
#define SST_VIDEO_VCLK_2X_INPUT_DEL (0x3<<SST_VIDEO_VCLK_2X_INPUT_DEL_SHIFT)
|
||||
#define SST_VIDEO_VCLK_SEL_SHIFT 20
|
||||
# define SST_VIDEO_VCLK_SEL (0x3<<SST_VIDEO_VCLK_SEL_SHIFT)
|
||||
# define SST_VIDEO_VCLK_DIV2 (0x1<<SST_VIDEO_VCLK_SEL_SHIFT)
|
||||
#define SST_VIDEO_24BPP_EN BIT(22)
|
||||
#define SST_EN_SCANLINE_INTERLEAVE BIT(23)
|
||||
#define SST_VIDEO_FILTER_EN BIT(25)
|
||||
#define SST_VIDEO_INVERT_VID_CLK_2X BIT(26)
|
||||
#define SST_VIDEO_VCLK_2X_OUTPUT_DEL_SHIFT 27
|
||||
# define SST_VIDEO_VCLK_2X_OUTPUT_DEL (0x3<<SST_VIDEO_VCLK_2X_OUTPUT_DEL_SHIFT)
|
||||
#define SST_VIDEO_VCLK_DEL_SHIFT 29
|
||||
# define SST_VIDEO_VCLK_DEL (0x3<<SST_VIDEO_VCLK_DEL_SHIFT)
|
||||
#define SST_DISEN_RD_AHEAD_WR_RD BIT(31)
|
||||
#define SST_VIDEO_MASK 0x7e7ffe00
|
||||
// fbiInit2
|
||||
#define SST_VIDEO_DITHER_SUB_EN BIT(0)
|
||||
#define SST_DRAM_BANKING_CONFIG BIT(1)
|
||||
#define SST_EN_FAST_RAS_READ BIT(5)
|
||||
#define SST_EN_OE_GEN BIT(6)
|
||||
#define SST_EN_FAST_RD_AHEAD_WR BIT(7)
|
||||
#define SST_EN_DITHER_PASSTHRU BIT(8)
|
||||
#define SST_SWAP_ALGORITHM_SHIFT 9
|
||||
#define SST_SWAP_ALGORITHM (0x3<<SST_SWAP_ALGORITHM_SHIFT)
|
||||
# define SST_SWAP_VSYNC (0<<SST_SWAP_ALGORITHM_SHIFT)
|
||||
# define SST_SWAP_DACDATA0 (1<<SST_SWAP_ALGORITHM_SHIFT)
|
||||
# define SST_SWAP_FIFOSTALL (2<<SST_SWAP_ALGORITHM_SHIFT)
|
||||
#define SST_VIDEO_BUFFER_OFFSET_SHIFT 11
|
||||
#define SST_VIDEO_BUFFER_OFFSET (0x1FF<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
|
||||
# define SST_VIDEO_BUFFER_OFFSET_448 (77<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
|
||||
# define SST_VIDEO_BUFFER_OFFSET_512 (96<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
|
||||
# define SST_VIDEO_BUFFER_OFFSET_640 (150<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
|
||||
# define SST_VIDEO_BUFFER_OFFSET_832 (247<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
|
||||
# define SST_VIDEO_BUFFER_OFFSET_1024 (384<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
|
||||
#define SST_VIDEO_BUFFER_OFFSET_800 SST_VIDEO_BUFFER_OFFSET_832
|
||||
#define SST_EN_DRAM_BANKED BIT(20)
|
||||
#define SST_EN_DRAM_RD_AHEAD_FIFO BIT(21)
|
||||
#define SST_EN_DRAM_REFRESH BIT(22)
|
||||
#define SST_DRAM_REFRESH_CNTR_SHIFT 23
|
||||
# define SST_DRAM_REFRESH_CNTR (0x1FF<<SST_DRAM_REFRESH_CNTR_SHIFT)
|
||||
#define SST_DRAM_REFRESH_16MS (0x30 << SST_DRAM_REFRESH_CNTR_SHIFT)
|
||||
// fbiInit3
|
||||
#define SST_ALT_REGMAPPING BIT(0)
|
||||
#define SST_VIDEO_FIFO_THRESH_SHIFT 1
|
||||
# define SST_VIDEO_FIFO_THRESH (0x1F<<SST_VIDEO_FIFO_THRESH_SHIFT)
|
||||
#define SST_YORIGIN_TOP_SHIFT 22
|
||||
# define SST_YORIGIN_TOP (0x3FF<<SST_YORIGIN_TOP_SHIFT)
|
||||
#define SST_YORIGIN_SUBVAL_SHIFT SST_YORIGIN_TOP_SHIFT
|
||||
#define SST_YORIGIN_SUBVAL (0x3FF<<SST_YORIGIN_SUBVAL_SHIFT)
|
||||
// fbiInit4
|
||||
#define SST_FBIINIT4_DEFAULT 0x00000001
|
||||
#define SST_PCI_RDWS_1 0x0
|
||||
#define SST_PCI_RDWS_2 BIT(0)
|
||||
#define SST_EN_LFB_RDAHEAD BIT(1)
|
||||
#define SST_MEM_FIFO_LWM_SHIFT 2
|
||||
#define SST_MEM_FIFO_LWM (0x3F<<SST_MEM_FIFO_LWM_SHIFT)
|
||||
#define SST_MEM_FIFO_ROW_BASE_SHIFT 8
|
||||
#define SST_MEM_FIFO_ROW_BASE (0x3FF<<SST_MEM_FIFO_ROW_BASE_SHIFT)
|
||||
#define SST_MEM_FIFO_ROW_ROLL_SHIFT 18
|
||||
#define SST_MEM_FIFO_ROW_ROLL (0x3FF<<SST_MEM_FIFO_ROW_ROLL_SHIFT)
|
||||
// fbiInit7
|
||||
#define SST_EN_CMDFIFO BIT(8)
|
||||
#define SST_EN_CMDFIFO_OFFSCREEN BIT(9)
|
||||
#define SST_CMDFIFO_DISABLE_HOLES BIT(10)
|
||||
#define SST_CMDFIFO_RDFETCH_THRESH_SHIFT 11
|
||||
#define SST_CMDFIFO_RDFETCH_THRESH (0x1FUL<<SST_CMDFIFO_RDFETCH_THRESH_SHIFT)
|
||||
#define SST_CMDFIFO_REGS_SYNC_WRITES BIT(16)
|
||||
#define SST_CMDFIFO_REGS_SYNC_READS BIT(17)
|
||||
#define SST_PCI_PACKER_RESET BIT(18)
|
||||
#define SST_TMU_CHROMA_REG_WR_EN BIT(19)
|
||||
#define SST_CMDFIFO_PCI_TIMEOUT_SHIFT 20
|
||||
#define SST_CMDFIFO_PCI_TIMEOUT (0x7FUL<<SST_CMDFIFO_PCI_TIMEOUT_SHIFT)
|
||||
|
||||
/*----------------- SST clutData bits -----------------------*/
|
||||
#define SST_CLUTDATA_INDEX_SHIFT 24
|
||||
#define SST_CLUTDATA_RED_SHIFT 16
|
||||
#define SST_CLUTDATA_GREEN_SHIFT 8
|
||||
#define SST_CLUTDATA_BLUE_SHIFT 0
|
||||
|
||||
//----------------- SST dacData bits --------------------------
|
||||
#define SST_DACDATA_DATA (0xFF)
|
||||
#define SST_DACDATA_ADDR_SHIFT 8
|
||||
#define SST_DACDATA_ADDR (0x7<<SST_DACDATA_ADDR_SHIFT)
|
||||
#define SST_DACDATA_RD BIT(11)
|
||||
#define SST_DACDATA_WR 0x0
|
||||
|
||||
//----------------- nopCMD bits -------------------------------
|
||||
#define SST_NOP_RESET_PIXEL_STATS BIT(0)
|
||||
#define SST_NOP_RESET_TRIANGLE_STATS BIT(1)
|
||||
|
||||
//----------------- swapBufferCMD bits ------------------------
|
||||
#define SST_SWAP_EN_WAIT_ON_VSYNC BIT(0)
|
||||
#define SST_SWAP_BUFFER_INTERVAL_SHIFT 1
|
||||
#define SST_SWAP_BUFFER_INTERVAL (0xff << SST_SWAP_BUFFER_INTERVAL_SHIFT)
|
||||
#define SST_SWAP_DONT_SWAP BIT(9)
|
||||
|
||||
//----------------- SST Configuration Registers ---------------
|
||||
#define SST_MEMBASE_ADDR 0x10
|
||||
#define SST_INIT_ENABLE 0x40
|
||||
#define SST_BUS_SNOOP0 0x44
|
||||
#define SST_BUS_SNOOP1 0x48
|
||||
#define SST_CFG_STATUS 0x4c
|
||||
|
||||
//----------------- SST Remapped Registers --------------------
|
||||
#define SST_DAC_RD_DATA 0x00000218
|
||||
#define SST_VIDEO_CHECKSUM 0x0000021c
|
||||
|
||||
//----------------- SST initEnable (Config register) bits -----
|
||||
#define SST_INITWR_EN BIT(0)
|
||||
#define SST_PCI_FIFOWR_EN BIT(1)
|
||||
#define SST_FBIINIT23_REMAP BIT(2)
|
||||
#define SST_SNOOP0_EN BIT(4)
|
||||
#define SST_SNOOP0_IO BIT(5)
|
||||
#define SST_SNOOP0_RD BIT(6)
|
||||
#define SST_SNOOP1_EN BIT(7)
|
||||
#define SST_SNOOP1_IO BIT(8)
|
||||
#define SST_SNOOP1_RD BIT(9)
|
||||
#define SST_SCANLINE_SLV_OWNPCI BIT(10)
|
||||
#define SST_SCANLINE_SLI_SLV BIT(11)
|
||||
|
||||
//----------------- SST vRetrace bits ---------------------
|
||||
#define SST_VRETRACE_VSYNC_OFF 0xff
|
||||
|
||||
//----------------- SST hSync bits ------------------------
|
||||
#define SST_HSYNC_ON 0xff
|
||||
#define SST_HSYNC_OFF_SHIFT 16
|
||||
#define SST_HSYNC_OFF (0x3ff << SST_HSYNCOFF_SHIFT)
|
||||
|
||||
//----------------- SST vSync bits ------------------------
|
||||
#define SST_VSYNC_ON 0xff
|
||||
#define SST_VSYNC_OFF_SHIFT 16
|
||||
#define SST_VSYNC_OFF (0xfff << SST_VSYNC_OFF_SHIFT)
|
||||
|
||||
//----------------- SST backPorch bits --------------------
|
||||
#define SST_HBACKPORCH 0xff
|
||||
#define SST_VBACKPORCH_SHIFT 16
|
||||
#define SST_VBACKPORCH (0xff << SST_VBACKPORCH_SHIFT)
|
||||
|
||||
//----------------- SST videoDimensionS Register -----------
|
||||
#define SST_VIDEODIMENSIONS_X 0x3ff
|
||||
#define SST_VIDEODIMENSIONS_Y_SHIFT 16
|
||||
#define SST_VIDEODIMENSIONS_Y 0x3ff
|
||||
|
||||
// Here are the defines for the alternate register mappings
|
||||
#define r_ALT r
|
||||
#define drdx_ALT g
|
||||
#define drdy_ALT b
|
||||
#define g_ALT z
|
||||
#define dgdx_ALT a
|
||||
#define dgdy_ALT s
|
||||
#define b_ALT t
|
||||
#define dbdx_ALT w
|
||||
|
||||
#define dbdy_ALT drdx
|
||||
#define z_ALT dgdx
|
||||
#define dzdx_ALT dbdx
|
||||
#define dzdy_ALT dzdx
|
||||
#define a_ALT dadx
|
||||
#define dadx_ALT dsdx
|
||||
#define dady_ALT dtdx
|
||||
#define s_ALT dwdx
|
||||
|
||||
#define dsdx_ALT drdy
|
||||
#define dsdy_ALT dgdy
|
||||
#define t_ALT dbdy
|
||||
#define dtdx_ALT dzdy
|
||||
#define dtdy_ALT dady
|
||||
#define w_ALT dsdy
|
||||
#define dwdx_ALT dtdy
|
||||
#define dwdy_ALT dwdy
|
||||
|
||||
#define Fr_ALT Fr
|
||||
#define Fdrdx_ALT Fg
|
||||
#define Fdrdy_ALT Fb
|
||||
#define Fg_ALT Fz
|
||||
#define Fdgdx_ALT Fa
|
||||
#define Fdgdy_ALT Fs
|
||||
#define Fb_ALT Ft
|
||||
#define Fdbdx_ALT Fw
|
||||
|
||||
#define Fdbdy_ALT Fdrdx
|
||||
#define Fz_ALT Fdgdx
|
||||
#define Fdzdx_ALT Fdbdx
|
||||
#define Fdzdy_ALT Fdzdx
|
||||
#define Fa_ALT Fdadx
|
||||
#define Fdadx_ALT Fdsdx
|
||||
#define Fdady_ALT Fdtdx
|
||||
#define Fs_ALT Fdwdx
|
||||
|
||||
#define Fdsdx_ALT Fdrdy
|
||||
#define Fdsdy_ALT Fdgdy
|
||||
#define Ft_ALT Fdbdy
|
||||
#define Fdtdx_ALT Fdzdy
|
||||
#define Fdtdy_ALT Fdady
|
||||
#define Fw_ALT Fdsdy
|
||||
#define Fdwdx_ALT Fdtdy
|
||||
#define Fdwdy_ALT Fdwdy
|
||||
|
||||
//----------------- useful addressing macros -----------------------
|
||||
// return pointer to SST at specified WRAP, CHIP, or TREX
|
||||
#define SST_WRAP(sst,n) ((SstRegs *)((n)*0x4000+(FxI32)(sst)))
|
||||
#define SST_CHIP(sst,n) ((SstRegs *)((n)*0x400+(FxI32)(sst)))
|
||||
#define SST_TMU(sst,n) ((SstRegs *)((0x800<<(n))+(FxI32)(sst)))
|
||||
#define SST_TREX(sst,n) SST_TMU(sst,n)
|
||||
|
||||
#define SST_BYTESWAP_BIT BIT(20)
|
||||
#define SST_ALTMAP_BIT BIT(21)
|
||||
#define SST_LFB_BIT BIT(22)
|
||||
#define SST_TEX_BIT BIT(23)
|
||||
#define SST_LFB_ADDR SST_LFB_BIT
|
||||
#define SST_TEX_ADDR SST_TEX_BIT
|
||||
|
||||
// for new H3 code
|
||||
#define SST_3D_OFFSET 0
|
||||
#define SST_LFB_OFFSET SST_LFB_ADDR
|
||||
#define SST_TEX_OFFSET SST_TEX_ADDR
|
||||
|
||||
// return byte addresses of LFB and TEX spaces
|
||||
#define SST_LFB_ADDRESS(sst) (SST_LFB_BIT+(FxI32)(sst))
|
||||
#define SST_TEX_ADDRESS(sst) (SST_TEX_BIT+(FxI32)(sst))
|
||||
|
||||
|
||||
// SET macros for FBI
|
||||
#define SET_FBI(d,s) SET (*(&(d)+0x100),s)
|
||||
#define SET_FBIF(d,s) SETF(*(&(d)+0x100),s)
|
||||
|
||||
// SET macros for TMU0
|
||||
#define SET_0(d,s) SET (*(&(d)+0x200),s)
|
||||
#define SET_0F(d,s) SETF(*(&(d)+0x200),s)
|
||||
|
||||
// SET macros for FBI+TMU0
|
||||
#define SET_FBI_0(d,s) SET (*(&(d)+0x300),s)
|
||||
#define SET_FBI_0F(d,s) SETF(*(&(d)+0x300),s)
|
||||
|
||||
// SET macros for TMU1
|
||||
#define SET_1(d,s) SET (*(&(d)+0x400),s)
|
||||
#define SET_1F(d,s) SETF(*(&(d)+0x400),s)
|
||||
|
||||
// SET macros for FBI+TMU1
|
||||
#define SET_FBI_1(d,s) SET (*(&(d)+0x500),s)
|
||||
#define SET_FBI_1F(d,s) SETF(*(&(d)+0x500),s)
|
||||
|
||||
#endif /* !__CVGDEFS_H__ */
|
||||
141
glide_internal/cvginfo.h
Normal file
141
glide_internal/cvginfo.h
Normal file
@@ -0,0 +1,141 @@
|
||||
/*-*-c++-*-*/
|
||||
#ifndef __CVGINFO_H__
|
||||
#define __CVGINFO_H__
|
||||
|
||||
/*
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
** $Revision: 1.1.1.1 $
|
||||
** $Date: 1999/12/07 21:49:24 $
|
||||
*/
|
||||
|
||||
#if defined(__unix__) && ! defined(__CVGREGS_H__)
|
||||
// basic data types
|
||||
#define FxU32 unsigned long
|
||||
#define FxBool int
|
||||
// defn of registers not reqd, treat (SstRegs *) as (void *)
|
||||
typedef void SstRegs;
|
||||
#endif
|
||||
|
||||
#define MAX_NUM_TMUS 3
|
||||
|
||||
// Video timing data structure
|
||||
typedef struct {
|
||||
FxU32 hSyncOn;
|
||||
FxU32 hSyncOff;
|
||||
FxU32 vSyncOn;
|
||||
FxU32 vSyncOff;
|
||||
FxU32 hBackPorch;
|
||||
FxU32 vBackPorch;
|
||||
FxU32 xDimension;
|
||||
FxU32 yDimension;
|
||||
FxU32 refreshRate;
|
||||
FxU32 miscCtrl;
|
||||
FxU32 memOffset;
|
||||
FxU32 tilesInX;
|
||||
FxU32 vFifoThreshold;
|
||||
FxBool video16BPPIsOK;
|
||||
FxBool video24BPPIsOK;
|
||||
float clkFreq16bpp;
|
||||
float clkFreq24bpp;
|
||||
} sst1VideoTimingStruct;
|
||||
|
||||
/* Init code client callbacks to allow the init code to use the client
|
||||
* command fifo management code to do writes etc.
|
||||
*/
|
||||
typedef void (*FxSet32Proc)(volatile FxU32* const addr, const FxU32 val);
|
||||
|
||||
/*
|
||||
** CVG Device Information Structure
|
||||
**
|
||||
*/
|
||||
// Initialization and configuration data structure
|
||||
typedef struct {
|
||||
FxU32 size; // size of this structure
|
||||
SstRegs *virtAddr[2]; // virtual memory base address
|
||||
FxU32 physAddr[2]; // physical memory base address
|
||||
FxU32 deviceNumber; // PCI device number
|
||||
FxU32 vendorID; // PCI vendor ID
|
||||
FxU32 deviceID; // PCI device ID
|
||||
|
||||
FxU32 fbiRevision; // FBI revision number
|
||||
FxU32 fbiFab; // FBI Fab ID
|
||||
FxU32 fbiBoardID; // FBI board ID (poweron strapping bits)
|
||||
FxU32 fbiVideo16BPP; // FBI video display mode
|
||||
FxU32 fbiVideoWidth; // FBI video display X-resolution
|
||||
FxU32 fbiVideoHeight; // FBI video display Y-resolution
|
||||
FxU32 fbiVideoRefresh; // FBI video refresh rate
|
||||
FxU32 fbiVideoColBuffs; // FBI video number of color buffers
|
||||
FxU32 fbiVideoAuxBuffs; // FBI video number of Aux buffers
|
||||
FxU32 fbiVideoMemOffset; // FBI video memory offset (in pages)
|
||||
FxU32 fbiVideoTilesInX; // FBI video memory 32x32 tiles-in-X
|
||||
sst1VideoTimingStruct // FBI video resolution
|
||||
*fbiVideoStruct; // data structure
|
||||
FxU32 fbiVideoDacType; // FBI video dac type detected
|
||||
FxU32 fbiMemoryFifoEn; // FBI Memory Fifo enabled
|
||||
FxU32 fbiCmdFifoEn; // FBI Command Fifo enabled
|
||||
FxU32 fbiLfbLocked; // FBI frame buffer is locked
|
||||
FxU32 fbiConfig; // FBI strapping pins
|
||||
FxU32 fbiGrxClkFreq; // FBI graphics clock frequency
|
||||
FxU32 fbiMemSize; // FBI frame buffer memory (in MBytes)
|
||||
FxU32 fbiInitGammaDone; // FBI gamma table initialized
|
||||
double fbiGammaRed; // FBI Red gamma value
|
||||
double fbiGammaGreen; // FBI Green gamma value
|
||||
double fbiGammaBlue; // FBI Blue gamma value
|
||||
FxU32 fbiNandTree; // FBI Nand tree delay value
|
||||
FxU32 fbiNorTree; // FBI Nor tree delay value
|
||||
|
||||
FxU32 tmuRevision; // TMU revision number (for all TMUs)
|
||||
FxU32 tmuFab[MAX_NUM_TMUS]; // TMU Fab ID (for all TMUs)
|
||||
FxU32 numberTmus; // Number of TMUs installed
|
||||
FxU32 tmuConfig; // TMU configuration bits
|
||||
FxU32 tmuGrxClkFreq; // TMU graphics clock frequency
|
||||
FxU32 tmuMemSize[MAX_NUM_TMUS]; // TMU texture memory (in MBytes)
|
||||
|
||||
// Registers which cannot be read from the hardware, so we shadow them here
|
||||
FxU32 tmuInit0[MAX_NUM_TMUS]; // TMU initialization registers
|
||||
FxU32 tmuInit1[MAX_NUM_TMUS]; // TMU initialization registers
|
||||
FxU32 fbiInit6; // FBI initialization register
|
||||
FxU32 fbiInitEnable; // FBI PCI Configuration register initEnable
|
||||
|
||||
// Misc
|
||||
FxU32 sliDetected; // Scanline interleave detected
|
||||
FxU32 sliPaired; // Board part of an sli pair
|
||||
FxU32 monitorDetected; // Monitor connection detected
|
||||
FxU32 *sliSlaveVirtAddr; // Slave virtual address
|
||||
// Set to 0 if SLI is not enabled...
|
||||
FxU32 initGrxClkDone; // Grapics clock has been initializated
|
||||
FxU32 vgaPassthruDisable; // Value to force SST-1 control of monitor
|
||||
FxU32 vgaPassthruEnable; // Value to force VGA control of monitor
|
||||
FxU32 memFifoStatusLwm;
|
||||
|
||||
// Client setter callbacks
|
||||
FxSet32Proc set32;
|
||||
|
||||
// PCI library stuff
|
||||
FxU32 mtrrUncacheable; /* 3d register space (all wraps) */
|
||||
FxU32 mtrrWriteCombine; /* command fifo/3d lfb */
|
||||
|
||||
SstRegs *sstCSIM;
|
||||
SstRegs *sstHW; // pointer to HW
|
||||
} sst1DeviceInfoStruct;
|
||||
|
||||
typedef sst1DeviceInfoStruct FxDeviceInfo;
|
||||
|
||||
#endif /* !__CVGINFO_H__ */
|
||||
229
glide_internal/cvgregs.h
Normal file
229
glide_internal/cvgregs.h
Normal file
@@ -0,0 +1,229 @@
|
||||
#ifndef __CVGREGS_H__
|
||||
#define __CVGREGS_H__
|
||||
|
||||
/*
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
** $Revision: 1.1.1.1 $
|
||||
** $Date: 1999/12/07 21:49:24 $
|
||||
*/
|
||||
|
||||
|
||||
//----------------- SST chip 3D layout -------------------------
|
||||
// registers are in groups of 8 for easy decode
|
||||
typedef struct vertex_Rec {
|
||||
unsigned long x; // 12.4 format
|
||||
unsigned long y; // 12.4
|
||||
} vtxRec;
|
||||
|
||||
typedef volatile struct sstregs { // THE 3D CHIP
|
||||
// EXTERNAL registers
|
||||
FxU32 status; // chip status, Read Only
|
||||
FxU32 intrCtrl; // interrupt control
|
||||
vtxRec vA; // Vertex A,B,C
|
||||
vtxRec vB;
|
||||
vtxRec vC;
|
||||
|
||||
long r; // 12.12 Parameters
|
||||
long g; // 12.12
|
||||
long b; // 12.12
|
||||
long z; // 20.12
|
||||
long a; // 12.12
|
||||
long s; // 14.18
|
||||
long t; // 14.18
|
||||
long w; // 2.30
|
||||
|
||||
long drdx; // X Gradients
|
||||
long dgdx;
|
||||
long dbdx;
|
||||
long dzdx;
|
||||
long dadx;
|
||||
long dsdx;
|
||||
long dtdx;
|
||||
long dwdx;
|
||||
|
||||
long drdy; // Y Gradients
|
||||
long dgdy;
|
||||
long dbdy;
|
||||
long dzdy;
|
||||
long dady;
|
||||
long dsdy;
|
||||
long dtdy;
|
||||
long dwdy;
|
||||
|
||||
unsigned long triangleCMD; // execute a triangle command (float)
|
||||
unsigned long reservedA;
|
||||
vtxRec FvA; // floating point version
|
||||
vtxRec FvB;
|
||||
vtxRec FvC;
|
||||
|
||||
long Fr; // floating point version
|
||||
long Fg;
|
||||
long Fb;
|
||||
long Fz;
|
||||
long Fa;
|
||||
long Fs;
|
||||
long Ft;
|
||||
long Fw;
|
||||
|
||||
long Fdrdx;
|
||||
long Fdgdx;
|
||||
long Fdbdx;
|
||||
long Fdzdx;
|
||||
long Fdadx;
|
||||
long Fdsdx;
|
||||
long Fdtdx;
|
||||
long Fdwdx;
|
||||
|
||||
long Fdrdy;
|
||||
long Fdgdy;
|
||||
long Fdbdy;
|
||||
long Fdzdy;
|
||||
long Fdady;
|
||||
long Fdsdy;
|
||||
long Fdtdy;
|
||||
long Fdwdy;
|
||||
|
||||
unsigned long FtriangleCMD; // execute a triangle command
|
||||
unsigned long fbzColorPath; // color select and combine
|
||||
unsigned long fogMode; // fog Mode
|
||||
unsigned long alphaMode; // alpha Mode
|
||||
unsigned long fbzMode; // framebuffer and Z mode
|
||||
unsigned long lfbMode; // linear framebuffer Mode
|
||||
unsigned long clipLeftRight; // (6)10(6)10
|
||||
unsigned long clipBottomTop; // (6)10(6)10
|
||||
|
||||
unsigned long nopCMD; // execute a nop command
|
||||
unsigned long fastfillCMD; // execute a fast fill command
|
||||
unsigned long swapbufferCMD;// execute a swapbuffer command
|
||||
unsigned long fogColor; // (8)888
|
||||
unsigned long zaColor; // 8(8)16
|
||||
unsigned long chromaKey; // (8)888
|
||||
unsigned long chromaRange;
|
||||
unsigned long reservedB;
|
||||
|
||||
unsigned long stipple; // 32 bits, MSB masks pixels
|
||||
unsigned long c0; // 8.8.8.8 (ARGB)
|
||||
unsigned long c1; // 8.8.8.8 (ARGB)
|
||||
struct { // statistic gathering variables
|
||||
unsigned int fbiPixelsIn;
|
||||
unsigned int fbiChromaFail;
|
||||
unsigned int fbiZfuncFail;
|
||||
unsigned int fbiAfuncFail;
|
||||
unsigned int fbiPixelsOut;
|
||||
} stats;
|
||||
|
||||
unsigned long fogTable[32]; // 64 entries, 2 per word, 2 bytes each
|
||||
|
||||
FxU32 cmdFifoBase; // beginning of CMDFIFO area
|
||||
FxU32 cmdFifoBump; // number of words to bump (write only)
|
||||
FxU32 cmdFifoReadPtr; // the read (execute) pointer
|
||||
FxU32 cmdFifoAmin; // points to first hole
|
||||
FxU32 cmdFifoAmax; // highest address written (not visible)
|
||||
FxU32 cmdFifoDepth; // number of valid sequential words
|
||||
FxU32 cmdFifoHoles; // number of current holes
|
||||
unsigned long reservedC;
|
||||
|
||||
unsigned long fbiInit4;
|
||||
unsigned long vRetrace;
|
||||
unsigned long backPorch;
|
||||
unsigned long videoDimensions;
|
||||
unsigned long fbiInit0;
|
||||
unsigned long fbiInit1;
|
||||
unsigned long fbiInit2;
|
||||
unsigned long fbiInit3;
|
||||
|
||||
unsigned long hSync;
|
||||
unsigned long vSync;
|
||||
unsigned long clutData;
|
||||
unsigned long dacData;
|
||||
unsigned long videoFilterRgbThreshold;
|
||||
FxU32 hBorder;
|
||||
FxU32 vBorder;
|
||||
FxU32 borderColor;
|
||||
|
||||
FxU32 hvRetrace;
|
||||
FxU32 fbiInit5;
|
||||
FxU32 fbiInit6;
|
||||
FxU32 fbiInit7;
|
||||
unsigned long reservedD[2];
|
||||
FxU32 fbiSwapHistory;
|
||||
FxU32 fbiTrianglesOut; // triangles out counter
|
||||
|
||||
FxU32 sSetupMode;
|
||||
FxU32 sVx;
|
||||
FxU32 sVy;
|
||||
FxU32 sARGB;
|
||||
FxU32 sRed;
|
||||
FxU32 sGreen;
|
||||
FxU32 sBlue;
|
||||
FxU32 sAlpha;
|
||||
|
||||
FxU32 sVz;
|
||||
FxU32 sOowfbi;
|
||||
FxU32 sOow0;
|
||||
FxU32 sSow0;
|
||||
FxU32 sTow0;
|
||||
FxU32 sOow1;
|
||||
FxU32 sSow1;
|
||||
FxU32 sTow1;
|
||||
|
||||
FxU32 sDrawTriCMD;
|
||||
FxU32 sBeginTriCMD;
|
||||
unsigned long reservedE[6];
|
||||
|
||||
FxU32 bltSrcBaseAddr;
|
||||
FxU32 bltDstBaseAddr;
|
||||
FxU32 bltXYstrides;
|
||||
FxU32 bltSrcChromaRange;
|
||||
FxU32 bltDstChromaRange;
|
||||
FxU32 bltClipX;
|
||||
FxU32 bltClipY;
|
||||
FxU32 reservedF;
|
||||
|
||||
FxU32 bltSrcXY;
|
||||
FxU32 bltDstXY;
|
||||
FxU32 bltSize;
|
||||
FxU32 bltRop;
|
||||
FxU32 bltColor;
|
||||
FxU32 reservedG;
|
||||
FxU32 bltCommand;
|
||||
FxU32 bltData;
|
||||
|
||||
unsigned long textureMode; // texture Mode
|
||||
unsigned long tLOD; // texture LOD settings
|
||||
unsigned long tDetail; // texture detail settings
|
||||
unsigned long texBaseAddr; // current texture base address
|
||||
unsigned long texBaseAddr1;
|
||||
unsigned long texBaseAddr2;
|
||||
unsigned long texBaseAddr38;
|
||||
unsigned long trexInit0; // hardware init bits
|
||||
|
||||
unsigned long trexInit1; // hardware init bits
|
||||
unsigned long nccTable0[12]; // NCC decode tables, bits are packed
|
||||
unsigned long nccTable1[12]; // 4 words Y, 4 words I, 4 words Q
|
||||
FxU32 tchromaKey; // texture chromakey
|
||||
FxU32 tchromaRange; // texture chromarange
|
||||
FxU32 reservedH[5];
|
||||
FxU32 reservedI[8];
|
||||
FxU32 reservedJ[8];
|
||||
FxU32 reservedK[8];
|
||||
} SstRegs;
|
||||
|
||||
#endif /* !__CVGREGS_H__ */
|
||||
267
glide_internal/fxpci.h
Normal file
267
glide_internal/fxpci.h
Normal file
@@ -0,0 +1,267 @@
|
||||
/*
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
**
|
||||
** $Revision: 1.2 $
|
||||
** $Date: 2000/06/15 00:11:40 $
|
||||
**
|
||||
*/
|
||||
|
||||
#ifndef _FXPCI_H_
|
||||
#define _FXPCI_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define _3DFX_PCI_ID 0x121A
|
||||
|
||||
/* jeske - 10/14/98
|
||||
* This old assumption dosn't work anymore, because now a device_number
|
||||
* is defined as:
|
||||
*
|
||||
* device_number[0:4] = slot
|
||||
* device_number[5:12] = bus
|
||||
* device_number[13:15] = function
|
||||
*
|
||||
* OLD ASSUMPTION:
|
||||
* 16 Busses ( of possible 256, I am making the
|
||||
* assumption that busses are numbered
|
||||
* in increasing order and that no
|
||||
* PC will have more than 16 busses )
|
||||
* 32 Slots Per Bus
|
||||
*
|
||||
* Device Number = Bus Number * 32 + Slot Number <== wrong, see above....
|
||||
*/
|
||||
#ifdef HAL_CSIM
|
||||
# define MAX_PCI_DEVICES 128
|
||||
#else
|
||||
# define MAX_PCI_DEVICES 512
|
||||
#endif
|
||||
|
||||
/* baseAddr0, baseAddr1, ioBaseAddr, romBaseAddr */
|
||||
#define MAX_PCI_BASEADDRESSES 4
|
||||
#define MAX_DEVICES_FUNCTIONS 8
|
||||
|
||||
typedef int PciMemType;
|
||||
#define PciMemTypeUncacheable 0
|
||||
#define PciMemTypeWriteCombining 1
|
||||
#define PciMemTypeWriteThrough 4
|
||||
#define PciMemTypeWriteProtected 5
|
||||
#define PciMemTypeWriteback 6
|
||||
|
||||
typedef enum {
|
||||
READ_ONLY,
|
||||
WRITE_ONLY,
|
||||
READ_WRITE
|
||||
} PciIOFlag;
|
||||
|
||||
typedef struct {
|
||||
FxU32 regAddress;
|
||||
FxU32 sizeInBytes;
|
||||
PciIOFlag rwFlag;
|
||||
} PciRegister;
|
||||
|
||||
#ifndef KERNEL
|
||||
extern const PciRegister PCI_VENDOR_ID;
|
||||
extern const PciRegister PCI_DEVICE_ID;
|
||||
extern const PciRegister PCI_COMMAND;
|
||||
extern const PciRegister PCI_STATUS;
|
||||
extern const PciRegister PCI_REVISION_ID;
|
||||
extern const PciRegister PCI_CLASS_CODE;
|
||||
extern const PciRegister PCI_CACHE_LINE_SIZE;
|
||||
extern const PciRegister PCI_LATENCY_TIMER;
|
||||
extern const PciRegister PCI_HEADER_TYPE;
|
||||
extern const PciRegister PCI_BIST;
|
||||
extern const PciRegister PCI_BASE_ADDRESS_0;
|
||||
extern const PciRegister PCI_BASE_ADDRESS_1;
|
||||
extern const PciRegister PCI_IO_BASE_ADDRESS;
|
||||
extern const PciRegister PCI_SUBVENDOR_ID;
|
||||
extern const PciRegister PCI_SUBSYSTEM_ID;
|
||||
extern const PciRegister PCI_ROM_BASE_ADDRESS;
|
||||
extern const PciRegister PCI_CAP_PTR;
|
||||
extern const PciRegister PCI_INTERRUPT_LINE;
|
||||
extern const PciRegister PCI_INTERRUPT_PIN;
|
||||
extern const PciRegister PCI_MIN_GNT;
|
||||
extern const PciRegister PCI_MAX_LAT;
|
||||
extern const PciRegister PCI_FAB_ID;
|
||||
extern const PciRegister PCI_CONFIG_STATUS;
|
||||
extern const PciRegister PCI_CONFIG_SCRATCH;
|
||||
extern const PciRegister PCI_AGP_CAP_ID;
|
||||
extern const PciRegister PCI_AGP_STATUS;
|
||||
extern const PciRegister PCI_AGP_CMD;
|
||||
extern const PciRegister PCI_ACPI_CAP_ID;
|
||||
extern const PciRegister PCI_CNTRL_STATUS;
|
||||
|
||||
extern const PciRegister PCI_SST1_INIT_ENABLE; // 0x40
|
||||
extern const PciRegister PCI_SST1_BUS_SNOOP_0; // 0x44
|
||||
extern const PciRegister PCI_SST1_BUS_SNOOP_1; // 0x48
|
||||
extern const PciRegister PCI_SST1_CFG_STATUS; // 0x4C
|
||||
|
||||
#endif /* #ifndef KERNEL */
|
||||
|
||||
/* a structure that contains callback procs */
|
||||
typedef struct {
|
||||
FxBool doHW;
|
||||
FxU8 (*pioInByte) (FxU16 port);
|
||||
FxU16 (*pioInWord) (FxU16 port);
|
||||
FxU32 (*pioInLong) (FxU16 port);
|
||||
void (*pioOutByte) (FxU16 port,FxU8 data);
|
||||
void (*pioOutWord) (FxU16 port,FxU16 data);
|
||||
void (*pioOutLong) (FxU16 port,FxU32 data);
|
||||
} PciHwcCallbacks;
|
||||
|
||||
FX_ENTRY const char * FX_CALL
|
||||
pciGetErrorString( void );
|
||||
|
||||
FX_ENTRY FxU32 FX_CALL
|
||||
pciGetErrorCode( void );
|
||||
|
||||
FX_ENTRY FxU8 FX_CALL
|
||||
pioInByte ( unsigned short port ); /* inp */
|
||||
|
||||
FX_ENTRY FxU16 FX_CALL
|
||||
pioInWord ( unsigned short port ); /* inpw */
|
||||
|
||||
FX_ENTRY FxU32 FX_CALL
|
||||
pioInLong ( unsigned short port ); /* inpd */
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pioOutByte ( unsigned short port, FxU8 data ); /* outp */
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pioOutWord ( unsigned short port, FxU16 data ); /* outpw */
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pioOutLong ( unsigned short port, FxU32 data ); /* outpd */
|
||||
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciOpen( void );
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciOpenEx( PciHwcCallbacks * );
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciClose( void );
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciDeviceExists( FxU32 device_number );
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciGetConfigData( PciRegister reg, FxU32 device_number, FxU32 *data );
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciGetConfigDataRaw( PciRegister reg, FxU32 device_number, FxU32 *data );
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciSetConfigData( PciRegister reg, FxU32 device_number, FxU32 *data );
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciSetConfigDataRaw( PciRegister reg, FxU32 device_bus_func_number, FxU32 *data );
|
||||
|
||||
/* NB: This routine makes the implicit assumption that the device was
|
||||
* on bus0 which would not work across pci bridges or on agp devices.
|
||||
*/
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciMapPhysicalToLinear(FxU32 *linear_addr, FxU32 physical_addr,FxU32 *length);
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciMapPhysicalDeviceToLinear(FxU32 *linear_addr,
|
||||
FxU32 busNumber, FxU32 physical_addr,
|
||||
FxU32 *length);
|
||||
|
||||
FX_ENTRY void FX_CALL
|
||||
pciUnmapPhysical( FxU32 linear_addr, FxU32 length );
|
||||
|
||||
const char *
|
||||
pciGetVendorName( FxU16 vendor_id );
|
||||
const char *
|
||||
pciGetClassName( FxU32 class_code , FxU32 deviceID);
|
||||
|
||||
FX_ENTRY void FX_CALL pciPrintDeviceList(void);
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciFindCard(FxU32 vendorID, FxU32 deviceID, FxU32 *devNum);
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciFindCardMulti(FxU32 vID, FxU32 dID, FxU32 *devNum, FxU32 cardNum);
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciFindCardMultiFunc(FxU32 vID, FxU32 dID, FxU32 *devNum, FxU32 *funcNum,
|
||||
FxU32 functionIndex);
|
||||
|
||||
FX_ENTRY FxU32 * FX_CALL
|
||||
pciMapCard(FxU32 vID, FxU32 dID, FxI32 len, FxU32 *devNo, FxU32 addrNo);
|
||||
|
||||
FX_ENTRY FxU32 * FX_CALL
|
||||
pciMapCardMulti(FxU32 vID,FxU32 dID,FxI32 l,FxU32 *dNo,FxU32 cNo,FxU32 aNo);
|
||||
|
||||
FX_ENTRY FxU32 * FX_CALL
|
||||
pciMapCardMultiFunc(FxU32 vID,FxU32 dID,FxI32 l,FxU32 *dNo,FxU32 cNo,FxU32 aNo);
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciFindMTRRMatch(FxU32 pBaseAddrs, FxU32 psz, PciMemType type, FxU32 *mtrrNum);
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciFindFreeMTRR(FxU32 *mtrrNum);
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciSetMTRR(FxU32 mtrrNo, FxU32 pBaseAddr, FxU32 psz, PciMemType type);
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciSetMTRRAmdK6(FxU32 mtrrNo, FxU32 pBaseAddr, FxU32 psz, PciMemType type);
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciSetPassThroughBase(FxU32* pBaseAddr, FxU32 baseAddrLen);
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciOutputDebugString(const char* debugMsg);
|
||||
|
||||
FX_ENTRY FxBool FX_CALL
|
||||
pciLinearRangeSetPermission(const FxU32 addrBase, const FxU32 addrLen, const FxBool writeableP);
|
||||
|
||||
#define PCI_ERR_NOERR 0
|
||||
#define PCI_ERR_WINRTINIT 1
|
||||
#define PCI_ERR_MEMMAPVXD 2
|
||||
#define PCI_ERR_MAPMEMDRV 3
|
||||
#define PCI_ERR_GENPORT 4
|
||||
#define PCI_ERR_NO_BUS 5
|
||||
#define PCI_ERR_NOTOPEN 6
|
||||
#define PCI_ERR_NOTOPEN2 7
|
||||
#define PCI_ERR_NOTOPEN3 8
|
||||
#define PCI_ERR_OUTOFRANGE 9
|
||||
#define PCI_ERR_NODEV 10
|
||||
#define PCI_ERR_NODEV2 11
|
||||
#define PCI_ERR_WRITEONLY 12
|
||||
#define PCI_ERR_READONLY 13
|
||||
#define PCI_ERR_PHARLAP 14
|
||||
#define PCI_ERR_WRONGVXD 15
|
||||
#define PCI_ERR_MEMMAP 16
|
||||
#define PCI_ERR_MAPMEM 17
|
||||
#define PCI_ERR_WINRT 18
|
||||
#define PCI_ERR_VXDINUSE 19
|
||||
#define PCI_ERR_NO_IO_PERM 20
|
||||
#define PCI_ERR_NO_MEM_PERM 21
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _FXPCI_H_ */
|
||||
10
main.c
10
main.c
@@ -22,11 +22,11 @@
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
|
||||
#include <cvg.h>
|
||||
#include <fxpci.h>
|
||||
#include <sst1init.h>
|
||||
#include <3dfx.h>
|
||||
#include <glide.h>
|
||||
#include "glide_internal/cvg.h"
|
||||
#include "glide_internal/fxpci.h"
|
||||
#include "glide_internal/sst1init.h"
|
||||
#include <glide/3dfx.h>
|
||||
#include <glide/glide.h>
|
||||
|
||||
#include "V2MemTest.h"
|
||||
#include "FaultSources.h"
|
||||
|
||||
Reference in New Issue
Block a user