tdfx: fix crash and lack of visuals bug
[mesa.git] / src / mesa / drivers / dri / tdfx / tdfx_glide.h
1 /*
2 * This file defines macros and types necessary for accessing glide3.
3 */
4
5 /* $XFree86: xc/lib/GL/mesa/src/drv/tdfx/tdfx_glide.h,v 1.1 2002/02/22 21:45:03 dawes Exp $ */
6
7 #ifndef NEWGLIDE_H
8 #define NEWGLIDE_H
9
10 #define FX_CALL
11
12 typedef unsigned char FxU8;
13 typedef signed char FxI8;
14 typedef unsigned short FxU16;
15 typedef signed short FxI16;
16 #if defined(__alpha__) || defined (__LP64__)
17 typedef signed int FxI32;
18 typedef unsigned int FxU32;
19 #else
20 typedef signed long FxI32;
21 typedef unsigned long FxU32;
22 #endif
23 typedef unsigned long AnyPtr;
24 typedef int FxBool;
25 typedef float FxFloat;
26 typedef double FxDouble;
27
28 typedef unsigned long FxColor_t;
29 typedef struct
30 {
31 float r, g, b, a;
32 }
33 FxColor4;
34
35 typedef FxU32 GrColor_t;
36 typedef FxU8 GrAlpha_t;
37 typedef FxU32 GrMipMapId_t;
38 typedef FxU32 GrStipplePattern_t;
39 typedef FxU8 GrFog_t;
40 typedef FxU32 GrContext_t;
41 typedef int (FX_CALL * GrProc) (void);
42
43 #define FXTRUE 1
44 #define FXFALSE 0
45
46 #define FXBIT(i) (1L << (i))
47
48 #define GR_NULL_MIPMAP_HANDLE ((GrMipMapId_t) -1)
49
50 #define GR_MIPMAPLEVELMASK_EVEN FXBIT(0)
51 #define GR_MIPMAPLEVELMASK_ODD FXBIT(1)
52 #define GR_MIPMAPLEVELMASK_BOTH (GR_MIPMAPLEVELMASK_EVEN | GR_MIPMAPLEVELMASK_ODD )
53
54 typedef FxI32 GrChipID_t;
55 #define GR_TMU0 0x0
56 #define GR_TMU1 0x1
57 #define GR_TMU2 0x2
58
59 #define GR_FBI 0x0
60
61 typedef FxI32 GrCombineFunction_t;
62 #define GR_COMBINE_FUNCTION_ZERO 0x0
63 #define GR_COMBINE_FUNCTION_NONE GR_COMBINE_FUNCTION_ZERO
64 #define GR_COMBINE_FUNCTION_LOCAL 0x1
65 #define GR_COMBINE_FUNCTION_LOCAL_ALPHA 0x2
66 #define GR_COMBINE_FUNCTION_SCALE_OTHER 0x3
67 #define GR_COMBINE_FUNCTION_BLEND_OTHER GR_COMBINE_FUNCTION_SCALE_OTHER
68 #define GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL 0x4
69 #define GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL_ALPHA 0x5
70 #define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL 0x6
71 #define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL 0x7
72 #define GR_COMBINE_FUNCTION_BLEND GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL
73 #define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL_ALPHA 0x8
74 #define GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL 0x9
75 #define GR_COMBINE_FUNCTION_BLEND_LOCAL GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL
76 #define GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL_ALPHA 0x10
77
78 typedef FxI32 GrCombineFactor_t;
79 #define GR_COMBINE_FACTOR_ZERO 0x0
80 #define GR_COMBINE_FACTOR_NONE GR_COMBINE_FACTOR_ZERO
81 #define GR_COMBINE_FACTOR_LOCAL 0x1
82 #define GR_COMBINE_FACTOR_OTHER_ALPHA 0x2
83 #define GR_COMBINE_FACTOR_LOCAL_ALPHA 0x3
84 #define GR_COMBINE_FACTOR_TEXTURE_ALPHA 0x4
85 #define GR_COMBINE_FACTOR_TEXTURE_RGB 0x5
86 #define GR_COMBINE_FACTOR_DETAIL_FACTOR GR_COMBINE_FACTOR_TEXTURE_ALPHA
87 #define GR_COMBINE_FACTOR_LOD_FRACTION 0x5
88 #define GR_COMBINE_FACTOR_ONE 0x8
89 #define GR_COMBINE_FACTOR_ONE_MINUS_LOCAL 0x9
90 #define GR_COMBINE_FACTOR_ONE_MINUS_OTHER_ALPHA 0xa
91 #define GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA 0xb
92 #define GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA 0xc
93 #define GR_COMBINE_FACTOR_ONE_MINUS_DETAIL_FACTOR GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA
94 #define GR_COMBINE_FACTOR_ONE_MINUS_LOD_FRACTION 0xd
95
96 typedef FxI32 GrCombineLocal_t;
97 #define GR_COMBINE_LOCAL_ITERATED 0x0
98 #define GR_COMBINE_LOCAL_CONSTANT 0x1
99 #define GR_COMBINE_LOCAL_NONE GR_COMBINE_LOCAL_CONSTANT
100 #define GR_COMBINE_LOCAL_DEPTH 0x2
101
102 typedef FxI32 GrCombineOther_t;
103 #define GR_COMBINE_OTHER_ITERATED 0x0
104 #define GR_COMBINE_OTHER_TEXTURE 0x1
105 #define GR_COMBINE_OTHER_CONSTANT 0x2
106 #define GR_COMBINE_OTHER_NONE GR_COMBINE_OTHER_CONSTANT
107
108 typedef FxI32 GrAlphaSource_t;
109 #define GR_ALPHASOURCE_CC_ALPHA 0x0
110 #define GR_ALPHASOURCE_ITERATED_ALPHA 0x1
111 #define GR_ALPHASOURCE_TEXTURE_ALPHA 0x2
112 #define GR_ALPHASOURCE_TEXTURE_ALPHA_TIMES_ITERATED_ALPHA 0x3
113
114 typedef FxI32 GrColorCombineFnc_t;
115 #define GR_COLORCOMBINE_ZERO 0x0
116 #define GR_COLORCOMBINE_CCRGB 0x1
117 #define GR_COLORCOMBINE_ITRGB 0x2
118 #define GR_COLORCOMBINE_ITRGB_DELTA0 0x3
119 #define GR_COLORCOMBINE_DECAL_TEXTURE 0x4
120 #define GR_COLORCOMBINE_TEXTURE_TIMES_CCRGB 0x5
121 #define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB 0x6
122 #define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB_DELTA0 0x7
123 #define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB_ADD_ALPHA 0x8
124 #define GR_COLORCOMBINE_TEXTURE_TIMES_ALPHA 0x9
125 #define GR_COLORCOMBINE_TEXTURE_TIMES_ALPHA_ADD_ITRGB 0xa
126 #define GR_COLORCOMBINE_TEXTURE_ADD_ITRGB 0xb
127 #define GR_COLORCOMBINE_TEXTURE_SUB_ITRGB 0xc
128 #define GR_COLORCOMBINE_CCRGB_BLEND_ITRGB_ON_TEXALPHA 0xd
129 #define GR_COLORCOMBINE_DIFF_SPEC_A 0xe
130 #define GR_COLORCOMBINE_DIFF_SPEC_B 0xf
131 #define GR_COLORCOMBINE_ONE 0x10
132
133 typedef FxI32 GrAlphaBlendFnc_t;
134 #define GR_BLEND_ZERO 0x0
135 #define GR_BLEND_SRC_ALPHA 0x1
136 #define GR_BLEND_SRC_COLOR 0x2
137 #define GR_BLEND_DST_COLOR GR_BLEND_SRC_COLOR
138 #define GR_BLEND_DST_ALPHA 0x3
139 #define GR_BLEND_ONE 0x4
140 #define GR_BLEND_ONE_MINUS_SRC_ALPHA 0x5
141 #define GR_BLEND_ONE_MINUS_SRC_COLOR 0x6
142 #define GR_BLEND_ONE_MINUS_DST_COLOR GR_BLEND_ONE_MINUS_SRC_COLOR
143 #define GR_BLEND_ONE_MINUS_DST_ALPHA 0x7
144 #define GR_BLEND_RESERVED_8 0x8
145 #define GR_BLEND_RESERVED_9 0x9
146 #define GR_BLEND_RESERVED_A 0xa
147 #define GR_BLEND_RESERVED_B 0xb
148 #define GR_BLEND_RESERVED_C 0xc
149 #define GR_BLEND_RESERVED_D 0xd
150 #define GR_BLEND_RESERVED_E 0xe
151 #define GR_BLEND_ALPHA_SATURATE 0xf
152 #define GR_BLEND_PREFOG_COLOR GR_BLEND_ALPHA_SATURATE
153 #define GR_BLEND_SAME_COLOR_EXT 0x08
154 #define GR_BLEND_ONE_MINUS_SAME_COLOR_EXT 0x09
155
156 typedef FxI32 GrAspectRatio_t;
157 #define GR_ASPECT_LOG2_8x1 3
158 #define GR_ASPECT_LOG2_4x1 2
159 #define GR_ASPECT_LOG2_2x1 1
160 #define GR_ASPECT_LOG2_1x1 0
161 #define GR_ASPECT_LOG2_1x2 -1
162 #define GR_ASPECT_LOG2_1x4 -2
163 #define GR_ASPECT_LOG2_1x8 -3
164
165 typedef FxI32 GrBuffer_t;
166 #define GR_BUFFER_FRONTBUFFER 0x0
167 #define GR_BUFFER_BACKBUFFER 0x1
168 #define GR_BUFFER_AUXBUFFER 0x2
169 #define GR_BUFFER_DEPTHBUFFER 0x3
170 #define GR_BUFFER_ALPHABUFFER 0x4
171 #define GR_BUFFER_TRIPLEBUFFER 0x5
172
173 typedef FxI32 GrChromakeyMode_t;
174 #define GR_CHROMAKEY_DISABLE 0x0
175 #define GR_CHROMAKEY_ENABLE 0x1
176
177 typedef FxI32 GrChromaRangeMode_t;
178 #define GR_CHROMARANGE_RGB_ALL_EXT 0x0
179
180 #define GR_CHROMARANGE_DISABLE_EXT 0x00
181 #define GR_CHROMARANGE_ENABLE_EXT 0x01
182
183 typedef FxI32 GrTexChromakeyMode_t;
184 #define GR_TEXCHROMA_DISABLE_EXT 0x0
185 #define GR_TEXCHROMA_ENABLE_EXT 0x1
186
187 #define GR_TEXCHROMARANGE_RGB_ALL_EXT 0x0
188
189 typedef FxI32 GrCmpFnc_t;
190 #define GR_CMP_NEVER 0x0
191 #define GR_CMP_LESS 0x1
192 #define GR_CMP_EQUAL 0x2
193 #define GR_CMP_LEQUAL 0x3
194 #define GR_CMP_GREATER 0x4
195 #define GR_CMP_NOTEQUAL 0x5
196 #define GR_CMP_GEQUAL 0x6
197 #define GR_CMP_ALWAYS 0x7
198
199 typedef FxI32 GrColorFormat_t;
200 #define GR_COLORFORMAT_ARGB 0x0
201 #define GR_COLORFORMAT_ABGR 0x1
202
203 #define GR_COLORFORMAT_RGBA 0x2
204 #define GR_COLORFORMAT_BGRA 0x3
205
206 typedef FxI32 GrCullMode_t;
207 #define GR_CULL_DISABLE 0x0
208 #define GR_CULL_NEGATIVE 0x1
209 #define GR_CULL_POSITIVE 0x2
210
211 typedef FxI32 GrDepthBufferMode_t;
212 #define GR_DEPTHBUFFER_DISABLE 0x0
213 #define GR_DEPTHBUFFER_ZBUFFER 0x1
214 #define GR_DEPTHBUFFER_WBUFFER 0x2
215 #define GR_DEPTHBUFFER_ZBUFFER_COMPARE_TO_BIAS 0x3
216 #define GR_DEPTHBUFFER_WBUFFER_COMPARE_TO_BIAS 0x4
217
218 typedef FxI32 GrDitherMode_t;
219 #define GR_DITHER_DISABLE 0x0
220 #define GR_DITHER_2x2 0x1
221 #define GR_DITHER_4x4 0x2
222
223 typedef FxI32 GrStippleMode_t;
224 #define GR_STIPPLE_DISABLE 0x0
225 #define GR_STIPPLE_PATTERN 0x1
226 #define GR_STIPPLE_ROTATE 0x2
227
228 typedef FxI32 GrFogMode_t;
229 #define GR_FOG_DISABLE 0x0
230 #define GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT 0x1
231 #define GR_FOG_WITH_TABLE_ON_Q 0x2
232 #define GR_FOG_WITH_TABLE_ON_W GR_FOG_WITH_TABLE_ON_Q
233 #define GR_FOG_WITH_ITERATED_Z 0x3
234 #define GR_FOG_WITH_ITERATED_ALPHA_EXT 0x4
235 #define GR_FOG_MULT2 0x100
236 #define GR_FOG_ADD2 0x200
237
238 typedef FxU32 GrLock_t;
239 #define GR_LFB_READ_ONLY 0x00
240 #define GR_LFB_WRITE_ONLY 0x01
241 #define GR_LFB_IDLE 0x00
242 #define GR_LFB_NOIDLE 0x10
243
244 typedef FxI32 GrLfbBypassMode_t;
245 #define GR_LFBBYPASS_DISABLE 0x0
246 #define GR_LFBBYPASS_ENABLE 0x1
247
248 typedef FxI32 GrLfbWriteMode_t;
249 #define GR_LFBWRITEMODE_565 0x0
250 #define GR_LFBWRITEMODE_555 0x1
251 #define GR_LFBWRITEMODE_1555 0x2
252 #define GR_LFBWRITEMODE_RESERVED1 0x3
253 #define GR_LFBWRITEMODE_888 0x4
254 #define GR_LFBWRITEMODE_8888 0x5
255 #define GR_LFBWRITEMODE_RESERVED2 0x6
256 #define GR_LFBWRITEMODE_RESERVED3 0x7
257 #define GR_LFBWRITEMODE_RESERVED4 0x8
258 #define GR_LFBWRITEMODE_RESERVED5 0x9
259 #define GR_LFBWRITEMODE_RESERVED6 0xa
260 #define GR_LFBWRITEMODE_RESERVED7 0xb
261 #define GR_LFBWRITEMODE_565_DEPTH 0xc
262 #define GR_LFBWRITEMODE_555_DEPTH 0xd
263 #define GR_LFBWRITEMODE_1555_DEPTH 0xe
264 #define GR_LFBWRITEMODE_ZA16 0xf
265 #define GR_LFBWRITEMODE_ANY 0xFF
266
267 typedef FxI32 GrOriginLocation_t;
268 #define GR_ORIGIN_UPPER_LEFT 0x0
269 #define GR_ORIGIN_LOWER_LEFT 0x1
270 #define GR_ORIGIN_ANY 0xFF
271
272 typedef struct
273 {
274 int size;
275 void *lfbPtr;
276 FxU32 strideInBytes;
277 GrLfbWriteMode_t writeMode;
278 GrOriginLocation_t origin;
279 }
280 GrLfbInfo_t;
281
282 typedef FxI32 GrLOD_t;
283 #define GR_LOD_LOG2_2048 0xb
284 #define GR_LOD_LOG2_1024 0xa
285 #define GR_LOD_LOG2_512 0x9
286 #define GR_LOD_LOG2_256 0x8
287 #define GR_LOD_LOG2_128 0x7
288 #define GR_LOD_LOG2_64 0x6
289 #define GR_LOD_LOG2_32 0x5
290 #define GR_LOD_LOG2_16 0x4
291 #define GR_LOD_LOG2_8 0x3
292 #define GR_LOD_LOG2_4 0x2
293 #define GR_LOD_LOG2_2 0x1
294 #define GR_LOD_LOG2_1 0x0
295
296 typedef FxI32 GrMipMapMode_t;
297 #define GR_MIPMAP_DISABLE 0x0
298 #define GR_MIPMAP_NEAREST 0x1
299 #define GR_MIPMAP_NEAREST_DITHER 0x2
300
301 typedef FxI32 GrSmoothingMode_t;
302 #define GR_SMOOTHING_DISABLE 0x0
303 #define GR_SMOOTHING_ENABLE 0x1
304
305 typedef FxI32 GrTextureClampMode_t;
306 #define GR_TEXTURECLAMP_WRAP 0x0
307 #define GR_TEXTURECLAMP_CLAMP 0x1
308 #define GR_TEXTURECLAMP_MIRROR_EXT 0x2
309
310 typedef FxI32 GrTextureCombineFnc_t;
311 #define GR_TEXTURECOMBINE_ZERO 0x0
312 #define GR_TEXTURECOMBINE_DECAL 0x1
313 #define GR_TEXTURECOMBINE_OTHER 0x2
314 #define GR_TEXTURECOMBINE_ADD 0x3
315 #define GR_TEXTURECOMBINE_MULTIPLY 0x4
316 #define GR_TEXTURECOMBINE_SUBTRACT 0x5
317 #define GR_TEXTURECOMBINE_DETAIL 0x6
318 #define GR_TEXTURECOMBINE_DETAIL_OTHER 0x7
319 #define GR_TEXTURECOMBINE_TRILINEAR_ODD 0x8
320 #define GR_TEXTURECOMBINE_TRILINEAR_EVEN 0x9
321 #define GR_TEXTURECOMBINE_ONE 0xa
322
323 typedef FxI32 GrTextureFilterMode_t;
324 #define GR_TEXTUREFILTER_POINT_SAMPLED 0x0
325 #define GR_TEXTUREFILTER_BILINEAR 0x1
326
327 typedef FxI32 GrTextureFormat_t;
328 #define GR_TEXFMT_8BIT 0x0
329 #define GR_TEXFMT_RGB_332 GR_TEXFMT_8BIT
330 #define GR_TEXFMT_YIQ_422 0x1
331 #define GR_TEXFMT_ALPHA_8 0x2
332 #define GR_TEXFMT_INTENSITY_8 0x3
333 #define GR_TEXFMT_ALPHA_INTENSITY_44 0x4
334 #define GR_TEXFMT_P_8 0x5
335 #define GR_TEXFMT_RSVD0 0x6
336 #define GR_TEXFMT_RSVD1 0x7
337 #define GR_TEXFMT_16BIT 0x8
338 #define GR_TEXFMT_ARGB_8332 GR_TEXFMT_16BIT
339 #define GR_TEXFMT_AYIQ_8422 0x9
340 #define GR_TEXFMT_RGB_565 0xa
341 #define GR_TEXFMT_ARGB_1555 0xb
342 #define GR_TEXFMT_ARGB_4444 0xc
343 #define GR_TEXFMT_ALPHA_INTENSITY_88 0xd
344 #define GR_TEXFMT_AP_88 0xe
345 #define GR_TEXFMT_RSVD2 0xf
346 #define GR_TEXFMT_ARGB_CMP_FXT1 0x11
347 #define GR_TEXFMT_ARGB_8888 0x12
348 #define GR_TEXFMT_YUYV_422 0x13
349 #define GR_TEXFMT_UYVY_422 0x14
350 #define GR_TEXFMT_AYUV_444 0x15
351 #define GR_TEXFMT_ARGB_CMP_DXT1 0x16
352 #define GR_TEXFMT_ARGB_CMP_DXT2 0x17
353 #define GR_TEXFMT_ARGB_CMP_DXT3 0x18
354 #define GR_TEXFMT_ARGB_CMP_DXT4 0x19
355 #define GR_TEXFMT_ARGB_CMP_DXT5 0x1A
356
357 typedef FxU32 GrTexTable_t;
358 #define GR_TEXTABLE_NCC0 0x0
359 #define GR_TEXTABLE_NCC1 0x1
360 #define GR_TEXTABLE_PALETTE 0x2
361 #define GR_TEXTABLE_PALETTE_6666_EXT 0x3
362
363 typedef FxU32 GrNCCTable_t;
364 #define GR_NCCTABLE_NCC0 0x0
365 #define GR_NCCTABLE_NCC1 0x1
366
367 typedef FxU32 GrTexBaseRange_t;
368 #define GR_TEXBASE_256 0x3
369 #define GR_TEXBASE_128 0x2
370 #define GR_TEXBASE_64 0x1
371 #define GR_TEXBASE_32_TO_1 0x0
372 #define GR_TEXBASE_2048 0x7
373 #define GR_TEXBASE_1024 0x6
374 #define GR_TEXBASE_512 0x5
375 #define GR_TEXBASE_256_TO_1 0x4
376
377 typedef FxU32 GrEnableMode_t;
378 #define GR_MODE_DISABLE 0x0
379 #define GR_MODE_ENABLE 0x1
380
381 #define GR_AA_ORDERED 0x01
382 #define GR_ALLOW_MIPMAP_DITHER 0x02
383 #define GR_PASSTHRU 0x03
384 #define GR_SHAMELESS_PLUG 0x04
385 #define GR_VIDEO_SMOOTHING 0x05
386
387 typedef FxU32 GrCoordinateSpaceMode_t;
388 #define GR_WINDOW_COORDS 0x00
389 #define GR_CLIP_COORDS 0x01
390
391 /* Parameters for strips */
392 #define GR_PARAM_XY 0x01
393 #define GR_PARAM_Z 0x02
394 #define GR_PARAM_W 0x03
395 #define GR_PARAM_Q 0x04
396 #define GR_PARAM_FOG_EXT 0x05
397
398 #define GR_PARAM_A 0x10
399
400 #define GR_PARAM_RGB 0x20
401
402 #define GR_PARAM_PARGB 0x30
403
404 #define GR_PARAM_ST0 0x40
405 #define GR_PARAM_ST1 GR_PARAM_ST0+1
406 #define GR_PARAM_ST2 GR_PARAM_ST0+2
407
408 #define GR_PARAM_Q0 0x50
409 #define GR_PARAM_Q1 GR_PARAM_Q0+1
410 #define GR_PARAM_Q2 GR_PARAM_Q0+2
411
412 #define GR_PARAM_DISABLE 0x00
413 #define GR_PARAM_ENABLE 0x01
414
415 /* grDrawVertexArray/grDrawVertexArrayContiguous */
416 #define GR_POINTS 0
417 #define GR_LINE_STRIP 1
418 #define GR_LINES 2
419 #define GR_POLYGON 3
420 #define GR_TRIANGLE_STRIP 4
421 #define GR_TRIANGLE_FAN 5
422 #define GR_TRIANGLES 6
423 #define GR_TRIANGLE_STRIP_CONTINUE 7
424 #define GR_TRIANGLE_FAN_CONTINUE 8
425
426 /* grGet/grReset */
427 #define GR_BITS_DEPTH 0x01
428 #define GR_BITS_RGBA 0x02
429 #define GR_FIFO_FULLNESS 0x03
430 #define GR_FOG_TABLE_ENTRIES 0x04
431 #define GR_GAMMA_TABLE_ENTRIES 0x05
432 #define GR_GLIDE_STATE_SIZE 0x06
433 #define GR_GLIDE_VERTEXLAYOUT_SIZE 0x07
434 #define GR_IS_BUSY 0x08
435 #define GR_LFB_PIXEL_PIPE 0x09
436 #define GR_MAX_TEXTURE_SIZE 0x0a
437 #define GR_MAX_TEXTURE_ASPECT_RATIO 0x0b
438 #define GR_MEMORY_FB 0x0c
439 #define GR_MEMORY_TMU 0x0d
440 #define GR_MEMORY_UMA 0x0e
441 #define GR_NUM_BOARDS 0x0f
442 #define GR_NON_POWER_OF_TWO_TEXTURES 0x10
443 #define GR_NUM_FB 0x11
444 #define GR_NUM_SWAP_HISTORY_BUFFER 0x12
445 #define GR_NUM_TMU 0x13
446 #define GR_PENDING_BUFFERSWAPS 0x14
447 #define GR_REVISION_FB 0x15
448 #define GR_REVISION_TMU 0x16
449 #define GR_STATS_LINES 0x17
450 #define GR_STATS_PIXELS_AFUNC_FAIL 0x18
451 #define GR_STATS_PIXELS_CHROMA_FAIL 0x19
452 #define GR_STATS_PIXELS_DEPTHFUNC_FAIL 0x1a
453 #define GR_STATS_PIXELS_IN 0x1b
454 #define GR_STATS_PIXELS_OUT 0x1c
455 #define GR_STATS_PIXELS 0x1d
456 #define GR_STATS_POINTS 0x1e
457 #define GR_STATS_TRIANGLES_IN 0x1f
458 #define GR_STATS_TRIANGLES_OUT 0x20
459 #define GR_STATS_TRIANGLES 0x21
460 #define GR_SWAP_HISTORY 0x22
461 #define GR_SUPPORTS_PASSTHRU 0x23
462 #define GR_TEXTURE_ALIGN 0x24
463 #define GR_VIDEO_POSITION 0x25
464 #define GR_VIEWPORT 0x26
465 #define GR_WDEPTH_MIN_MAX 0x27
466 #define GR_ZDEPTH_MIN_MAX 0x28
467 #define GR_VERTEX_PARAMETER 0x29
468 #define GR_BITS_GAMMA 0x2a
469 #define GR_GET_RESERVED_1 0x1000
470
471 /* grGetString types */
472 #define GR_EXTENSION 0xa0
473 #define GR_HARDWARE 0xa1
474 #define GR_RENDERER 0xa2
475 #define GR_VENDOR 0xa3
476 #define GR_VERSION 0xa4
477
478 typedef FxI32 GrScreenRefresh_t;
479 #define GR_REFRESH_NONE 0xff
480
481 typedef FxI32 GrScreenResolution_t;
482 #define GR_RESOLUTION_NONE 0xff
483
484 typedef struct
485 {
486 GrLOD_t smallLodLog2;
487 GrLOD_t largeLodLog2;
488 GrAspectRatio_t aspectRatioLog2;
489 GrTextureFormat_t format;
490 void *data;
491 }
492 GrTexInfo;
493
494 typedef struct GrSstPerfStats_s
495 {
496 FxU32 pixelsIn;
497 FxU32 chromaFail;
498 FxU32 zFuncFail;
499 FxU32 aFuncFail;
500 FxU32 pixelsOut;
501 }
502 GrSstPerfStats_t;
503
504 typedef struct
505 {
506 GrScreenResolution_t resolution;
507 GrScreenRefresh_t refresh;
508 int numColorBuffers;
509 int numAuxBuffers;
510 }
511 GrResolution;
512
513 typedef GrResolution GlideResolution;
514 #define GR_QUERY_ANY ((FxU32)(~0))
515
516 typedef FxU32 GrLfbSrcFmt_t;
517 #define GR_LFB_SRC_FMT_565 0x00
518 #define GR_LFB_SRC_FMT_555 0x01
519 #define GR_LFB_SRC_FMT_1555 0x02
520 #define GR_LFB_SRC_FMT_888 0x04
521 #define GR_LFB_SRC_FMT_8888 0x05
522 #define GR_LFB_SRC_FMT_565_DEPTH 0x0c
523 #define GR_LFB_SRC_FMT_555_DEPTH 0x0d
524 #define GR_LFB_SRC_FMT_1555_DEPTH 0x0e
525 #define GR_LFB_SRC_FMT_ZA16 0x0f
526 #define GR_LFB_SRC_FMT_RLE16 0x80
527
528 typedef FxU32 GrPixelFormat_t;
529 #define GR_PIXFMT_I_8 0x0001
530 #define GR_PIXFMT_AI_88 0x0002
531 #define GR_PIXFMT_RGB_565 0x0003
532 #define GR_PIXFMT_ARGB_1555 0x0004
533 #define GR_PIXFMT_ARGB_8888 0x0005
534 #define GR_PIXFMT_AA_2_RGB_565 0x0006
535 #define GR_PIXFMT_AA_2_ARGB_1555 0x0007
536 #define GR_PIXFMT_AA_2_ARGB_8888 0x0008
537 #define GR_PIXFMT_AA_4_RGB_565 0x0009
538 #define GR_PIXFMT_AA_4_ARGB_1555 0x000a
539 #define GR_PIXFMT_AA_4_ARGB_8888 0x000b
540
541 #define GR_LFBWRITEMODE_Z32 0x0008
542
543 typedef FxU32 GrAAMode_t;
544 #define GR_AA_NONE 0x0000
545 #define GR_AA_4SAMPLES 0x0001
546
547 typedef FxU8 GrStencil_t;
548
549 typedef FxU32 GrStencilOp_t;
550 #define GR_STENCILOP_KEEP 0x00
551 #define GR_STENCILOP_ZERO 0x01
552 #define GR_STENCILOP_REPLACE 0x02
553 #define GR_STENCILOP_INCR_CLAMP 0x03
554 #define GR_STENCILOP_DECR_CLAMP 0x04
555 #define GR_STENCILOP_INVERT 0x05
556 #define GR_STENCILOP_INCR_WRAP 0x06
557 #define GR_STENCILOP_DECR_WRAP 0x07
558
559 #define GR_TEXTURE_UMA_EXT 0x06
560 #define GR_STENCIL_MODE_EXT 0x07
561 #define GR_OPENGL_MODE_EXT 0x08
562
563 typedef FxU32 GrCCUColor_t;
564 typedef FxU32 GrACUColor_t;
565 typedef FxU32 GrTCCUColor_t;
566 typedef FxU32 GrTACUColor_t;
567 #define GR_CMBX_ZERO 0x00
568 #define GR_CMBX_TEXTURE_ALPHA 0x01
569 #define GR_CMBX_ALOCAL 0x02
570 #define GR_CMBX_AOTHER 0x03
571 #define GR_CMBX_B 0x04
572 #define GR_CMBX_CONSTANT_ALPHA 0x05
573 #define GR_CMBX_CONSTANT_COLOR 0x06
574 #define GR_CMBX_DETAIL_FACTOR 0x07
575 #define GR_CMBX_ITALPHA 0x08
576 #define GR_CMBX_ITRGB 0x09
577 #define GR_CMBX_LOCAL_TEXTURE_ALPHA 0x0a
578 #define GR_CMBX_LOCAL_TEXTURE_RGB 0x0b
579 #define GR_CMBX_LOD_FRAC 0x0c
580 #define GR_CMBX_OTHER_TEXTURE_ALPHA 0x0d
581 #define GR_CMBX_OTHER_TEXTURE_RGB 0x0e
582 #define GR_CMBX_TEXTURE_RGB 0x0f
583 #define GR_CMBX_TMU_CALPHA 0x10
584 #define GR_CMBX_TMU_CCOLOR 0x11
585
586 typedef FxU32 GrCombineMode_t;
587 #define GR_FUNC_MODE_ZERO 0x00
588 #define GR_FUNC_MODE_X 0x01
589 #define GR_FUNC_MODE_ONE_MINUS_X 0x02
590 #define GR_FUNC_MODE_NEGATIVE_X 0x03
591 #define GR_FUNC_MODE_X_MINUS_HALF 0x04
592
593 typedef FxU32 GrAlphaBlendOp_t;
594 #define GR_BLEND_OP_ADD 0x00
595 #define GR_BLEND_OP_SUB 0x01
596 #define GR_BLEND_OP_REVSUB 0x02
597
598 typedef struct
599 {
600 FxU32 data[256];
601 }
602 GuTexPalette;
603
604 typedef void (*GrErrorCallbackFnc_t) (const char *string, FxBool fatal);
605
606 #endif