1 | /*
|
---|
2 | * THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
---|
3 | * PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
---|
4 | * TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
---|
5 | * INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
---|
6 | * DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
---|
7 | * THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
---|
8 | * EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
---|
9 | * FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
---|
10 | *
|
---|
11 | * USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
---|
12 | * RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
---|
13 | * TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
---|
14 | * AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
---|
15 | * SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
---|
16 | * THE UNITED STATES.
|
---|
17 | *
|
---|
18 | * COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
---|
19 | */
|
---|
20 |
|
---|
21 | #ifndef __SST_H__
|
---|
22 | #define __SST_H__
|
---|
23 |
|
---|
24 | /*
|
---|
25 | ** $Revision: 1.1 $
|
---|
26 | ** $Date: 2000-02-25 00:31:25 $
|
---|
27 | */
|
---|
28 |
|
---|
29 | #include <ncc.h>
|
---|
30 | #include "fx64.h"
|
---|
31 |
|
---|
32 | #ifdef __cplusplus
|
---|
33 | extern "C" {
|
---|
34 | #endif
|
---|
35 |
|
---|
36 | // this crazy macro fixes the binary point within a floating point
|
---|
37 | // number so that it has 'fracbits' to the right of the binary point
|
---|
38 | // it also adds a '1' bit to the MSB so that slightly negative numbers
|
---|
39 | // end up looking like twos complement numbers (they carry out from the '1')
|
---|
40 | #define FLOAT_FIX(f,fracbits) ((f)+(float)(3<<(22-(fracbits))))
|
---|
41 |
|
---|
42 | #define SST_FLOAT(f,scale,shift) (unsigned long)((f)*((scale)*(float)(1<<shift)))
|
---|
43 | #define SST_TLOD_MINMAX(lodmin,lodmax) \
|
---|
44 | (((lodmin) << (SST_LODMIN_SHIFT)) | \
|
---|
45 | ((lodmax) << (SST_LODMAX_SHIFT)))
|
---|
46 | #define SST_TLOD_MINMAX_INT(lodmin,lodmax) \
|
---|
47 | (((lodmin) << (SST_LOD_FRACBITS+SST_LODMIN_SHIFT)) | \
|
---|
48 | ((lodmax) << (SST_LOD_FRACBITS+SST_LODMAX_SHIFT)))
|
---|
49 |
|
---|
50 | // this crazy macro tests the sign bit of a float by loading it into
|
---|
51 | // an integer register and then testing the sign bit of the integer
|
---|
52 | #define FLOAT_ISNEG(f) ((*(int *)(&(f))) < 0)
|
---|
53 |
|
---|
54 | // these crazy macros returns the sign of a number (1 if >= 0; -1 if < 0)
|
---|
55 | #define ISIGN(x) (((x) | 0x40000000) >> 30)
|
---|
56 | #define FSIGN(f) ISIGN(*(long *)&f)
|
---|
57 |
|
---|
58 | typedef struct vertex_Rec {
|
---|
59 | unsigned long x; // 12.4 format
|
---|
60 | unsigned long y; // 12.4
|
---|
61 | } vtxRec;
|
---|
62 |
|
---|
63 | // 256 color palette tables
|
---|
64 | typedef struct {
|
---|
65 | unsigned long argb[256];
|
---|
66 | } Pal256;
|
---|
67 |
|
---|
68 | #define BIT(n) (1<<(n))
|
---|
69 | #define SST_MASK(n) (0xFFFFFFFF >> (32-(n)))
|
---|
70 | #define SST_MASK64(n) FX_MASK64(n)
|
---|
71 | |
---|
72 |
|
---|
73 | //----------------- SST binary point locations ---------------
|
---|
74 | #define SST_LOD_SIZE 6
|
---|
75 | #define SST_LOD_FRACBITS 2
|
---|
76 | #define SST_XY_SIZE 16
|
---|
77 | #define SST_XY_INTBITS 12
|
---|
78 | #define SST_XY_FRACBITS 4
|
---|
79 | #define SST_RGBA_SIZE 24
|
---|
80 | #define SST_RGBA_INTBITS 8
|
---|
81 | #define SST_RGBA_FRACBITS 12
|
---|
82 | #define SST_Z_SIZE 32
|
---|
83 | #define SST_Z_INTBITS 16
|
---|
84 | #define SST_Z_FRACBITS 12
|
---|
85 | // NOTE: below are ONLY for the fixed point registers
|
---|
86 | #define SST_ST_SIZE 32
|
---|
87 | #define SST_ST_INTBITS 14
|
---|
88 | #define SST_ST_FRACBITS 18
|
---|
89 | #define SST_W_SIZE 32
|
---|
90 | #define SST_W_INTBITS 2
|
---|
91 | #define SST_W_FRACBITS 30
|
---|
92 |
|
---|
93 | //----------------- SST lfbMode bits -----------------------
|
---|
94 | #define SST_LFB_FORMAT_SHIFT 0
|
---|
95 | #define SST_LFB_FORMAT (0xF<<SST_LFB_FORMAT_SHIFT)
|
---|
96 | # define SST_LFB_565 (0<<SST_LFB_FORMAT_SHIFT)
|
---|
97 | # define SST_LFB_555 (1<<SST_LFB_FORMAT_SHIFT)
|
---|
98 | # define SST_LFB_1555 (2<<SST_LFB_FORMAT_SHIFT)
|
---|
99 | # define SST_LFB_u1 (3<<SST_LFB_FORMAT_SHIFT)
|
---|
100 | # define SST_LFB_888 (4<<SST_LFB_FORMAT_SHIFT)
|
---|
101 | # define SST_LFB_8888 (5<<SST_LFB_FORMAT_SHIFT)
|
---|
102 | # define SST_LFB_u2 (6<<SST_LFB_FORMAT_SHIFT)
|
---|
103 | # define SST_LFB_u3 (7<<SST_LFB_FORMAT_SHIFT)
|
---|
104 | # define SST_LFB_Z565 (12<<SST_LFB_FORMAT_SHIFT)
|
---|
105 | # define SST_LFB_Z555 (13<<SST_LFB_FORMAT_SHIFT)
|
---|
106 | # define SST_LFB_Z1555 (14<<SST_LFB_FORMAT_SHIFT)
|
---|
107 | # define SST_LFB_ZZ (15<<SST_LFB_FORMAT_SHIFT)
|
---|
108 | #define SST_LFB_WRITEBUFSELECT_SHIFT 4
|
---|
109 | #define SST_LFB_WRITEBUFSELECT (0x3<<SST_LFB_WRITEBUFSELECT_SHIFT)
|
---|
110 | # define SST_LFB_WRITEFRONTBUFFER (0<<SST_LFB_WRITEBUFSELECT_SHIFT)
|
---|
111 | # define SST_LFB_WRITEBACKBUFFER (1<<SST_LFB_WRITEBUFSELECT_SHIFT)
|
---|
112 | # define SST_LFB_WRITEAUXBUFFER (2<<SST_LFB_WRITEBUFSELECT_SHIFT)
|
---|
113 | #define SST_LFB_READBUFSELECT_SHIFT 6
|
---|
114 | #define SST_LFB_READBUFSELECT (0x3<<SST_LFB_READBUFSELECT_SHIFT)
|
---|
115 | # define SST_LFB_READFRONTBUFFER (0<<SST_LFB_READBUFSELECT_SHIFT)
|
---|
116 | # define SST_LFB_READBACKBUFFER (1<<SST_LFB_READBUFSELECT_SHIFT)
|
---|
117 | # define SST_LFB_READDEPTHABUFFER (2<<SST_LFB_READBUFSELECT_SHIFT)
|
---|
118 | # define SST_LFB_READAUXBUFFER SST_LFB_READDEPTHABUFFER
|
---|
119 | #define SST_LFB_ENPIXPIPE BIT(8)
|
---|
120 | #define SST_LFB_RGBALANES_SHIFT 9
|
---|
121 | #define SST_LFB_RGBALANES (0x3<<SST_LFB_RGBALANES_SHIFT)
|
---|
122 | # define SST_LFB_RGBALANES_ARGB (0<<SST_LFB_RGBALANES_SHIFT)
|
---|
123 | # define SST_LFB_RGBALANES_ABGR (1<<SST_LFB_RGBALANES_SHIFT)
|
---|
124 | # define SST_LFB_RGBALANES_RGBA (2<<SST_LFB_RGBALANES_SHIFT)
|
---|
125 | # define SST_LFB_RGBALANES_BGRA (3<<SST_LFB_RGBALANES_SHIFT)
|
---|
126 | #define SST_LFB_WRITE_SWAP16 BIT(11)
|
---|
127 | #define SST_LFB_WRITE_BYTESWAP BIT(12)
|
---|
128 | #define SST_LFB_YORIGIN BIT(13)
|
---|
129 | #define SST_LFB_WSELECT BIT(14)
|
---|
130 | #define SST_LFB_READ_SWAP16 BIT(15)
|
---|
131 | #define SST_LFB_READ_BYTESWAP BIT(16)
|
---|
132 | |
---|
133 |
|
---|
134 | //----------------- SST videoFilterRgbThreshold
|
---|
135 | #define SST_VIDEOFILTER_BLUE_SHIFT 0
|
---|
136 | #define SST_VIDEOFILTER_BLUE (0xff << SST_VIDEOFILTER_BLUE_SHIFT)
|
---|
137 | #define SST_VIDEOFILTER_GREEN_SHIFT 8
|
---|
138 | #define SST_VIDEOFILTER_GREEN (0xff << SST_VIDEOFILTER_GREEN_SHIFT)
|
---|
139 | #define SST_VIDEOFILTER_RED_SHIFT 16
|
---|
140 | #define SST_VIDEOFILTER_RED (0xff << SST_VIDEOFILTER_RED_SHIFT)
|
---|
141 |
|
---|
142 | //----------------- SST textureMode bits -----------------------
|
---|
143 | #define SST_TPERSP_ST BIT(0)
|
---|
144 | #define SST_TMINFILTER BIT(1)
|
---|
145 | #define SST_TMAGFILTER BIT(2)
|
---|
146 | #define SST_TCLAMPW BIT(3)
|
---|
147 | #define SST_TLODDITHER BIT(4)
|
---|
148 | #define SST_TNCCSELECT BIT(5) // selects which table
|
---|
149 | #define SST_TCLAMPS BIT(6)
|
---|
150 | #define SST_TCLAMPT BIT(7)
|
---|
151 | #define SST_T8BIT(mode) ((mode&SST_TFORMAT)<SST_ARGB8332)
|
---|
152 | #define SST_TFORMAT_SHIFT 8
|
---|
153 | #define SST_TFORMAT (0xF<<SST_TFORMAT_SHIFT)
|
---|
154 | # define SST_RGB332 (0<<SST_TFORMAT_SHIFT)
|
---|
155 | # define SST_YIQ422 (1<<SST_TFORMAT_SHIFT)
|
---|
156 | # define SST_A8 (2<<SST_TFORMAT_SHIFT)
|
---|
157 | # define SST_I8 (3<<SST_TFORMAT_SHIFT)
|
---|
158 | # define SST_AI44 (4<<SST_TFORMAT_SHIFT)
|
---|
159 | # define SST_P8 (5<<SST_TFORMAT_SHIFT)
|
---|
160 | # define SST_P8_RGBA6666 (6<<SST_TFORMAT_SHIFT)
|
---|
161 | # define SST_ARGB8332 (8<<SST_TFORMAT_SHIFT)
|
---|
162 | # define SST_AYIQ8422 (9<<SST_TFORMAT_SHIFT)
|
---|
163 | # define SST_RGB565 (10<<SST_TFORMAT_SHIFT)
|
---|
164 | # define SST_ARGB1555 (11<<SST_TFORMAT_SHIFT)
|
---|
165 | # define SST_ARGB4444 (12<<SST_TFORMAT_SHIFT)
|
---|
166 | # define SST_AI88 (13<<SST_TFORMAT_SHIFT)
|
---|
167 | # define SST_AP88 (14<<SST_TFORMAT_SHIFT)
|
---|
168 | #define SST_TC_ZERO_OTHER BIT(12)
|
---|
169 | #define SST_TC_SUB_CLOCAL BIT(13)
|
---|
170 | #define SST_TC_MSELECT_SHIFT 14
|
---|
171 | #define SST_TC_MSELECT (0x7<<SST_TC_MSELECT_SHIFT)
|
---|
172 | # define SST_TC_MONE (0<<SST_TC_MSELECT_SHIFT)
|
---|
173 | # define SST_TC_MCLOCAL (1<<SST_TC_MSELECT_SHIFT)
|
---|
174 | # define SST_TC_MAOTHER (2<<SST_TC_MSELECT_SHIFT)
|
---|
175 | # define SST_TC_MALOCAL (3<<SST_TC_MSELECT_SHIFT)
|
---|
176 | # define SST_TC_MLOD (4<<SST_TC_MSELECT_SHIFT)
|
---|
177 | # define SST_TC_MLODFRAC (5<<SST_TC_MSELECT_SHIFT)
|
---|
178 | #define SST_TC_REVERSE_BLEND BIT(17)
|
---|
179 | #define SST_TC_ADD_CLOCAL BIT(18)
|
---|
180 | #define SST_TC_ADD_ALOCAL BIT(19)
|
---|
181 | #define SST_TC_INVERT_OUTPUT BIT(20)
|
---|
182 | #define SST_TCA_ZERO_OTHER BIT(21)
|
---|
183 | #define SST_TCA_SUB_CLOCAL BIT(22)
|
---|
184 | #define SST_TCA_MSELECT_SHIFT 23
|
---|
185 | #define SST_TCA_MSELECT (0x7<<SST_TCA_MSELECT_SHIFT)
|
---|
186 | # define SST_TCA_MONE (0<<SST_TCA_MSELECT_SHIFT)
|
---|
187 | # define SST_TCA_MCLOCAL (1<<SST_TCA_MSELECT_SHIFT)
|
---|
188 | # define SST_TCA_MAOTHER (2<<SST_TCA_MSELECT_SHIFT)
|
---|
189 | # define SST_TCA_MALOCAL (3<<SST_TCA_MSELECT_SHIFT)
|
---|
190 | # define SST_TCA_MLOD (4<<SST_TCA_MSELECT_SHIFT)
|
---|
191 | # define SST_TCA_MLODFRAC (5<<SST_TCA_MSELECT_SHIFT)
|
---|
192 | #define SST_TCA_REVERSE_BLEND BIT(26)
|
---|
193 | #define SST_TCA_ADD_CLOCAL BIT(27)
|
---|
194 | #define SST_TCA_ADD_ALOCAL BIT(28)
|
---|
195 | #define SST_TCA_INVERT_OUTPUT BIT(29)
|
---|
196 | #define SST_TRILINEAR BIT(30)
|
---|
197 | #define SST_SEQ_8_DOWNLD BIT(31)
|
---|
198 | |
---|
199 |
|
---|
200 | // here are some abstract constants that most people will be using
|
---|
201 | // TC stands for Texture Combine (RGB channels)
|
---|
202 | // TCA stands for Texture Combine Alpha (just the Alpha channel)
|
---|
203 | // BLEND_ATT blends on the Alpha channel of the color passed from TMU to TMU
|
---|
204 | // BLEND_ALOCAL blends on the Alpha channel of the local texture color
|
---|
205 | // NOTE: and of the BLEND modes can be modified using SST_TC_REVERSE_BLEND
|
---|
206 | // and/or SST_TCA_REVERSE_BLEND, these modifiers reverse the "polarity"
|
---|
207 | // of the blend
|
---|
208 | #define SST_TC_MZERO (SST_TC_MONE | SST_TC_REVERSE_BLEND)
|
---|
209 | #define SST_TCA_MZERO (SST_TCA_MONE | SST_TCA_REVERSE_BLEND)
|
---|
210 |
|
---|
211 | #define SST_TCOMBINE_SHIFT 12 // RGB COMBINE MODES
|
---|
212 | #define SST_TCOMBINE (0x1FF<<SST_TCOMBINE_SHIFT)
|
---|
213 | # define SST_TC_REPLACE (SST_TC_ZERO_OTHER | SST_TC_ADD_CLOCAL)
|
---|
214 | # define SST_TC_PASS (SST_TC_MONE)
|
---|
215 | # define SST_TC_ADD (SST_TC_MONE | SST_TC_ADD_CLOCAL)
|
---|
216 | # define SST_TC_SUB (SST_TC_SUB_CLOCAL | SST_TC_MONE)
|
---|
217 | # define SST_TC_MULT (SST_TC_MCLOCAL | SST_TC_REVERSE_BLEND)
|
---|
218 | # define SST_TC_ZERO (SST_TC_MZERO)
|
---|
219 | # define SST_TC_ONE (SST_TC_MZERO | SST_TC_INVERT_OUTPUT)
|
---|
220 | # define SST_TC_BLEND (SST_TC_SUB_CLOCAL | SST_TC_ADD_CLOCAL)
|
---|
221 | # define SST_TC_BLEND_LOD (SST_TC_BLEND | SST_TC_MLOD)
|
---|
222 | # define SST_TC_BLEND_LODFRAC (SST_TC_BLEND | SST_TC_MLODFRAC)
|
---|
223 | # define SST_TC_BLEND_ATT (SST_TC_BLEND | SST_TC_MAOTHER)
|
---|
224 | # define SST_TC_BLEND_ALOCAL (SST_TC_BLEND | SST_TC_MALOCAL)
|
---|
225 | #define SST_TACOMBINE_SHIFT 21 // ALPHA COMBINE MODES
|
---|
226 | #define SST_TACOMBINE (0x1FF<<SST_TACOMBINE_SHIFT)
|
---|
227 | # define SST_TCA_REPLACE (SST_TCA_ZERO_OTHER | SST_TCA_ADD_CLOCAL)
|
---|
228 | # define SST_TCA_PASS (SST_TCA_MONE)
|
---|
229 | # define SST_TCA_ADD (SST_TCA_MONE | SST_TCA_ADD_CLOCAL)
|
---|
230 | # define SST_TCA_SUB (SST_TCA_SUB_CLOCAL | SST_TCA_MONE)
|
---|
231 | # define SST_TCA_MULT (SST_TCA_MCLOCAL | SST_TCA_REVERSE_BLEND)
|
---|
232 | # define SST_TCA_ONE (SST_TCA_MZERO | SST_TCA_INVERT_OUTPUT)
|
---|
233 | # define SST_TCA_ZERO (SST_TCA_MZERO)
|
---|
234 | # define SST_TCA_BLEND (SST_TCA_SUB_CLOCAL | SST_TCA_ADD_CLOCAL)
|
---|
235 | # define SST_TCA_BLEND_LOD (SST_TCA_BLEND | SST_TCA_MLOD)
|
---|
236 | # define SST_TCA_BLEND_LODFRAC (SST_TCA_BLEND | SST_TCA_MLODFRAC)
|
---|
237 | # define SST_TCA_BLEND_ATT (SST_TCA_BLEND | SST_TCA_MAOTHER)
|
---|
238 | # define SST_TCA_BLEND_ALOCAL (SST_TCA_BLEND | SST_TCA_MALOCAL)
|
---|
239 | #define SST_TMU_ACTIVE(texMode) \
|
---|
240 | ((texMode & (SST_TCOMBINE|SST_TACOMBINE)) != (SST_TC_PASS|SST_TCA_PASS))
|
---|
241 | #define SST_TREX_ACTIVE(texMode) SST_TMU_ACTIVE(texMode)
|
---|
242 |
|
---|
243 | //----------------- SST tLOD bits -----------------------
|
---|
244 | #define SST_LODMIN_SHIFT 0 // 4.2 format
|
---|
245 | #define SST_LODMIN (0x3F<<SST_LODMIN_SHIFT)
|
---|
246 | #define SST_LODMAX_SHIFT 6
|
---|
247 | #define SST_LODMAX (0x3F<<SST_LODMAX_SHIFT)
|
---|
248 | #define SST_LODBIAS_SHIFT 12
|
---|
249 | #define SST_LODBIAS (0x3F<<SST_LODBIAS_SHIFT)
|
---|
250 | #define SST_LOD_ODD BIT(18)
|
---|
251 | #define SST_LOD_TSPLIT BIT(19)
|
---|
252 | #define SST_LOD_S_IS_WIDER BIT(20)
|
---|
253 | #define SST_LOD_ASPECT_SHIFT 21
|
---|
254 | #define SST_LOD_ASPECT (0x3<<SST_LOD_ASPECT_SHIFT)
|
---|
255 | #define SST_LOD_ZEROFRAC BIT(23)
|
---|
256 | #define SST_TMULTIBASEADDR BIT(24)
|
---|
257 | #define SST_TDATA_SWIZZLE BIT(25)
|
---|
258 | #define SST_TDATA_SWAP BIT(26)
|
---|
259 | #define SST_TDIRECT_WRITE BIT(27)
|
---|
260 |
|
---|
261 | //----------------- SST tDetail bits -----------------------
|
---|
262 | #define SST_DETAIL_MAX_SHIFT 0 // 8.0 format
|
---|
263 | #define SST_DETAIL_MAX (0xFF<<SST_DETAIL_MAX_SHIFT)
|
---|
264 | #define SST_DETAIL_BIAS_SHIFT 8 // 6.0 format signed
|
---|
265 | #define SST_DETAIL_BIAS (0x3F<<SST_DETAIL_BIAS_SHIFT)
|
---|
266 | #define SST_DETAIL_SCALE_SHIFT 14 // 3.0 format
|
---|
267 | #define SST_DETAIL_SCALE (0x7<<SST_DETAIL_SCALE_SHIFT)
|
---|
268 | |
---|
269 |
|
---|
270 | //----------------- SST fbzMode bits -----------------------
|
---|
271 | #define SST_ENRECTCLIP BIT(0)
|
---|
272 | #define SST_ENCHROMAKEY BIT(1)
|
---|
273 | #define SST_ENSTIPPLE BIT(2)
|
---|
274 | #define SST_WBUFFER BIT(3)
|
---|
275 | #define SST_ENDEPTHBUFFER BIT(4)
|
---|
276 | # define SST_ZFUNC_LT BIT(5)
|
---|
277 | # define SST_ZFUNC_EQ BIT(6)
|
---|
278 | # define SST_ZFUNC_GT BIT(7)
|
---|
279 | # define SST_ZFUNC_SHIFT 5
|
---|
280 | # define SST_ZFUNC ( 0x7 << SST_ZFUNC_SHIFT )
|
---|
281 | #define SST_ENDITHER BIT(8)
|
---|
282 | #define SST_RGBWRMASK BIT(9)
|
---|
283 | #define SST_ZAWRMASK BIT(10)
|
---|
284 | #define SST_DITHER2x2 BIT(11)
|
---|
285 | #define SST_ENSTIPPLEPATTERN BIT(12)
|
---|
286 | #define SST_ENALPHAMASK BIT(13)
|
---|
287 | #define SST_DRAWBUFFER_SHIFT 14
|
---|
288 | #define SST_DRAWBUFFER (0x3<<SST_DRAWBUFFER_SHIFT)
|
---|
289 | #define SST_DRAWBUFFER_FRONT (0<<SST_DRAWBUFFER_SHIFT)
|
---|
290 | #define SST_DRAWBUFFER_BACK (1<<SST_DRAWBUFFER_SHIFT)
|
---|
291 | #define SST_ENZBIAS BIT(16)
|
---|
292 | #define SST_YORIGIN BIT(17)
|
---|
293 | #define SST_ENALPHABUFFER BIT(18)
|
---|
294 | #define SST_ENDITHERSUBTRACT BIT(19)
|
---|
295 | #define SST_ABLEND_DITHER_SUB_EN SST_ENDITHERSUBTRACT
|
---|
296 | #define SST_ENDITHERSUBTRACT BIT(19)
|
---|
297 | #define SST_ZCOMPARE_TO_ZACOLOR BIT(20)
|
---|
298 |
|
---|
299 | //----------------- SST fbzColorPath bits -----------------------
|
---|
300 | #define SST_RGBSELECT_SHIFT 0
|
---|
301 | #define SST_RGBSELECT (0x3<<SST_RGBSELECT_SHIFT)
|
---|
302 | # define SST_RGBSEL_RGBA (0<<SST_RGBSELECT_SHIFT)
|
---|
303 | # define SST_RGBSEL_TMUOUT (1<<SST_RGBSELECT_SHIFT)
|
---|
304 | # define SST_RGBSEL_TREXOUT SST_RGBSEL_TMUOUT
|
---|
305 | # define SST_RGBSEL_C1 (2<<SST_RGBSELECT_SHIFT)
|
---|
306 | # define SST_RGBSEL_LFB (3<<SST_RGBSELECT_SHIFT)
|
---|
307 | #define SST_ASELECT_SHIFT 2
|
---|
308 | #define SST_ASELECT (0x3<<SST_ASELECT_SHIFT)
|
---|
309 | # define SST_ASEL_RGBA (0<<SST_ASELECT_SHIFT)
|
---|
310 | # define SST_ASEL_TMUOUT (1<<SST_ASELECT_SHIFT)
|
---|
311 | # define SST_ASEL_TREXOUT SST_ASEL_TMUOUT
|
---|
312 | # define SST_ASEL_C1 (2<<SST_ASELECT_SHIFT)
|
---|
313 | # define SST_ASEL_LFB (3<<SST_ASELECT_SHIFT)
|
---|
314 | #define SST_LOCALSELECT_SHIFT 4
|
---|
315 | #define SST_LOCALSELECT BIT(4)
|
---|
316 | #define SST_ALOCALSELECT_SHIFT 5
|
---|
317 | #define SST_ALOCALSELECT (0x3<<SST_ALOCALSELECT_SHIFT)
|
---|
318 | #define SST_ALOCAL_ITERATOR (0<<SST_ALOCALSELECT_SHIFT)
|
---|
319 | #define SST_ALOCAL_C0 (1<<SST_ALOCALSELECT_SHIFT)
|
---|
320 | #define SST_ALOCAL_Z (2<<SST_ALOCALSELECT_SHIFT)
|
---|
321 | #define SST_LOCALSELECT_OVERRIDE_WITH_ATEX BIT(7)
|
---|
322 | #define SST_CC_ZERO_OTHER BIT(8)
|
---|
323 | #define SST_CC_SUB_CLOCAL BIT(9)
|
---|
324 | #define SST_CC_MSELECT_SHIFT 10
|
---|
325 | #define SST_CC_MSELECT (0x7<<SST_CC_MSELECT_SHIFT)
|
---|
326 | # define SST_CC_MONE (0<<SST_CC_MSELECT_SHIFT)
|
---|
327 | # define SST_CC_MCLOCAL (1<<SST_CC_MSELECT_SHIFT)
|
---|
328 | # define SST_CC_MAOTHER (2<<SST_CC_MSELECT_SHIFT)
|
---|
329 | # define SST_CC_MALOCAL (3<<SST_CC_MSELECT_SHIFT)
|
---|
330 | # define SST_CC_MATMU (4<<SST_CC_MSELECT_SHIFT)
|
---|
331 | # define SST_CC_MATREX SST_CC_MATMU
|
---|
332 | #define SST_CC_REVERSE_BLEND BIT(13)
|
---|
333 | #define SST_CC_ADD_CLOCAL BIT(14)
|
---|
334 | #define SST_CC_ADD_ALOCAL BIT(15)
|
---|
335 | #define SST_CC_INVERT_OUTPUT BIT(16)
|
---|
336 | #define SST_CCA_ZERO_OTHER BIT(17)
|
---|
337 | #define SST_CCA_SUB_CLOCAL BIT(18)
|
---|
338 | #define SST_CCA_MSELECT_SHIFT 19
|
---|
339 | #define SST_CCA_MSELECT (0x7<<SST_CCA_MSELECT_SHIFT)
|
---|
340 | # define SST_CCA_MONE (0<<SST_CCA_MSELECT_SHIFT)
|
---|
341 | # define SST_CCA_MCLOCAL (1<<SST_CCA_MSELECT_SHIFT)
|
---|
342 | # define SST_CCA_MAOTHER (2<<SST_CCA_MSELECT_SHIFT)
|
---|
343 | # define SST_CCA_MALOCAL (3<<SST_CCA_MSELECT_SHIFT)
|
---|
344 | # define SST_CCA_MATMU (4<<SST_CCA_MSELECT_SHIFT)
|
---|
345 | # define SST_CCA_MATREX SST_CCA_MATMU
|
---|
346 | #define SST_CCA_REVERSE_BLEND BIT(22)
|
---|
347 | #define SST_CCA_ADD_CLOCAL BIT(23)
|
---|
348 | #define SST_CCA_ADD_ALOCAL BIT(24)
|
---|
349 | #define SST_CCA_INVERT_OUTPUT BIT(25)
|
---|
350 | #define SST_PARMADJUST BIT(26)
|
---|
351 | #define SST_ENTEXTUREMAP BIT(27)
|
---|
352 | |
---|
353 |
|
---|
354 | // here are some abstract constants that most people will be using
|
---|
355 | // CC stands for Color Combine (RGB channels)
|
---|
356 | // CCA stands for Color Combine Alpha (just the Alpha channel)
|
---|
357 | // BLEND_ATT blends on the Alpha channel of the color passed from TMU to TMU
|
---|
358 | // BLEND_ALOCAL blends on the Alpha channel of the local texture color
|
---|
359 | // NOTE: and of the BLEND modes can be modified using SST_CC_REVERSE_BLEND
|
---|
360 | // and/or SST_CCA_REVERSE_BLEND, these modifiers reverse the "polarity"
|
---|
361 | // of the blend
|
---|
362 | #define SST_CC_MZERO (SST_CC_MONE | SST_CC_REVERSE_BLEND)
|
---|
363 | #define SST_CCA_MZERO (SST_CCA_MONE | SST_CCA_REVERSE_BLEND)
|
---|
364 |
|
---|
365 | #define SST_CCOMBINE_SHIFT 8 // RGB COMBINE MODES
|
---|
366 | #define SST_CCOMBINE (0x1FF<<SST_CCOMBINE_SHIFT)
|
---|
367 | # define SST_CC_REPLACE (SST_CC_ZERO_OTHER | SST_CC_ADD_CLOCAL)
|
---|
368 | # define SST_CC_PASS (SST_CC_MONE)
|
---|
369 | # define SST_CC_ADD (SST_CC_MONE | SST_CC_ADD_CLOCAL)
|
---|
370 | # define SST_CC_SUB (SST_CC_SUB_CLOCAL | SST_CC_MONE)
|
---|
371 | # define SST_CC_MULT (SST_CC_MCLOCAL | SST_CC_REVERSE_BLEND)
|
---|
372 | # define SST_CC_ZERO (SST_CC_MZERO)
|
---|
373 | # define SST_CC_ONE (SST_CC_MZERO | SST_CC_INVERT_OUTPUT)
|
---|
374 | # define SST_CC_BLEND (SST_CC_SUB_CLOCAL | SST_CC_ADD_CLOCAL)
|
---|
375 | # define SST_CC_BLEND_ATT (SST_CC_BLEND | SST_CC_MAOTHER)
|
---|
376 | # define SST_CC_BLEND_ATEX (SST_CC_BLEND | SST_CC_MATMU)
|
---|
377 | # define SST_CC_BLEND_ATEX_REV (SST_CC_BLEND | SST_CC_MATMU | SST_CC_REVERSE_BLEND)
|
---|
378 | # define SST_CC_BLEND_ATT_REV (SST_CC_BLEND | SST_CC_MAOTHER | SST_CC_REVERSE_BLEND)
|
---|
379 | # define SST_CC_BLEND_ALOCAL (SST_CC_BLEND | SST_CC_MALOCAL)
|
---|
380 | #define SST_CACOMBINE_SHIFT 17 // ALPHA COMBINE MODES
|
---|
381 | #define SST_CACOMBINE (0x1FF<<SST_CACOMBINE_SHIFT)
|
---|
382 | # define SST_CCA_REPLACE (SST_CCA_ZERO_OTHER | SST_CCA_ADD_CLOCAL)
|
---|
383 | # define SST_CCA_PASS (SST_CCA_MONE)
|
---|
384 | # define SST_CCA_ADD (SST_CCA_MONE | SST_CCA_ADD_CLOCAL)
|
---|
385 | # define SST_CCA_SUB (SST_CCA_SUB_CLOCAL | SST_CCA_MONE)
|
---|
386 | # define SST_CCA_MULT (SST_CCA_MCLOCAL | SST_CCA_REVERSE_BLEND)
|
---|
387 | # define SST_CCA_ONE (SST_CCA_MZERO | SST_CCA_INVERT_OUTPUT)
|
---|
388 | # define SST_CCA_ZERO (SST_CCA_MZERO)
|
---|
389 | # define SST_CCA_BLEND (SST_CCA_SUB_CLOCAL | SST_CCA_ADD_CLOCAL)
|
---|
390 | # define SST_CCA_BLEND_ATT (SST_CCA_BLEND | SST_CCA_MAOTHER)
|
---|
391 | # define SST_CCA_BLEND_ATEX (SST_CCA_BLEND | SST_CCA_MATMU)
|
---|
392 | # define SST_CCA_BLEND_ATEX_REV (SST_CCA_BLEND | SST_CCA_MATMU | SST_CCA_REVERSE_BLEN)
|
---|
393 | # define SST_CCA_BLEND_ATT_REV (SST_CCA_BLEND | SST_CCA_MAOTHER | SST_CCA_REVERSE_BLEND)
|
---|
394 | # define SST_CCA_BLEND_ALOCAL (SST_CCA_BLEND | SST_CCA_MALOCAL)
|
---|
395 | |
---|
396 |
|
---|
397 | //----------------- SSTfogMode bits -----------------------
|
---|
398 | #define SST_ENFOGGING BIT(0) // Afog*Cfog + (1-Afog)*Color
|
---|
399 | #define SST_FOGADD BIT(1) // generates (1-Afog)*Color
|
---|
400 | #define SST_FOGMULT BIT(2) // generates Afog*Cfog
|
---|
401 | #define SST_FOG_ALPHA BIT(3) // use Alpha iterator to control fog
|
---|
402 | #define SST_FOG_Z BIT(4) // use Z iterator to control fog
|
---|
403 | #define SST_FOG_CONSTANT BIT(5) // simply add Cfog to color and clamp
|
---|
404 |
|
---|
405 | //----------------- SST alphaMode bits -----------------------
|
---|
406 | #define SST_ENALPHAFUNC BIT(0)
|
---|
407 | #define SST_ALPHAFNC_SHIFT 1
|
---|
408 | #define SST_ALPHAFUNC_SHIFT 1
|
---|
409 | # define SST_ALPHAFUNC_LT BIT(1)
|
---|
410 | # define SST_ALPHAFUNC_EQ BIT(2)
|
---|
411 | # define SST_ALPHAFUNC_GT BIT(3)
|
---|
412 | # define SST_ALPHAFNC ( 0x7 << SST_ALPHAFNC_SHIFT )
|
---|
413 | # define SST_ALPHAFUNC ( 0x7 << SST_ALPHAFUNC_SHIFT )
|
---|
414 | #define SST_ENALPHABLEND BIT(4)
|
---|
415 | #define SST_ENANTIALIAS BIT(5)
|
---|
416 | #define SST_RGBSRCFACT_SHIFT 8 // RGB source factor
|
---|
417 | #define SST_RGBSRCFACT (0xF<<SST_RGBSRCFACT_SHIFT)
|
---|
418 | # define SST_A_ZERO 0
|
---|
419 | # define SST_A_SRCALPHA 1
|
---|
420 | # define SST_A_COLOR 2
|
---|
421 | # define SST_A_DSTALPHA 3
|
---|
422 | # define SST_A_ONE 4
|
---|
423 | # define SST_AOM_SRCALPHA 5
|
---|
424 | # define SST_AOM_COLOR 6
|
---|
425 | # define SST_AOM_DSTALPHA 7
|
---|
426 | # define SST_A_SATURATE 0xF // for SRC factor only
|
---|
427 | # define SST_A_COLORBEFOREFOG 0xF // for DST factor only
|
---|
428 | #define SST_RGBDSTFACT_SHIFT 12 // RGB destination factor
|
---|
429 | #define SST_RGBDSTFACT (0xF<<SST_RGBDSTFACT_SHIFT)
|
---|
430 | #define SST_ASRCFACT_SHIFT 16 // A source factor
|
---|
431 | #define SST_ASRCFACT (0xF<<SST_ASRCFACT_SHIFT)
|
---|
432 | #define SST_ADSTFACT_SHIFT 20 // A destination factor
|
---|
433 | #define SST_ADSTFACT (0xF<<SST_ADSTFACT_SHIFT)
|
---|
434 | #define SST_ALPHAREF_SHIFT 24
|
---|
435 | #define SST_ALPHAREF (0xFF<<SST_ALPHAREF_SHIFT)
|
---|
436 |
|
---|
437 | //---------------- SST zaColor bits ----------------------
|
---|
438 | #define SST_ZACOLOR_DEPTH_SHIFT 0
|
---|
439 | #define SST_ZACOLOR_DEPTH ( 0xFFFF << SST_ZACOLOR_DEPTH_SHIFT )
|
---|
440 | #define SST_ZACOLOR_ALPHA_SHIFT 24
|
---|
441 | #define SST_ZACOLOR_ALPHA ( 0xFF << SST_ZACOLOR_ALPHA_SHIFT )
|
---|
442 |
|
---|
443 | //----------------- SST clip bits ------------------------
|
---|
444 | //clipLeftRight
|
---|
445 | #define SST_CLIPLEFT_SHIFT 16
|
---|
446 | #define SST_CLIPRIGHT_SHIFT 0
|
---|
447 | //clipBottomTop
|
---|
448 | #define SST_CLIPBOTTOM_SHIFT 16
|
---|
449 | #define SST_CLIPTOP_SHIFT 0
|
---|
450 |
|
---|
451 | //----------------- SST status bits -----------------------
|
---|
452 | #define SST_FIFOLEVEL 0x3F
|
---|
453 | #define SST_VRETRACE BIT(6)
|
---|
454 | #define SST_FBI_BUSY BIT(7)
|
---|
455 | #define SST_TMU_BUSY BIT(8)
|
---|
456 | #define SST_TREX_BUSY SST_TMU_BUSY
|
---|
457 | #define SST_BUSY BIT(9)
|
---|
458 | #define SST_DISPLAYED_BUFFER_SHIFT 10
|
---|
459 | #define SST_DISPLAYED_BUFFER (0x3<<SST_DISPLAYED_BUFFER_SHIFT)
|
---|
460 | #define SST_MEMFIFOLEVEL_SHIFT 12
|
---|
461 | #define SST_MEMFIFOLEVEL (0xFFFF<<SST_MEMFIFOLEVEL_SHIFT)
|
---|
462 | #define SST_SWAPBUFPENDING_SHIFT 28
|
---|
463 | #define SST_SWAPBUFPENDING (0x7<<SST_SWAPBUFPENDING_SHIFT)
|
---|
464 | #define SST_PCIINTERRUPTED BIT(31)
|
---|
465 | //----------------- SST fbiInit* -----------------------
|
---|
466 | // fbiInit0
|
---|
467 | #define SST_EN_VGA_PASSTHRU BIT(0)
|
---|
468 | #define SST_PCI_FIFO_LWM_SHIFT 6
|
---|
469 | #define SST_PCI_FIFO_LWM (0x1F<<SST_PCI_FIFO_LWM_SHIFT)
|
---|
470 | #define SST_EN_LFB_MEMFIFO BIT(11)
|
---|
471 | #define SST_EN_TEX_MEMFIFO BIT(12)
|
---|
472 | #define SST_MEM_FIFO_EN BIT(13)
|
---|
473 | #define SST_MEM_FIFO_HWM_SHIFT 14
|
---|
474 | #define SST_MEM_FIFO_HWM (0x7FF<<SST_MEM_FIFO_HWM_SHIFT)
|
---|
475 | #define SST_MEM_FIFO_BURST_HWM_SHIFT 25
|
---|
476 | #define SST_MEM_FIFO_BURST_HWM (0x3F<<SST_MEM_FIFO_BURST_HWM_SHIFT)
|
---|
477 | // fbiInit1
|
---|
478 | #define SST_PCI_WRWS_0 0x0
|
---|
479 | #define SST_PCI_WRWS_1 BIT(1)
|
---|
480 | #define SST_LFB_READ_EN BIT(3)
|
---|
481 | #define SST_VIDEO_TILES_IN_X_SHIFT 4
|
---|
482 | #define SST_VIDEO_TILES_IN_X (0xF<<SST_VIDEO_TILES_IN_X_SHIFT)
|
---|
483 | # define SST_VIDEO_TILES_IN_X_448 (7<<SST_VIDEO_TILES_IN_X_SHIFT)
|
---|
484 | # define SST_VIDEO_TILES_IN_X_512 (8<<SST_VIDEO_TILES_IN_X_SHIFT)
|
---|
485 | # define SST_VIDEO_TILES_IN_X_640 (10<<SST_VIDEO_TILES_IN_X_SHIFT)
|
---|
486 | # define SST_VIDEO_TILES_IN_X_832 (13<<SST_VIDEO_TILES_IN_X_SHIFT)
|
---|
487 | # define SST_VIDEO_TILES_IN_X_800 SST_VIDEO_TILES_IN_X_832
|
---|
488 | #define SST_VIDEO_RESET BIT(8)
|
---|
489 | #define SST_VIDEO_RUN 0
|
---|
490 | #define SST_VIDEO_STOP BIT(8)
|
---|
491 | #define SST_HVSYNC_OVERRIDE BIT(9)
|
---|
492 | #define SST_HSYNC_OVERRIDE_VAL BIT(10)
|
---|
493 | #define SST_VSYNC_OVERRIDE_VAL BIT(11)
|
---|
494 | #define SST_VIDEO_BLANK_EN BIT(12)
|
---|
495 | #define SST_VIDEO_DATA_OE_EN BIT(13)
|
---|
496 | #define SST_VIDEO_BLANK_OE_EN BIT(14)
|
---|
497 | #define SST_VIDEO_HVSYNC_OE_EN BIT(15)
|
---|
498 | #define SST_VIDEO_DCLK_OE_EN BIT(16)
|
---|
499 | #define SST_VIDEO_VID_CLK_SEL BIT(17)
|
---|
500 | #define SST_VIDEO_VID_CLK_2X 0x0
|
---|
501 | #define SST_VIDEO_VID_CLK_SLAVE BIT(17)
|
---|
502 | #define SST_VIDEO_VCLK_2X_INPUT_DEL_SHIFT 18
|
---|
503 | #define SST_VIDEO_VCLK_2X_INPUT_DEL (0x3<<SST_VIDEO_VCLK_2X_INPUT_DEL_SHIFT)
|
---|
504 | #define SST_VIDEO_VCLK_SEL_SHIFT 20
|
---|
505 | # define SST_VIDEO_VCLK_SEL (0x3<<SST_VIDEO_VCLK_SEL_SHIFT)
|
---|
506 | # define SST_VIDEO_VCLK_DIV2 (0x1<<SST_VIDEO_VCLK_SEL_SHIFT)
|
---|
507 | #define SST_VIDEO_24BPP_EN BIT(22)
|
---|
508 | #define SST_EN_SCANLINE_INTERLEAVE BIT(23)
|
---|
509 | #define SST_VIDEO_FILTER_EN BIT(25)
|
---|
510 | #define SST_VIDEO_INVERT_VID_CLK_2X BIT(26)
|
---|
511 | #define SST_VIDEO_VCLK_2X_OUTPUT_DEL_SHIFT 27
|
---|
512 | # define SST_VIDEO_VCLK_2X_OUTPUT_DEL (0x3<<SST_VIDEO_VCLK_2X_OUTPUT_DEL_SHIFT)
|
---|
513 | #define SST_VIDEO_VCLK_DEL_SHIFT 29
|
---|
514 | # define SST_VIDEO_VCLK_DEL (0x3<<SST_VIDEO_VCLK_DEL_SHIFT)
|
---|
515 | #define SST_DISEN_RD_AHEAD_WR_RD BIT(31)
|
---|
516 | #define SST_VIDEO_MASK 0x7e7ffe00
|
---|
517 | // fbiInit2
|
---|
518 | #define SST_VIDEO_DITHER_SUB_EN BIT(0)
|
---|
519 | #define SST_DRAM_BANKING_CONFIG BIT(1)
|
---|
520 | #define SST_EN_TRIPLE_BUFFERING BIT(4)
|
---|
521 | #define SST_EN_FAST_RAS_READ BIT(5)
|
---|
522 | #define SST_EN_OE_GEN BIT(6)
|
---|
523 | #define SST_EN_FAST_RD_AHEAD_WR BIT(7)
|
---|
524 | #define SST_EN_DITHER_PASSTHRU BIT(8)
|
---|
525 | #define SST_SWAP_ALGORITHM_SHIFT 9
|
---|
526 | #define SST_SWAP_ALGORITHM (0x3<<SST_SWAP_ALGORITHM_SHIFT)
|
---|
527 | # define SST_SWAP_VSYNC (0<<SST_SWAP_ALGORITHM_SHIFT)
|
---|
528 | # define SST_SWAP_DACDATA0 (1<<SST_SWAP_ALGORITHM_SHIFT)
|
---|
529 | # define SST_SWAP_FIFOSTALL (2<<SST_SWAP_ALGORITHM_SHIFT)
|
---|
530 | #define SST_VIDEO_BUFFER_OFFSET_SHIFT 11
|
---|
531 | #define SST_VIDEO_BUFFER_OFFSET (0x1FF<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
|
---|
532 | # define SST_VIDEO_BUFFER_OFFSET_448 (77<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
|
---|
533 | # define SST_VIDEO_BUFFER_OFFSET_512 (96<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
|
---|
534 | # define SST_VIDEO_BUFFER_OFFSET_640 (150<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
|
---|
535 | # define SST_VIDEO_BUFFER_OFFSET_832 (247<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
|
---|
536 | #define SST_VIDEO_BUFFER_OFFSET_800 SST_VIDEO_BUFFER_OFFSET_832
|
---|
537 | #define SST_EN_DRAM_BANKED BIT(20)
|
---|
538 | #define SST_EN_DRAM_RD_AHEAD_FIFO BIT(21)
|
---|
539 | #define SST_EN_DRAM_REFRESH BIT(22)
|
---|
540 | #define SST_DRAM_REFRESH_CNTR_SHIFT 23
|
---|
541 | # define SST_DRAM_REFRESH_CNTR (0x1FF<<SST_DRAM_REFRESH_CNTR_SHIFT)
|
---|
542 | // fbiInit3
|
---|
543 | #define SST_ALT_REGMAPPING BIT(0)
|
---|
544 | #define SST_VIDEO_FIFO_THRESH_SHIFT 1
|
---|
545 | # define SST_VIDEO_FIFO_THRESH (0x1F<<SST_VIDEO_FIFO_THRESH_SHIFT)
|
---|
546 | #define SST_YORIGIN_TOP_SHIFT 22
|
---|
547 | # define SST_YORIGIN_TOP (0x3FF<<SST_YORIGIN_TOP_SHIFT)
|
---|
548 | #define SST_YORIGIN_SUBVAL_SHIFT SST_YORIGIN_TOP_SHIFT
|
---|
549 | #define SST_YORIGIN_SUBVAL (0x3FF<<SST_YORIGIN_SUBVAL_SHIFT)
|
---|
550 |
|
---|
551 | //----------------- SST dacData bits -----------------------
|
---|
552 | #define SST_DACDATA_DATA (0xFF)
|
---|
553 | #define SST_DACDATA_ADDR_SHIFT 8
|
---|
554 | #define SST_DACDATA_ADDR (0x7<<SST_DACDATA_ADDR_SHIFT)
|
---|
555 | #define SST_DACDATA_RD BIT(11)
|
---|
556 | #define SST_DACDATA_WR 0x0
|
---|
557 |
|
---|
558 | //----------------- swapBufferCMD bits ---------------------
|
---|
559 | #define SST_SWAP_EN_WAIT_ON_VSYNC BIT(0)
|
---|
560 | #define SST_SWAP_BUFFER_INTERVAL_SHIFT 1
|
---|
561 | #define SST_SWAP_BUFFER_INTERVAL (0xff << SST_SWAP_BUFFER_INTERVAL_SHIFT)
|
---|
562 |
|
---|
563 | //----------------- SST Configuration Registers ---------------
|
---|
564 | #define SST_MEMBASE_ADDR 0x10
|
---|
565 | #define SST_INIT_ENABLE 0x40
|
---|
566 | #define SST_BUS_SNOOP0 0x44
|
---|
567 | #define SST_BUS_SNOOP1 0x48
|
---|
568 | #define SST_CFG_STATUS 0x4c
|
---|
569 |
|
---|
570 | //----------------- SST Remapped Registers --------------------
|
---|
571 | #define SST_DAC_RD_DATA 0x00000218
|
---|
572 | #define SST_VIDEO_CHECKSUM 0x0000021c
|
---|
573 |
|
---|
574 | //----------------- SST initEnable (Config register) bits ---
|
---|
575 | #define SST_INITWR_EN BIT(0)
|
---|
576 | #define SST_PCI_FIFOWR_EN BIT(1)
|
---|
577 | #define SST_FBIINIT23_REMAP BIT(2)
|
---|
578 | #define SST_SNOOP0_EN BIT(4)
|
---|
579 | #define SST_SNOOP0_IO BIT(5)
|
---|
580 | #define SST_SNOOP0_RD BIT(6)
|
---|
581 | #define SST_SNOOP1_EN BIT(7)
|
---|
582 | #define SST_SNOOP1_IO BIT(8)
|
---|
583 | #define SST_SNOOP1_RD BIT(9)
|
---|
584 | #define SST_SCANLINE_SLV_OWNPCI BIT(10)
|
---|
585 | #define SST_SCANLINE_SLI_SLV BIT(11)
|
---|
586 |
|
---|
587 | //----------------- Other---------------------------------------
|
---|
588 | #define SST_LFB_ADDR BIT(22)
|
---|
589 | #define SST_TEX_ADDR BIT(23)
|
---|
590 |
|
---|
591 | //----------------- SST vRetrace bits ---------------------
|
---|
592 | #define SST_VRETRACE_VSYNC_OFF 0xff
|
---|
593 |
|
---|
594 | //----------------- SST hSync bits ------------------------
|
---|
595 | #define SST_HSYNC_ON 0xff
|
---|
596 | #define SST_HSYNC_OFF_SHIFT 16
|
---|
597 | #define SST_HSYNC_OFF (0x3ff << SST_HSYNCOFF_SHIFT)
|
---|
598 |
|
---|
599 | //----------------- SST vSync bits ------------------------
|
---|
600 | #define SST_VSYNC_ON 0xff
|
---|
601 | #define SST_VSYNC_OFF_SHIFT 16
|
---|
602 | #define SST_VSYNC_OFF (0xfff << SST_VSYNC_OFF_SHIFT)
|
---|
603 |
|
---|
604 | //----------------- SST backPorch bits
|
---|
605 | #define SST_HBACKPORCH 0xff
|
---|
606 | #define SST_VBACKPORCH_SHIFT 16
|
---|
607 | #define SST_VBACKPORCH (0xff << SST_VBACKPORCH_SHIFT)
|
---|
608 |
|
---|
609 | //----------------- SST videoDimensionS Register
|
---|
610 | #define SST_VIDEODIMENSIONS_X 0x3ff
|
---|
611 | #define SST_VIDEODIMENSIONS_Y_SHIFT 16
|
---|
612 | #define SST_VIDEODIMENSIONS_Y 0x3ff
|
---|
613 | |
---|
614 |
|
---|
615 | //----------------- SST chip layout -----------------------
|
---|
616 | // registers are in groups of 8 for easy decode
|
---|
617 | typedef struct sstregs { // THE CHIP
|
---|
618 | #ifndef SST96
|
---|
619 | // EXTERNAL registers
|
---|
620 | unsigned long status; // chip status, Read Only
|
---|
621 | unsigned long reserved0;
|
---|
622 | vtxRec vA; // Vertex A,B,C
|
---|
623 | vtxRec vB;
|
---|
624 | vtxRec vC;
|
---|
625 |
|
---|
626 | long r; // 12.12 Parameters
|
---|
627 | long g; // 12.12
|
---|
628 | long b; // 12.12
|
---|
629 | long z; // 20.12
|
---|
630 | long a; // 12.12
|
---|
631 | long s; // 14.18
|
---|
632 | long t; // 14.18
|
---|
633 | long w; // 2.30
|
---|
634 |
|
---|
635 | long drdx; // X Gradients
|
---|
636 | long dgdx;
|
---|
637 | long dbdx;
|
---|
638 | long dzdx;
|
---|
639 | long dadx;
|
---|
640 | long dsdx;
|
---|
641 | long dtdx;
|
---|
642 | long dwdx;
|
---|
643 |
|
---|
644 | long drdy; // Y Gradients
|
---|
645 | long dgdy;
|
---|
646 | long dbdy;
|
---|
647 | long dzdy;
|
---|
648 | long dady;
|
---|
649 | long dsdy;
|
---|
650 | long dtdy;
|
---|
651 | long dwdy;
|
---|
652 |
|
---|
653 | unsigned long triangleCMD; // execute a triangle command (float)
|
---|
654 | unsigned long reserved1;
|
---|
655 | vtxRec FvA; // floating point version
|
---|
656 | vtxRec FvB;
|
---|
657 | vtxRec FvC;
|
---|
658 |
|
---|
659 | long Fr; // floating point version
|
---|
660 | long Fg;
|
---|
661 | long Fb;
|
---|
662 | long Fz;
|
---|
663 | long Fa;
|
---|
664 | long Fs;
|
---|
665 | long Ft;
|
---|
666 | long Fw;
|
---|
667 |
|
---|
668 | long Fdrdx;
|
---|
669 | long Fdgdx;
|
---|
670 | long Fdbdx;
|
---|
671 | long Fdzdx;
|
---|
672 | long Fdadx;
|
---|
673 | long Fdsdx;
|
---|
674 | long Fdtdx;
|
---|
675 | long Fdwdx;
|
---|
676 |
|
---|
677 | long Fdrdy;
|
---|
678 | long Fdgdy;
|
---|
679 | long Fdbdy;
|
---|
680 | long Fdzdy;
|
---|
681 | long Fdady;
|
---|
682 | long Fdsdy;
|
---|
683 | long Fdtdy;
|
---|
684 | long Fdwdy;
|
---|
685 |
|
---|
686 | unsigned long FtriangleCMD; // execute a triangle command
|
---|
687 | unsigned long fbzColorPath; // color select and combine
|
---|
688 | unsigned long fogMode; // fog Mode
|
---|
689 | unsigned long alphaMode; // alpha Mode
|
---|
690 | unsigned long fbzMode; // framebuffer and Z mode
|
---|
691 | unsigned long lfbMode; // linear framebuffer Mode
|
---|
692 | unsigned long clipLeftRight; // (6)10(6)10
|
---|
693 | unsigned long clipBottomTop; // (6)10(6)10
|
---|
694 |
|
---|
695 | unsigned long nopCMD; // execute a nop command
|
---|
696 | unsigned long fastfillCMD; // execute a fast fill command
|
---|
697 | unsigned long swapbufferCMD;// execute a swapbuffer command
|
---|
698 | unsigned long fogColor; // (8)888
|
---|
699 | unsigned long zaColor; // 8(8)16
|
---|
700 | unsigned long chromaKey; // (8)888
|
---|
701 | unsigned long reserved2;
|
---|
702 | unsigned long reserved3;
|
---|
703 |
|
---|
704 | unsigned long stipple; // 32 bits, MSB masks pixels
|
---|
705 | unsigned long c0; // 8.8.8.8 (ARGB)
|
---|
706 | unsigned long c1; // 8.8.8.8 (ARGB)
|
---|
707 | struct { // statistic gathering variables
|
---|
708 | unsigned int fbiPixelsIn;
|
---|
709 | unsigned int fbiChromaFail;
|
---|
710 | unsigned int fbiZfuncFail;
|
---|
711 | unsigned int fbiAfuncFail;
|
---|
712 | unsigned int fbiPixelsOut;
|
---|
713 | } stats;
|
---|
714 |
|
---|
715 | unsigned long fogTable[32]; // 64 entries, 2 per word, 2 bytes each
|
---|
716 |
|
---|
717 | unsigned long reserved8[8];
|
---|
718 |
|
---|
719 | unsigned long fbiInit4;
|
---|
720 | unsigned long vRetrace;
|
---|
721 | unsigned long backPorch;
|
---|
722 | unsigned long videoDimensions;
|
---|
723 | unsigned long fbiInit0;
|
---|
724 | unsigned long fbiInit1;
|
---|
725 | unsigned long fbiInit2;
|
---|
726 | unsigned long fbiInit3;
|
---|
727 |
|
---|
728 | unsigned long hSync;
|
---|
729 | unsigned long vSync;
|
---|
730 | unsigned long clutData;
|
---|
731 | unsigned long dacData;
|
---|
732 | unsigned long videoFilterRgbThreshold;
|
---|
733 | unsigned long reserved35[35]; // reserved51 became reserved35,
|
---|
734 | // Grabbed remaining 16 for sst-96
|
---|
735 |
|
---|
736 |
|
---|
737 | //========================================================================
|
---|
738 | // Please treat as the SST-96 area.
|
---|
739 | // These belong in the SST_CHROMARANGE register
|
---|
740 | #define SST_CHROMARANGE_BLUE_EX BIT(24) // Blue value in exclusive mode
|
---|
741 | #define SST_CHROMARANGE_GREEN_EX BIT(25) // Green value in exclusive mode
|
---|
742 | #define SST_CHROMARANGE_RED_EX BIT(26) // Red value in exclusive mode
|
---|
743 | #define SST_CHROMARANGE_BLOCK_OR BIT(27) // Union of all colors.
|
---|
744 | #define SST_ENCHROMARANGE BIT(28)
|
---|
745 |
|
---|
746 | // These belong in the clipLeftRight and clipTopBottom Registers.
|
---|
747 | #define SST_ENRECTCLIP01 BIT(31) //
|
---|
748 | #define SST_RECTCLIP_EX BIT(31) //
|
---|
749 |
|
---|
750 | // Just to unconfuse myself:
|
---|
751 | //
|
---|
752 | // CHIP FBI-REV TMU-REV DEV-ID
|
---|
753 | // SST1-0.6u 1 0 1
|
---|
754 | // SST1-0.5u 2 1 1
|
---|
755 | // SST-96 1 (1) 2
|
---|
756 | //
|
---|
757 | // SST96h2 == H2
|
---|
758 | // SST97 == H3
|
---|
759 | #define SST_DEVICE_ID_SST1 1
|
---|
760 | #define SST_DEVICE_ID_SST96 2
|
---|
761 | #define SST_DEVICE_ID_SST96h2 3
|
---|
762 | #define SST_DEVICE_ID_SST97 4
|
---|
763 |
|
---|
764 |
|
---|
765 | unsigned long chromaRange; // SST-96 specific
|
---|
766 | unsigned long clipLeftRight1; // SST-96 specific
|
---|
767 | unsigned long clipBottomTop1; // SST-96 specific
|
---|
768 | unsigned long colBufferSetup; // SST-96 specific
|
---|
769 | unsigned long auxBufferSetup; // SST-96 specific
|
---|
770 | unsigned long texChipSel; // SST-96 specific
|
---|
771 | unsigned long swapPendCmd; // SST-96 specific
|
---|
772 | unsigned long reservedSST96[9]; // SST-96 specific
|
---|
773 |
|
---|
774 | // End SST-96 area
|
---|
775 | //========================================================================
|
---|
776 |
|
---|
777 | unsigned long textureMode; // texture Mode
|
---|
778 | unsigned long tLOD; // texture LOD settings
|
---|
779 | unsigned long tDetail; // texture detail settings
|
---|
780 | unsigned long texBaseAddr; // current texture base address
|
---|
781 | unsigned long texBaseAddr1;
|
---|
782 | unsigned long texBaseAddr2;
|
---|
783 | unsigned long texBaseAddr38;
|
---|
784 | unsigned long trexInit0; // hardware init bits
|
---|
785 | unsigned long trexInit1; // hardware init bits
|
---|
786 |
|
---|
787 | unsigned long nccTable0[12]; // NCC decode tables, bits are packed
|
---|
788 | unsigned long nccTable1[12]; // 4 words Y, 4 words I, 4 words Q
|
---|
789 |
|
---|
790 | #else
|
---|
791 | /* EXTERNAL registers */
|
---|
792 | unsigned long status; /* chip status, Read Only */
|
---|
793 | unsigned long reserved001; /* reserved001 */
|
---|
794 |
|
---|
795 | /* Fixed point version */
|
---|
796 | vtxRec vA; /* Vertex A,B,C */
|
---|
797 | vtxRec vB;
|
---|
798 | vtxRec vC;
|
---|
799 |
|
---|
800 | /* Parameters, X gradients, Y gradients */
|
---|
801 | long r; /* 12.12 */
|
---|
802 | long drdx; /* 12.12 */
|
---|
803 | long drdy;
|
---|
804 | long g;
|
---|
805 | long dgdx;
|
---|
806 | long dgdy;
|
---|
807 | long b;
|
---|
808 | long dbdx;
|
---|
809 |
|
---|
810 | long dbdy;
|
---|
811 | long z; /* 20.12 */
|
---|
812 | long dzdx; /* 20.12 */
|
---|
813 | long dzdy; /* ??? 12.12 */
|
---|
814 | long a; /* 12.12 */
|
---|
815 | long dadx; /* 12.12 */
|
---|
816 | long dady;
|
---|
817 | long s; /* 14.18 */
|
---|
818 |
|
---|
819 | long dsdx; /* 14.18 */
|
---|
820 | long dsdy;
|
---|
821 | long t;
|
---|
822 | long dtdx;
|
---|
823 | long dtdy;
|
---|
824 | long w; /* 2.30 */
|
---|
825 | long dwdx; /* 2.30 */
|
---|
826 | long dwdy;
|
---|
827 |
|
---|
828 | unsigned long triangleCMD; /* execute a triangle command (fixed) */
|
---|
829 | unsigned long reserved021;
|
---|
830 |
|
---|
831 | /* Floating point version */
|
---|
832 | vtxRec FvA;
|
---|
833 | vtxRec FvB;
|
---|
834 | vtxRec FvC;
|
---|
835 |
|
---|
836 | /* Parameters, X gradients, Y gradients */
|
---|
837 | float Fr;
|
---|
838 | float Fdrdx;
|
---|
839 | float Fdrdy;
|
---|
840 | float Fg;
|
---|
841 | float Fdgdx;
|
---|
842 | float Fdgdy;
|
---|
843 | float Fb;
|
---|
844 | float Fdbdx;
|
---|
845 |
|
---|
846 | float Fdbdy;
|
---|
847 | float Fz;
|
---|
848 | float Fdzdx;
|
---|
849 | float Fdzdy;
|
---|
850 | float Fa;
|
---|
851 | float Fdadx;
|
---|
852 | float Fdady;
|
---|
853 | float Fs;
|
---|
854 |
|
---|
855 | float Fdsdx;
|
---|
856 | float Fdsdy;
|
---|
857 | float Ft;
|
---|
858 | float Fdtdx;
|
---|
859 | float Fdtdy;
|
---|
860 | float Fw;
|
---|
861 | float Fdwdx;
|
---|
862 | float Fdwdy;
|
---|
863 |
|
---|
864 | /* commands except for triangleCMD */
|
---|
865 | unsigned long FtriangleCMD; /* execute a triangle command (float) */
|
---|
866 | unsigned long reserved041; /* required cmd spacer for SST-96 */
|
---|
867 | unsigned long nopCMD; /* execute a nop command */
|
---|
868 | unsigned long reserved043; /* required cmd spacer for SST-96 */
|
---|
869 | unsigned long fastfillCMD; /* execute a fast fill command */
|
---|
870 | unsigned long reserved045; /* required cmd spacer for SST-96 */
|
---|
871 | unsigned long swapbufferCMD; /* execute a swapbuffer command */
|
---|
872 | unsigned long reserved047; /* required cmd spacer for SST-96 */
|
---|
873 |
|
---|
874 | unsigned long swappendCMD; /* increment swap pending count */
|
---|
875 | unsigned long reserved049; /* required cmd spacer for SST-96 */
|
---|
876 | unsigned long reserved04A[6]; /* 0x04A to 0x04F */
|
---|
877 |
|
---|
878 | /* state registers */
|
---|
879 | unsigned long fbzColorPath; /* color select and combine */
|
---|
880 | unsigned long fogMode; /* fog Mode */
|
---|
881 | unsigned long alphaMode; /* alpha Mode */
|
---|
882 | unsigned long reserved053;
|
---|
883 | unsigned long fbzMode; /* color and auxiliary buffer control */
|
---|
884 | unsigned long stipple; /* 32 bits, MSB masks pixels */
|
---|
885 | unsigned long c0; /* 8.8.8.8 (ARGB) */
|
---|
886 | unsigned long c1; /* 8.8.8.8 (ARGB) */
|
---|
887 |
|
---|
888 | unsigned long fogColor; /* (8)888 */
|
---|
889 | unsigned long zaColor; /* 8(8)16 */
|
---|
890 | unsigned long chromaKey; /* (8)888 */
|
---|
891 | unsigned long chromaRange; /* Chroma Range compare Values, Modes & Enable */
|
---|
892 | unsigned long reserved05C[4]; /* 0x05C to 0x05F */
|
---|
893 |
|
---|
894 | unsigned long colBufferSetup; /* color buffer base address, stride, and mode */
|
---|
895 | unsigned long auxBufferSetup; /* auxiliary buffer base address, stride */
|
---|
896 | unsigned long clipLeftRight; /* (6)10(6)10 */
|
---|
897 | unsigned long clipBottomTop; /* (6)10(6)10 */
|
---|
898 | unsigned long clipLeftRight1; /* (6)10(6)10 */
|
---|
899 | unsigned long clipBottomTop1; /* (6)10(6)10 */
|
---|
900 | unsigned long reserved066[10]; /* 0x066 to 0x06F */
|
---|
901 |
|
---|
902 | unsigned long fogTable[32]; /* 64 entries, 2 per word, 2 bytes each */
|
---|
903 |
|
---|
904 | unsigned long fbijrInit0; /* FBIjr Hardware Init 0 - General */
|
---|
905 | unsigned long fbijrInit1; /* FBIjr Hardware Init 1 - PUMA */
|
---|
906 | unsigned long fbijrInit2; /* FBIjr Hardware Init 2 - MEM FIFO Setup */
|
---|
907 | unsigned long fbijrInit3; /* FBIjr Hardware Init 3 - CMD FIFO Setup */
|
---|
908 | unsigned long fbijrInit4; /* FBIjr Hardware Init 4 - CMD FIFO Entry Count */
|
---|
909 | unsigned long fbijrInit5; /* FBIjr Hardware Init 5 - CMD FIFO Read Pointer */
|
---|
910 | unsigned long reserved096[10]; /* 0x096 to 0x09F */
|
---|
911 |
|
---|
912 | unsigned long fbijrVersion; /* FBIjr Version (company, device, & board */
|
---|
913 | struct { /* statistic gathering variables */
|
---|
914 | unsigned int fbiPixelsIn; /* Pixel counter (number pixels processed) */
|
---|
915 | unsigned int fbiChromaFail; /* Pixel counter (number pixels failed Chroma test) */
|
---|
916 | unsigned int fbiZfuncFail; /* Pixel counter (number pixels failed Z test) */
|
---|
917 | unsigned int fbiAfuncFail; /* Pixel counter (number pixels failed Alpha test) */
|
---|
918 | unsigned int fbiPixelsOut; /* Pixel counter (number pixels drawn) */
|
---|
919 | } stats;
|
---|
920 | unsigned long reserved0A6[10]; /* 0x0A6 to 0x0AF */
|
---|
921 |
|
---|
922 | unsigned long reserved0B0[15]; /* 0x0B0 to 0x0BE */
|
---|
923 | unsigned long texChipSel; /* Texture Write Chip select */
|
---|
924 |
|
---|
925 | /* TMU registers */
|
---|
926 | unsigned long textureMode; /* texture Mode */
|
---|
927 | unsigned long tLOD; /* texture LOD settings */
|
---|
928 | unsigned long tDetail; /* texture detail settings */
|
---|
929 | unsigned long texBaseAddr; /* current texture base address */
|
---|
930 | unsigned long texBaseAddr1;
|
---|
931 | unsigned long texBaseAddr2;
|
---|
932 | unsigned long texBaseAddr38;
|
---|
933 | unsigned long trexInit0; /* hardware init bits */
|
---|
934 | unsigned long trexInit1; /* hardware init bits */
|
---|
935 | unsigned long nccTable0[12]; /* NCC decode tables, bits are packed */
|
---|
936 | unsigned long nccTable1[12]; /* 4 words Y, 4 words I, 4 words Q */
|
---|
937 |
|
---|
938 | unsigned long reserved0E1[31]; /* 0x0E1 to 0x0FF */
|
---|
939 | #endif
|
---|
940 | } Sstregs;
|
---|
941 |
|
---|
942 | #ifndef SST96
|
---|
943 | // Here are the defines for the alternate register mappings
|
---|
944 | #define r_ALT r
|
---|
945 | #define drdx_ALT g
|
---|
946 | #define drdy_ALT b
|
---|
947 | #define g_ALT z
|
---|
948 | #define dgdx_ALT a
|
---|
949 | #define dgdy_ALT s
|
---|
950 | #define b_ALT t
|
---|
951 | #define dbdx_ALT w
|
---|
952 |
|
---|
953 | #define dbdy_ALT drdx
|
---|
954 | #define z_ALT dgdx
|
---|
955 | #define dzdx_ALT dbdx
|
---|
956 | #define dzdy_ALT dzdx
|
---|
957 | #define a_ALT dadx
|
---|
958 | #define dadx_ALT dsdx
|
---|
959 | #define dady_ALT dtdx
|
---|
960 | #define s_ALT dwdx
|
---|
961 |
|
---|
962 | #define dsdx_ALT drdy
|
---|
963 | #define dsdy_ALT dgdy
|
---|
964 | #define t_ALT dbdy
|
---|
965 | #define dtdx_ALT dzdy
|
---|
966 | #define dtdy_ALT dady
|
---|
967 | #define w_ALT dsdy
|
---|
968 | #define dwdx_ALT dtdy
|
---|
969 | #define dwdy_ALT dwdy
|
---|
970 |
|
---|
971 | #define Fr_ALT Fr
|
---|
972 | #define Fdrdx_ALT Fg
|
---|
973 | #define Fdrdy_ALT Fb
|
---|
974 | #define Fg_ALT Fz
|
---|
975 | #define Fdgdx_ALT Fa
|
---|
976 | #define Fdgdy_ALT Fs
|
---|
977 | #define Fb_ALT Ft
|
---|
978 | #define Fdbdx_ALT Fw
|
---|
979 |
|
---|
980 | #define Fdbdy_ALT Fdrdx
|
---|
981 | #define Fz_ALT Fdgdx
|
---|
982 | #define Fdzdx_ALT Fdbdx
|
---|
983 | #define Fdzdy_ALT Fdzdx
|
---|
984 | #define Fa_ALT Fdadx
|
---|
985 | #define Fdadx_ALT Fdsdx
|
---|
986 | #define Fdady_ALT Fdtdx
|
---|
987 | #define Fs_ALT Fdwdx
|
---|
988 |
|
---|
989 | #define Fdsdx_ALT Fdrdy
|
---|
990 | #define Fdsdy_ALT Fdgdy
|
---|
991 | #define Ft_ALT Fdbdy
|
---|
992 | #define Fdtdx_ALT Fdzdy
|
---|
993 | #define Fdtdy_ALT Fdady
|
---|
994 | #define Fw_ALT Fdsdy
|
---|
995 | #define Fdwdx_ALT Fdtdy
|
---|
996 | #define Fdwdy_ALT Fdwdy
|
---|
997 | #else
|
---|
998 | // Here are the defines for the alternate register mappings
|
---|
999 | #define r_ALT r
|
---|
1000 | #define drdx_ALT drdx
|
---|
1001 | #define drdy_ALT drdy
|
---|
1002 | #define g_ALT c
|
---|
1003 | #define dgdx_ALT dgdx
|
---|
1004 | #define dgdy_ALT dgdy
|
---|
1005 | #define b_ALT b
|
---|
1006 | #define dbdx_ALT dbdx
|
---|
1007 |
|
---|
1008 | #define dbdy_ALT dbdy
|
---|
1009 | #define z_ALT zgdx
|
---|
1010 | #define dzdx_ALT dzdx
|
---|
1011 | #define dzdy_ALT dzdy
|
---|
1012 | #define a_ALT a
|
---|
1013 | #define dadx_ALT dadx
|
---|
1014 | #define dady_ALT dady
|
---|
1015 | #define s_ALT s
|
---|
1016 |
|
---|
1017 | #define dsdx_ALT dsdx
|
---|
1018 | #define dsdy_ALT dsdy
|
---|
1019 | #define t_ALT t
|
---|
1020 | #define dtdx_ALT dtdx
|
---|
1021 | #define dtdy_ALT dtdy
|
---|
1022 | #define w_ALT w
|
---|
1023 | #define dwdx_ALT dwdx
|
---|
1024 | #define dwdy_ALT dwdy
|
---|
1025 |
|
---|
1026 | #define Fr_ALT Fr
|
---|
1027 | #define Fdrdx_ALT Fdrdx
|
---|
1028 | #define Fdrdy_ALT Fdrdy
|
---|
1029 | #define Fg_ALT Fg
|
---|
1030 | #define Fdgdx_ALT Fdgdx
|
---|
1031 | #define Fdgdy_ALT Fdgdy
|
---|
1032 | #define Fb_ALT Fb
|
---|
1033 | #define Fdbdx_ALT Fdbdx
|
---|
1034 |
|
---|
1035 | #define Fdbdy_ALT Fdbdy
|
---|
1036 | #define Fz_ALT Fz
|
---|
1037 | #define Fdzdx_ALT Fdzdx
|
---|
1038 | #define Fdzdy_ALT Fdzdy
|
---|
1039 | #define Fa_ALT Fa
|
---|
1040 | #define Fdadx_ALT Fdadx
|
---|
1041 | #define Fdady_ALT Fdady
|
---|
1042 | #define Fs_ALT Fs
|
---|
1043 |
|
---|
1044 | #define Fdsdx_ALT Fdsdx
|
---|
1045 | #define Fdsdy_ALT Fdsdy
|
---|
1046 | #define Ft_ALT Ft
|
---|
1047 | #define Fdtdx_ALT Fdtdx
|
---|
1048 | #define Fdtdy_ALT Fdtdy
|
---|
1049 | #define Fw_ALT Fw
|
---|
1050 | #define Fdwdx_ALT Fdwdx
|
---|
1051 | #define Fdwdy_ALT Fdwdy
|
---|
1052 | #endif
|
---|
1053 |
|
---|
1054 | // Here are the defines for the hardware
|
---|
1055 | #define GET(s) s
|
---|
1056 | #define GET16(s) s
|
---|
1057 | #define SET(d,s) d = s
|
---|
1058 | #define SET16(d,s) d = s
|
---|
1059 | #define SETF(d,s) (*(float *)&(d)) = s
|
---|
1060 |
|
---|
1061 | // SET macros for FBI
|
---|
1062 | #define SET_FBI(d,s) SET (*(&(d)+0x100),s)
|
---|
1063 | #define SET_FBIF(d,s) SETF(*(&(d)+0x100),s)
|
---|
1064 |
|
---|
1065 | // SET macros for TMU0
|
---|
1066 | #define SET_0(d,s) SET (*(&(d)+0x200),s)
|
---|
1067 | #define SET_0F(d,s) SETF(*(&(d)+0x200),s)
|
---|
1068 |
|
---|
1069 | // SET macros for FBI+TMU0
|
---|
1070 | #define SET_FBI_0(d,s) SET (*(&(d)+0x300),s)
|
---|
1071 | #define SET_FBI_0F(d,s) SETF(*(&(d)+0x300),s)
|
---|
1072 |
|
---|
1073 | // SET macros for TMU1
|
---|
1074 | #define SET_1(d,s) SET (*(&(d)+0x400),s)
|
---|
1075 | #define SET_1F(d,s) SETF(*(&(d)+0x400),s)
|
---|
1076 |
|
---|
1077 | // SET macros for FBI+TMU1
|
---|
1078 | #define SET_FBI_1(d,s) SET (*(&(d)+0x500),s)
|
---|
1079 | #define SET_FBI_1F(d,s) SETF(*(&(d)+0x500),s)
|
---|
1080 |
|
---|
1081 | // SET macros for TMU2
|
---|
1082 | #define SET_2(d,s) SET (*(&(d)+0x800),s)
|
---|
1083 | #define SET_2F(d,s) SETF(*(&(d)+0x800),s)
|
---|
1084 |
|
---|
1085 | #ifndef SST96
|
---|
1086 | #define SST_WRAP(sst,n) ((Sstregs *)((n)*0x4000+(long)(sst)))
|
---|
1087 | #define SST_CHIP(sst,n) ((Sstregs *)((n)*0x400+(long)(sst)))
|
---|
1088 | #define SST_TMU(sst,n) ((Sstregs *)((0x800<<(n))+(long)(sst)))
|
---|
1089 | #define SST_TREX(sst,n) SST_TMU(sst,n)
|
---|
1090 | #define SST_LFB_ADDRESS(sst) (0x400000+(long)(sst))
|
---|
1091 | #define SST_TEX_ADDRESS(sst) (0x800000+(long)(sst))
|
---|
1092 | #else
|
---|
1093 | #define SST_WRAP(sst,n) ((Sstregs *)(((n) << 12) + ((FxU32) (sst))))
|
---|
1094 | #define SST_CHIP(sst,n) ((Sstregs *)(((n) << 16) + ((FxU32) (sst))))
|
---|
1095 | #define SST_TMU(sst,n) ((Sstregs *)(((n) << 17) + ((FxU32) (sst))))
|
---|
1096 | #define SST_TREX(sst,n) SST_TMU(sst,n)
|
---|
1097 | #define SST_LFB_ADDRESS(sst) (0x000000+(FxU32)(sst))
|
---|
1098 | #define SST_TEX_ADDRESS(sst) (0x600000+(FxU32)(sst))
|
---|
1099 | #endif
|
---|
1100 |
|
---|
1101 | extern unsigned long sstMipMapSize[4][16];
|
---|
1102 | extern unsigned long sstMipMapOffset[4][16];
|
---|
1103 | extern unsigned long sstMipMapOffset_Tsplit[4][16];
|
---|
1104 |
|
---|
1105 |
|
---|
1106 | extern void sstMemoryConfig(int fbiMem, int trex0Mem,int trex1Mem,int trex2Mem);
|
---|
1107 | extern Sstregs *sstGinit (char *, int);
|
---|
1108 | extern void sstTrexChips(int);
|
---|
1109 |
|
---|
1110 | #ifdef __cplusplus
|
---|
1111 | }
|
---|
1112 | #endif
|
---|
1113 |
|
---|
1114 | #endif /* !__SST_H__ */
|
---|