DMesa: removed MGA2064W driver
[mesa.git] / src / mesa / drivers / glide / fxg.c
1 /*
2 * Mesa 3-D graphics library
3 * Version: 5.0.1
4 *
5 * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining a
8 * copy of this software and associated documentation files (the "Software"),
9 * to deal in the Software without restriction, including without limitation
10 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11 * and/or sell copies of the Software, and to permit persons to whom the
12 * Software is furnished to do so, subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included
15 * in all copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
21 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 */
24
25 /*
26 * Mesa/FX device driver. Interface to Glide3.
27 *
28 * Copyright (c) 2003 - Daniel Borca
29 * Email : dborca@users.sourceforge.net
30 * Web : http://www.geocities.com/dborca
31 */
32
33
34 #ifdef FX
35
36 #include <stdio.h>
37 #include <stdlib.h>
38 #include <stdarg.h>
39 #include <assert.h>
40
41 #define DEBUG_TRAP_internal
42 #include "fxg.h"
43
44
45
46 /****************************************************************************\
47 * logging *
48 \****************************************************************************/
49 #if DEBUG_TRAP
50 #define TRAP_LOG trp_printf
51 #ifdef __GNUC__
52 __attribute__ ((format(printf, 1, 2)))
53 #endif /* __GNUC__ */
54 int trp_printf (const char *format, ...)
55 {
56 va_list arg;
57 int n;
58 FILE *trap_file;
59 va_start(arg, format);
60 trap_file = fopen("trap.log", "a");
61 if (trap_file == NULL) {
62 trap_file = stderr;
63 }
64 n = vfprintf(trap_file, format, arg);
65 fclose(trap_file);
66 va_end(arg);
67 return n;
68 }
69 #else /* DEBUG_TRAP */
70 #ifdef __GNUC__
71 #define TRAP_LOG(format, ...) do {} while (0)
72 #else /* __GNUC__ */
73 #define TRAP_LOG 0 && (unsigned long)
74 #endif /* __GNUC__ */
75 #endif /* DEBUG_TRAP */
76
77
78
79 #if DEBUG_TRAP
80 /****************************************************************************\
81 * helpers *
82 \****************************************************************************/
83
84 #define GOT "\t"
85
86 const char *TRP_BOOL (FxBool b)
87 {
88 return b ? "FXTRUE" : "FXFALSE";
89 }
90
91 #define TRAP_CASE_STRING(name) case name: return #name
92 #define TRAP_NODEFAULT default: assert(0)
93
94 const char *TRP_PARAM (FxU32 mode)
95 {
96 switch (mode) {
97 TRAP_CASE_STRING(GR_PARAM_DISABLE);
98 TRAP_CASE_STRING(GR_PARAM_ENABLE);
99 TRAP_NODEFAULT;
100 }
101 }
102
103 const char *TRP_VTX (FxU32 param)
104 {
105 switch (param) {
106 TRAP_CASE_STRING(GR_PARAM_XY);
107 TRAP_CASE_STRING(GR_PARAM_Z);
108 TRAP_CASE_STRING(GR_PARAM_W);
109 TRAP_CASE_STRING(GR_PARAM_Q);
110 TRAP_CASE_STRING(GR_PARAM_FOG_EXT);
111 TRAP_CASE_STRING(GR_PARAM_A);
112 TRAP_CASE_STRING(GR_PARAM_RGB);
113 TRAP_CASE_STRING(GR_PARAM_PARGB);
114 TRAP_CASE_STRING(GR_PARAM_ST0);
115 TRAP_CASE_STRING(GR_PARAM_ST1);
116 TRAP_CASE_STRING(GR_PARAM_ST2);
117 TRAP_CASE_STRING(GR_PARAM_Q0);
118 TRAP_CASE_STRING(GR_PARAM_Q1);
119 TRAP_CASE_STRING(GR_PARAM_Q2);
120 TRAP_NODEFAULT;
121 }
122 }
123
124 const char *TRP_ARRAY (FxU32 mode)
125 {
126 switch (mode) {
127 TRAP_CASE_STRING(GR_POINTS);
128 TRAP_CASE_STRING(GR_LINE_STRIP);
129 TRAP_CASE_STRING(GR_LINES);
130 TRAP_CASE_STRING(GR_POLYGON);
131 TRAP_CASE_STRING(GR_TRIANGLE_STRIP);
132 TRAP_CASE_STRING(GR_TRIANGLE_FAN);
133 TRAP_CASE_STRING(GR_TRIANGLES);
134 TRAP_CASE_STRING(GR_TRIANGLE_STRIP_CONTINUE);
135 TRAP_CASE_STRING(GR_TRIANGLE_FAN_CONTINUE);
136 TRAP_NODEFAULT;
137 }
138 }
139
140 const char *TRP_BUFFER (GrBuffer_t buffer)
141 {
142 switch (buffer) {
143 TRAP_CASE_STRING(GR_BUFFER_FRONTBUFFER);
144 TRAP_CASE_STRING(GR_BUFFER_BACKBUFFER);
145 TRAP_CASE_STRING(GR_BUFFER_AUXBUFFER);
146 TRAP_CASE_STRING(GR_BUFFER_DEPTHBUFFER);
147 TRAP_CASE_STRING(GR_BUFFER_ALPHABUFFER);
148 TRAP_CASE_STRING(GR_BUFFER_TRIPLEBUFFER);
149 TRAP_CASE_STRING(GR_BUFFER_TEXTUREBUFFER_EXT);
150 TRAP_CASE_STRING(GR_BUFFER_TEXTUREAUXBUFFER_EXT);
151 TRAP_NODEFAULT;
152 }
153 }
154
155 const char *TRP_ORIGIN (GrOriginLocation_t origin_location)
156 {
157 switch (origin_location) {
158 TRAP_CASE_STRING(GR_ORIGIN_UPPER_LEFT);
159 TRAP_CASE_STRING(GR_ORIGIN_LOWER_LEFT);
160 TRAP_CASE_STRING(GR_ORIGIN_ANY);
161 TRAP_NODEFAULT;
162 }
163 }
164
165 const char *TRP_REFRESH (GrScreenRefresh_t refresh_rate)
166 {
167 switch (refresh_rate) {
168 TRAP_CASE_STRING(GR_REFRESH_60Hz);
169 TRAP_CASE_STRING(GR_REFRESH_70Hz);
170 TRAP_CASE_STRING(GR_REFRESH_72Hz);
171 TRAP_CASE_STRING(GR_REFRESH_75Hz);
172 TRAP_CASE_STRING(GR_REFRESH_80Hz);
173 TRAP_CASE_STRING(GR_REFRESH_90Hz);
174 TRAP_CASE_STRING(GR_REFRESH_100Hz);
175 TRAP_CASE_STRING(GR_REFRESH_85Hz);
176 TRAP_CASE_STRING(GR_REFRESH_120Hz);
177 TRAP_CASE_STRING(GR_REFRESH_NONE);
178 TRAP_NODEFAULT;
179 }
180 }
181
182 const char *TRP_COLFMT (GrColorFormat_t color_format)
183 {
184 switch (color_format) {
185 TRAP_CASE_STRING(GR_COLORFORMAT_ARGB);
186 TRAP_CASE_STRING(GR_COLORFORMAT_ABGR);
187 TRAP_CASE_STRING(GR_COLORFORMAT_RGBA);
188 TRAP_CASE_STRING(GR_COLORFORMAT_BGRA);
189 TRAP_NODEFAULT;
190 }
191 }
192
193 const char *TRP_RESOLUTION (GrScreenResolution_t screen_resolution)
194 {
195 switch (screen_resolution) {
196 TRAP_CASE_STRING(GR_RESOLUTION_320x200);
197 TRAP_CASE_STRING(GR_RESOLUTION_320x240);
198 TRAP_CASE_STRING(GR_RESOLUTION_400x256);
199 TRAP_CASE_STRING(GR_RESOLUTION_512x384);
200 TRAP_CASE_STRING(GR_RESOLUTION_640x200);
201 TRAP_CASE_STRING(GR_RESOLUTION_640x350);
202 TRAP_CASE_STRING(GR_RESOLUTION_640x400);
203 TRAP_CASE_STRING(GR_RESOLUTION_640x480);
204 TRAP_CASE_STRING(GR_RESOLUTION_800x600);
205 TRAP_CASE_STRING(GR_RESOLUTION_960x720);
206 TRAP_CASE_STRING(GR_RESOLUTION_856x480);
207 TRAP_CASE_STRING(GR_RESOLUTION_512x256);
208 TRAP_CASE_STRING(GR_RESOLUTION_1024x768);
209 TRAP_CASE_STRING(GR_RESOLUTION_1280x1024);
210 TRAP_CASE_STRING(GR_RESOLUTION_1600x1200);
211 TRAP_CASE_STRING(GR_RESOLUTION_400x300);
212 TRAP_CASE_STRING(GR_RESOLUTION_1152x864);
213 TRAP_CASE_STRING(GR_RESOLUTION_1280x960);
214 TRAP_CASE_STRING(GR_RESOLUTION_1600x1024);
215 TRAP_CASE_STRING(GR_RESOLUTION_1792x1344);
216 TRAP_CASE_STRING(GR_RESOLUTION_1856x1392);
217 TRAP_CASE_STRING(GR_RESOLUTION_1920x1440);
218 TRAP_CASE_STRING(GR_RESOLUTION_2048x1536);
219 TRAP_CASE_STRING(GR_RESOLUTION_2048x2048);
220 TRAP_CASE_STRING(GR_RESOLUTION_NONE);
221 TRAP_NODEFAULT;
222 }
223 }
224
225 const char *TRP_BLEND (GrAlphaBlendFnc_t func)
226 {
227 switch (func) {
228 TRAP_CASE_STRING(GR_BLEND_ZERO);
229 TRAP_CASE_STRING(GR_BLEND_SRC_ALPHA);
230 TRAP_CASE_STRING(GR_BLEND_SRC_COLOR);
231 /*TRAP_CASE_STRING(GR_BLEND_DST_COLOR); ==GR_BLEND_SRC_COLOR*/
232 TRAP_CASE_STRING(GR_BLEND_DST_ALPHA);
233 TRAP_CASE_STRING(GR_BLEND_ONE);
234 TRAP_CASE_STRING(GR_BLEND_ONE_MINUS_SRC_ALPHA);
235 TRAP_CASE_STRING(GR_BLEND_ONE_MINUS_SRC_COLOR);
236 /*TRAP_CASE_STRING(GR_BLEND_ONE_MINUS_DST_COLOR); ==GR_BLEND_ONE_MINUS_SRC_COLOR*/
237 TRAP_CASE_STRING(GR_BLEND_ONE_MINUS_DST_ALPHA);
238 TRAP_CASE_STRING(GR_BLEND_SAME_COLOR_EXT);
239 /*TRAP_CASE_STRING(GR_BLEND_RESERVED_8); ==GR_BLEND_SAME_COLOR_EXT*/
240 TRAP_CASE_STRING(GR_BLEND_ONE_MINUS_SAME_COLOR_EXT);
241 /*TRAP_CASE_STRING(GR_BLEND_RESERVED_9); ==GR_BLEND_ONE_MINUS_SAME_COLOR_EXT*/
242 TRAP_CASE_STRING(GR_BLEND_RESERVED_A);
243 TRAP_CASE_STRING(GR_BLEND_RESERVED_B);
244 TRAP_CASE_STRING(GR_BLEND_RESERVED_C);
245 TRAP_CASE_STRING(GR_BLEND_RESERVED_D);
246 TRAP_CASE_STRING(GR_BLEND_RESERVED_E);
247 TRAP_CASE_STRING(GR_BLEND_ALPHA_SATURATE);
248 /*TRAP_CASE_STRING(GR_BLEND_PREFOG_COLOR); ==GR_BLEND_ALPHA_SATURATE*/
249 TRAP_NODEFAULT;
250 }
251 }
252
253 const char *TRP_CMBFUNC (GrCombineFunction_t cfunc)
254 {
255 switch (cfunc) {
256 TRAP_CASE_STRING(GR_COMBINE_FUNCTION_ZERO);
257 /*TRAP_CASE_STRING(GR_COMBINE_FUNCTION_NONE); ==GR_COMBINE_FUNCTION_ZERO*/
258 TRAP_CASE_STRING(GR_COMBINE_FUNCTION_LOCAL);
259 TRAP_CASE_STRING(GR_COMBINE_FUNCTION_LOCAL_ALPHA);
260 TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER);
261 /*TRAP_CASE_STRING(GR_COMBINE_FUNCTION_BLEND_OTHER); ==GR_COMBINE_FUNCTION_SCALE_OTHER*/
262 TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL);
263 TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL_ALPHA);
264 TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL);
265 TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL);
266 /*TRAP_CASE_STRING(GR_COMBINE_FUNCTION_BLEND); ==GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL*/
267 TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL_ALPHA);
268 TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL);
269 /*TRAP_CASE_STRING(GR_COMBINE_FUNCTION_BLEND_LOCAL); ==GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL*/
270 TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL_ALPHA);
271 TRAP_NODEFAULT;
272 }
273 }
274
275 const char *TRP_CMBFACT (GrCombineFactor_t cfactor)
276 {
277 switch (cfactor) {
278 TRAP_CASE_STRING(GR_COMBINE_FACTOR_ZERO);
279 /*TRAP_CASE_STRING(GR_COMBINE_FACTOR_NONE); ==GR_COMBINE_FACTOR_ZERO*/
280 TRAP_CASE_STRING(GR_COMBINE_FACTOR_LOCAL);
281 TRAP_CASE_STRING(GR_COMBINE_FACTOR_OTHER_ALPHA);
282 TRAP_CASE_STRING(GR_COMBINE_FACTOR_LOCAL_ALPHA);
283 TRAP_CASE_STRING(GR_COMBINE_FACTOR_TEXTURE_ALPHA);
284 TRAP_CASE_STRING(GR_COMBINE_FACTOR_TEXTURE_RGB);
285 /*TRAP_CASE_STRING(GR_COMBINE_FACTOR_DETAIL_FACTOR); ==GR_COMBINE_FACTOR_TEXTURE_ALPHA*/
286 /*TRAP_CASE_STRING(GR_COMBINE_FACTOR_LOD_FRACTION); ==GR_COMBINE_FACTOR_TEXTURE_RGB ???*/
287 TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE);
288 TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_LOCAL);
289 TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_OTHER_ALPHA);
290 TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA);
291 TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA);
292 /*TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_DETAIL_FACTOR); ==GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA*/
293 TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_LOD_FRACTION);
294 TRAP_NODEFAULT;
295 }
296 }
297
298 const char *TRP_CMBLOCAL (GrCombineLocal_t clocal)
299 {
300 switch (clocal) {
301 TRAP_CASE_STRING(GR_COMBINE_LOCAL_ITERATED);
302 TRAP_CASE_STRING(GR_COMBINE_LOCAL_CONSTANT);
303 /*TRAP_CASE_STRING(GR_COMBINE_LOCAL_NONE); ==GR_COMBINE_LOCAL_CONSTANT*/
304 TRAP_CASE_STRING(GR_COMBINE_LOCAL_DEPTH);
305 TRAP_NODEFAULT;
306 }
307 }
308
309 const char *TRP_CMBOTHER (GrCombineOther_t cother)
310 {
311 switch (cother) {
312 TRAP_CASE_STRING(GR_COMBINE_OTHER_ITERATED);
313 TRAP_CASE_STRING(GR_COMBINE_OTHER_TEXTURE);
314 TRAP_CASE_STRING(GR_COMBINE_OTHER_CONSTANT);
315 /*TRAP_CASE_STRING(GR_COMBINE_OTHER_NONE); ==GR_COMBINE_OTHER_CONSTANT*/
316 TRAP_NODEFAULT;
317 }
318 }
319
320 const char *TRP_CMPFUNC (GrCmpFnc_t function)
321 {
322 switch (function) {
323 TRAP_CASE_STRING(GR_CMP_NEVER);
324 TRAP_CASE_STRING(GR_CMP_LESS);
325 TRAP_CASE_STRING(GR_CMP_EQUAL);
326 TRAP_CASE_STRING(GR_CMP_LEQUAL);
327 TRAP_CASE_STRING(GR_CMP_GREATER);
328 TRAP_CASE_STRING(GR_CMP_NOTEQUAL);
329 TRAP_CASE_STRING(GR_CMP_GEQUAL);
330 TRAP_CASE_STRING(GR_CMP_ALWAYS);
331 TRAP_NODEFAULT;
332 }
333 }
334
335 const char *TRP_CKMODE (GrChromakeyMode_t mode)
336 {
337 switch (mode) {
338 TRAP_CASE_STRING(GR_CHROMAKEY_DISABLE);
339 TRAP_CASE_STRING(GR_CHROMAKEY_ENABLE);
340 TRAP_NODEFAULT;
341 }
342 }
343
344 const char *TRP_CULLMODE (GrCullMode_t mode)
345 {
346 switch (mode) {
347 TRAP_CASE_STRING(GR_CULL_DISABLE);
348 TRAP_CASE_STRING(GR_CULL_NEGATIVE);
349 TRAP_CASE_STRING(GR_CULL_POSITIVE);
350 TRAP_NODEFAULT;
351 }
352 }
353
354 const char *TRP_DEPTHMODE (GrDepthBufferMode_t mode)
355 {
356 switch (mode) {
357 TRAP_CASE_STRING(GR_DEPTHBUFFER_DISABLE);
358 TRAP_CASE_STRING(GR_DEPTHBUFFER_ZBUFFER);
359 TRAP_CASE_STRING(GR_DEPTHBUFFER_WBUFFER);
360 TRAP_CASE_STRING(GR_DEPTHBUFFER_ZBUFFER_COMPARE_TO_BIAS);
361 TRAP_CASE_STRING(GR_DEPTHBUFFER_WBUFFER_COMPARE_TO_BIAS);
362 TRAP_NODEFAULT;
363 }
364 }
365
366 const char *TRP_DITHERMODE (GrDitherMode_t mode)
367 {
368 switch (mode) {
369 TRAP_CASE_STRING(GR_DITHER_DISABLE);
370 TRAP_CASE_STRING(GR_DITHER_2x2);
371 TRAP_CASE_STRING(GR_DITHER_4x4);
372 TRAP_NODEFAULT;
373 }
374 }
375
376 const char *TRP_FOGMODE (GrFogMode_t mode)
377 {
378 switch (mode) {
379 TRAP_CASE_STRING(GR_FOG_DISABLE);
380 TRAP_CASE_STRING(GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT);
381 TRAP_CASE_STRING(GR_FOG_WITH_TABLE_ON_Q);
382 /*TRAP_CASE_STRING(GR_FOG_WITH_TABLE_ON_W); ==GR_FOG_WITH_TABLE_ON_Q*/
383 TRAP_CASE_STRING(GR_FOG_WITH_ITERATED_Z);
384 TRAP_CASE_STRING(GR_FOG_WITH_ITERATED_ALPHA_EXT);
385 TRAP_CASE_STRING(GR_FOG_MULT2);
386 TRAP_CASE_STRING(GR_FOG_ADD2);
387 TRAP_NODEFAULT;
388 }
389 }
390
391 const char *TRP_GETNAME (FxU32 pname)
392 {
393 switch (pname) {
394 TRAP_CASE_STRING(GR_BITS_DEPTH);
395 TRAP_CASE_STRING(GR_BITS_RGBA);
396 TRAP_CASE_STRING(GR_FIFO_FULLNESS);
397 TRAP_CASE_STRING(GR_FOG_TABLE_ENTRIES);
398 TRAP_CASE_STRING(GR_GAMMA_TABLE_ENTRIES);
399 TRAP_CASE_STRING(GR_GLIDE_STATE_SIZE);
400 TRAP_CASE_STRING(GR_GLIDE_VERTEXLAYOUT_SIZE);
401 TRAP_CASE_STRING(GR_IS_BUSY);
402 TRAP_CASE_STRING(GR_LFB_PIXEL_PIPE);
403 TRAP_CASE_STRING(GR_MAX_TEXTURE_SIZE);
404 TRAP_CASE_STRING(GR_MAX_TEXTURE_ASPECT_RATIO);
405 TRAP_CASE_STRING(GR_MEMORY_FB);
406 TRAP_CASE_STRING(GR_MEMORY_TMU);
407 TRAP_CASE_STRING(GR_MEMORY_UMA);
408 TRAP_CASE_STRING(GR_NUM_BOARDS);
409 TRAP_CASE_STRING(GR_NON_POWER_OF_TWO_TEXTURES);
410 TRAP_CASE_STRING(GR_NUM_FB);
411 TRAP_CASE_STRING(GR_NUM_SWAP_HISTORY_BUFFER);
412 TRAP_CASE_STRING(GR_NUM_TMU);
413 TRAP_CASE_STRING(GR_PENDING_BUFFERSWAPS);
414 TRAP_CASE_STRING(GR_REVISION_FB);
415 TRAP_CASE_STRING(GR_REVISION_TMU);
416 TRAP_CASE_STRING(GR_STATS_LINES);
417 TRAP_CASE_STRING(GR_STATS_PIXELS_AFUNC_FAIL);
418 TRAP_CASE_STRING(GR_STATS_PIXELS_CHROMA_FAIL);
419 TRAP_CASE_STRING(GR_STATS_PIXELS_DEPTHFUNC_FAIL);
420 TRAP_CASE_STRING(GR_STATS_PIXELS_IN);
421 TRAP_CASE_STRING(GR_STATS_PIXELS_OUT);
422 TRAP_CASE_STRING(GR_STATS_PIXELS);
423 TRAP_CASE_STRING(GR_STATS_POINTS);
424 TRAP_CASE_STRING(GR_STATS_TRIANGLES_IN);
425 TRAP_CASE_STRING(GR_STATS_TRIANGLES_OUT);
426 TRAP_CASE_STRING(GR_STATS_TRIANGLES);
427 TRAP_CASE_STRING(GR_SWAP_HISTORY);
428 TRAP_CASE_STRING(GR_SUPPORTS_PASSTHRU);
429 TRAP_CASE_STRING(GR_TEXTURE_ALIGN);
430 TRAP_CASE_STRING(GR_VIDEO_POSITION);
431 TRAP_CASE_STRING(GR_VIEWPORT);
432 TRAP_CASE_STRING(GR_WDEPTH_MIN_MAX);
433 TRAP_CASE_STRING(GR_ZDEPTH_MIN_MAX);
434 TRAP_CASE_STRING(GR_VERTEX_PARAMETER);
435 TRAP_CASE_STRING(GR_BITS_GAMMA);
436 TRAP_CASE_STRING(GR_GET_RESERVED_1);
437 TRAP_NODEFAULT;
438 }
439 }
440
441 const char *TRP_GETSTRING (FxU32 pname)
442 {
443 switch (pname) {
444 TRAP_CASE_STRING(GR_EXTENSION);
445 TRAP_CASE_STRING(GR_HARDWARE);
446 TRAP_CASE_STRING(GR_RENDERER);
447 TRAP_CASE_STRING(GR_VENDOR);
448 TRAP_CASE_STRING(GR_VERSION);
449 TRAP_NODEFAULT;
450 }
451 }
452
453 const char *TRP_ENABLE (GrEnableMode_t mode)
454 {
455 switch (mode) {
456 TRAP_CASE_STRING(GR_AA_ORDERED);
457 TRAP_CASE_STRING(GR_ALLOW_MIPMAP_DITHER);
458 TRAP_CASE_STRING(GR_PASSTHRU);
459 TRAP_CASE_STRING(GR_SHAMELESS_PLUG);
460 TRAP_CASE_STRING(GR_VIDEO_SMOOTHING);
461 TRAP_CASE_STRING(GR_TEXTURE_UMA_EXT);
462 TRAP_CASE_STRING(GR_STENCIL_MODE_EXT);
463 TRAP_CASE_STRING(GR_OPENGL_MODE_EXT);
464 TRAP_NODEFAULT;
465 }
466 }
467
468 const char *TRP_COORD (GrCoordinateSpaceMode_t mode)
469 {
470 switch (mode) {
471 TRAP_CASE_STRING(GR_WINDOW_COORDS);
472 TRAP_CASE_STRING(GR_CLIP_COORDS);
473 TRAP_NODEFAULT;
474 }
475 }
476
477 const char *TRP_STIPPLEMODE (GrStippleMode_t mode)
478 {
479 switch (mode) {
480 TRAP_CASE_STRING(GR_STIPPLE_DISABLE);
481 TRAP_CASE_STRING(GR_STIPPLE_PATTERN);
482 TRAP_CASE_STRING(GR_STIPPLE_ROTATE);
483 TRAP_NODEFAULT;
484 }
485 }
486
487 const char *TRP_LODLEVEL (GrLOD_t lod)
488 {
489 switch (lod) {
490 TRAP_CASE_STRING(GR_LOD_LOG2_2048);
491 TRAP_CASE_STRING(GR_LOD_LOG2_1024);
492 TRAP_CASE_STRING(GR_LOD_LOG2_512);
493 TRAP_CASE_STRING(GR_LOD_LOG2_256);
494 TRAP_CASE_STRING(GR_LOD_LOG2_128);
495 TRAP_CASE_STRING(GR_LOD_LOG2_64);
496 TRAP_CASE_STRING(GR_LOD_LOG2_32);
497 TRAP_CASE_STRING(GR_LOD_LOG2_16);
498 TRAP_CASE_STRING(GR_LOD_LOG2_8);
499 TRAP_CASE_STRING(GR_LOD_LOG2_4);
500 TRAP_CASE_STRING(GR_LOD_LOG2_2);
501 TRAP_CASE_STRING(GR_LOD_LOG2_1);
502 TRAP_NODEFAULT;
503 }
504 }
505
506 const char *TRP_ASPECTRATIO (GrAspectRatio_t aspect)
507 {
508 switch (aspect) {
509 TRAP_CASE_STRING(GR_ASPECT_LOG2_8x1);
510 TRAP_CASE_STRING(GR_ASPECT_LOG2_4x1);
511 TRAP_CASE_STRING(GR_ASPECT_LOG2_2x1);
512 TRAP_CASE_STRING(GR_ASPECT_LOG2_1x1);
513 TRAP_CASE_STRING(GR_ASPECT_LOG2_1x2);
514 TRAP_CASE_STRING(GR_ASPECT_LOG2_1x4);
515 TRAP_CASE_STRING(GR_ASPECT_LOG2_1x8);
516 TRAP_NODEFAULT;
517 }
518 }
519
520 const char *TRP_TEXFMT (GrTextureFormat_t fmt)
521 {
522 switch (fmt) {
523 TRAP_CASE_STRING(GR_TEXFMT_8BIT);
524 /*TRAP_CASE_STRING(GR_TEXFMT_RGB_332); ==GR_TEXFMT_8BIT*/
525 TRAP_CASE_STRING(GR_TEXFMT_YIQ_422);
526 TRAP_CASE_STRING(GR_TEXFMT_ALPHA_8);
527 TRAP_CASE_STRING(GR_TEXFMT_INTENSITY_8);
528 TRAP_CASE_STRING(GR_TEXFMT_ALPHA_INTENSITY_44);
529 TRAP_CASE_STRING(GR_TEXFMT_P_8);
530 TRAP_CASE_STRING(GR_TEXFMT_RSVD0);
531 /*TRAP_CASE_STRING(GR_TEXFMT_P_8_6666); ==GR_TEXFMT_RSVD0*/
532 /*TRAP_CASE_STRING(GR_TEXFMT_P_8_6666_EXT); ==GR_TEXFMT_RSVD0*/
533 TRAP_CASE_STRING(GR_TEXFMT_RSVD1);
534 TRAP_CASE_STRING(GR_TEXFMT_16BIT);
535 /*TRAP_CASE_STRING(GR_TEXFMT_ARGB_8332); ==GR_TEXFMT_16BIT*/
536 TRAP_CASE_STRING(GR_TEXFMT_AYIQ_8422);
537 TRAP_CASE_STRING(GR_TEXFMT_RGB_565);
538 TRAP_CASE_STRING(GR_TEXFMT_ARGB_1555);
539 TRAP_CASE_STRING(GR_TEXFMT_ARGB_4444);
540 TRAP_CASE_STRING(GR_TEXFMT_ALPHA_INTENSITY_88);
541 TRAP_CASE_STRING(GR_TEXFMT_AP_88);
542 TRAP_CASE_STRING(GR_TEXFMT_RSVD2);
543 /*TRAP_CASE_STRING(GR_TEXFMT_RSVD4); ==GR_TEXFMT_RSVD2*/
544 TRAP_CASE_STRING(GR_TEXFMT_ARGB_CMP_FXT1);
545 TRAP_CASE_STRING(GR_TEXFMT_ARGB_8888);
546 TRAP_CASE_STRING(GR_TEXFMT_YUYV_422);
547 TRAP_CASE_STRING(GR_TEXFMT_UYVY_422);
548 TRAP_CASE_STRING(GR_TEXFMT_AYUV_444);
549 TRAP_CASE_STRING(GR_TEXFMT_ARGB_CMP_DXT1);
550 TRAP_CASE_STRING(GR_TEXFMT_ARGB_CMP_DXT2);
551 TRAP_CASE_STRING(GR_TEXFMT_ARGB_CMP_DXT3);
552 TRAP_CASE_STRING(GR_TEXFMT_ARGB_CMP_DXT4);
553 TRAP_CASE_STRING(GR_TEXFMT_ARGB_CMP_DXT5);
554 TRAP_CASE_STRING(GR_TEXTFMT_RGB_888);
555 TRAP_NODEFAULT;
556 }
557 }
558
559 const char *TRP_EVENODD (FxU32 evenOdd)
560 {
561 switch (evenOdd) {
562 TRAP_CASE_STRING(GR_MIPMAPLEVELMASK_EVEN);
563 TRAP_CASE_STRING(GR_MIPMAPLEVELMASK_ODD);
564 TRAP_CASE_STRING(GR_MIPMAPLEVELMASK_BOTH);
565 TRAP_NODEFAULT;
566 }
567 }
568
569 const char *TRP_NCC (GrNCCTable_t table)
570 {
571 switch (table) {
572 TRAP_CASE_STRING(GR_NCCTABLE_NCC0);
573 TRAP_CASE_STRING(GR_NCCTABLE_NCC1);
574 TRAP_NODEFAULT;
575 }
576 }
577
578 const char *TRP_CLAMPMODE (GrTextureClampMode_t clampmode)
579 {
580 switch (clampmode) {
581 TRAP_CASE_STRING(GR_TEXTURECLAMP_WRAP);
582 TRAP_CASE_STRING(GR_TEXTURECLAMP_CLAMP);
583 TRAP_CASE_STRING(GR_TEXTURECLAMP_MIRROR_EXT);
584 TRAP_NODEFAULT;
585 }
586 }
587
588 const char *TRP_TEXFILTER (GrTextureFilterMode_t filter_mode)
589 {
590 switch (filter_mode) {
591 TRAP_CASE_STRING(GR_TEXTUREFILTER_POINT_SAMPLED);
592 TRAP_CASE_STRING(GR_TEXTUREFILTER_BILINEAR);
593 TRAP_NODEFAULT;
594 }
595 }
596
597 const char *TRP_TABLE (GrTexTable_t type)
598 {
599 switch (type) {
600 TRAP_CASE_STRING(GR_TEXTABLE_NCC0);
601 TRAP_CASE_STRING(GR_TEXTABLE_NCC1);
602 TRAP_CASE_STRING(GR_TEXTABLE_PALETTE);
603 TRAP_CASE_STRING(GR_TEXTABLE_PALETTE_6666_EXT);
604 TRAP_NODEFAULT;
605 }
606 }
607
608 const char *TRP_MIPMODE (GrMipMapMode_t mode)
609 {
610 switch (mode) {
611 TRAP_CASE_STRING(GR_MIPMAP_DISABLE);
612 TRAP_CASE_STRING(GR_MIPMAP_NEAREST);
613 TRAP_CASE_STRING(GR_MIPMAP_NEAREST_DITHER);
614 TRAP_NODEFAULT;
615 }
616 }
617
618 const char *TRP_TEXBASERANGE (GrTexBaseRange_t range)
619 {
620 switch (range) {
621 TRAP_CASE_STRING(GR_TEXBASE_2048);
622 TRAP_CASE_STRING(GR_TEXBASE_1024);
623 TRAP_CASE_STRING(GR_TEXBASE_512);
624 TRAP_CASE_STRING(GR_TEXBASE_256_TO_1);
625 TRAP_CASE_STRING(GR_TEXBASE_256);
626 TRAP_CASE_STRING(GR_TEXBASE_128);
627 TRAP_CASE_STRING(GR_TEXBASE_64);
628 TRAP_CASE_STRING(GR_TEXBASE_32_TO_1);
629 TRAP_NODEFAULT;
630 }
631 }
632
633 const char *TRP_LOCKTYPE (GrLock_t type)
634 {
635 switch (type) {
636 TRAP_CASE_STRING(GR_LFB_READ_ONLY);
637 TRAP_CASE_STRING(GR_LFB_WRITE_ONLY);
638 /*TRAP_CASE_STRING(GR_LFB_IDLE); ==GR_LFB_READ_ONLY*/
639 TRAP_CASE_STRING(GR_LFB_NOIDLE);
640 TRAP_CASE_STRING(GR_LFB_WRITE_ONLY_EXPLICIT_EXT);
641 TRAP_NODEFAULT;
642 }
643 }
644
645 const char *TRP_WRITEMODE (GrLfbWriteMode_t writeMode)
646 {
647 switch (writeMode) {
648 TRAP_CASE_STRING(GR_LFBWRITEMODE_565);
649 TRAP_CASE_STRING(GR_LFBWRITEMODE_555);
650 TRAP_CASE_STRING(GR_LFBWRITEMODE_1555);
651 TRAP_CASE_STRING(GR_LFBWRITEMODE_RESERVED1);
652 TRAP_CASE_STRING(GR_LFBWRITEMODE_888);
653 TRAP_CASE_STRING(GR_LFBWRITEMODE_8888);
654 TRAP_CASE_STRING(GR_LFBWRITEMODE_RESERVED2);
655 TRAP_CASE_STRING(GR_LFBWRITEMODE_RESERVED3);
656 TRAP_CASE_STRING(GR_LFBWRITEMODE_Z32);
657 TRAP_CASE_STRING(GR_LFBWRITEMODE_RESERVED5);
658 TRAP_CASE_STRING(GR_LFBWRITEMODE_RESERVED6);
659 TRAP_CASE_STRING(GR_LFBWRITEMODE_RESERVED7);
660 TRAP_CASE_STRING(GR_LFBWRITEMODE_565_DEPTH);
661 TRAP_CASE_STRING(GR_LFBWRITEMODE_555_DEPTH);
662 TRAP_CASE_STRING(GR_LFBWRITEMODE_1555_DEPTH);
663 TRAP_CASE_STRING(GR_LFBWRITEMODE_ZA16);
664 TRAP_CASE_STRING(GR_LFBWRITEMODE_ANY);
665 TRAP_NODEFAULT;
666 }
667 }
668
669 const char *TRP_SRCFMT (GrLfbSrcFmt_t src_format)
670 {
671 switch (src_format) {
672 TRAP_CASE_STRING(GR_LFB_SRC_FMT_565);
673 TRAP_CASE_STRING(GR_LFB_SRC_FMT_555);
674 TRAP_CASE_STRING(GR_LFB_SRC_FMT_1555);
675 TRAP_CASE_STRING(GR_LFB_SRC_FMT_888);
676 TRAP_CASE_STRING(GR_LFB_SRC_FMT_8888);
677 TRAP_CASE_STRING(GR_LFB_SRC_FMT_565_DEPTH);
678 TRAP_CASE_STRING(GR_LFB_SRC_FMT_555_DEPTH);
679 TRAP_CASE_STRING(GR_LFB_SRC_FMT_1555_DEPTH);
680 TRAP_CASE_STRING(GR_LFB_SRC_FMT_ZA16);
681 TRAP_CASE_STRING(GR_LFB_SRC_FMT_RLE16);
682 TRAP_CASE_STRING(GR_LFBWRITEMODE_Z32); /*???*/
683 TRAP_NODEFAULT;
684 }
685 }
686
687 const char *TRP_CRMODE (GrChromaRangeMode_t mode)
688 {
689 switch (mode) {
690 TRAP_CASE_STRING(GR_CHROMARANGE_DISABLE_EXT);
691 /*TRAP_CASE_STRING(GR_CHROMARANGE_RGB_ALL_EXT); ==GR_CHROMARANGE_DISABLE_EXT*/
692 TRAP_CASE_STRING(GR_CHROMARANGE_ENABLE_EXT);
693 TRAP_NODEFAULT;
694 }
695 }
696
697 const char *TRP_PIXFMT (GrPixelFormat_t pixelformat)
698 {
699 switch (pixelformat) {
700 TRAP_CASE_STRING(GR_PIXFMT_I_8);
701 TRAP_CASE_STRING(GR_PIXFMT_AI_88);
702 TRAP_CASE_STRING(GR_PIXFMT_RGB_565);
703 TRAP_CASE_STRING(GR_PIXFMT_ARGB_1555);
704 TRAP_CASE_STRING(GR_PIXFMT_ARGB_8888);
705 TRAP_CASE_STRING(GR_PIXFMT_AA_2_RGB_565);
706 TRAP_CASE_STRING(GR_PIXFMT_AA_2_ARGB_1555);
707 TRAP_CASE_STRING(GR_PIXFMT_AA_2_ARGB_8888);
708 TRAP_CASE_STRING(GR_PIXFMT_AA_4_RGB_565);
709 TRAP_CASE_STRING(GR_PIXFMT_AA_4_ARGB_1555);
710 TRAP_CASE_STRING(GR_PIXFMT_AA_4_ARGB_8888);
711 TRAP_CASE_STRING(GR_PIXFMT_AA_8_RGB_565);
712 TRAP_CASE_STRING(GR_PIXFMT_AA_8_ARGB_1555);
713 TRAP_CASE_STRING(GR_PIXFMT_AA_8_ARGB_8888);
714 TRAP_NODEFAULT;
715 }
716 }
717
718 const char *TRP_STENCILOP (GrStencilOp_t op)
719 {
720 switch (op) {
721 TRAP_CASE_STRING(GR_STENCILOP_KEEP);
722 TRAP_CASE_STRING(GR_STENCILOP_ZERO);
723 TRAP_CASE_STRING(GR_STENCILOP_REPLACE);
724 TRAP_CASE_STRING(GR_STENCILOP_INCR_CLAMP);
725 TRAP_CASE_STRING(GR_STENCILOP_DECR_CLAMP);
726 TRAP_CASE_STRING(GR_STENCILOP_INVERT);
727 TRAP_CASE_STRING(GR_STENCILOP_INCR_WRAP);
728 TRAP_CASE_STRING(GR_STENCILOP_DECR_WRAP);
729 TRAP_NODEFAULT;
730 }
731 }
732
733 const char *TRP_BLENDOP (GrAlphaBlendOp_t op)
734 {
735 switch (op) {
736 TRAP_CASE_STRING(GR_BLEND_OP_ADD);
737 TRAP_CASE_STRING(GR_BLEND_OP_SUB);
738 TRAP_CASE_STRING(GR_BLEND_OP_REVSUB);
739 TRAP_NODEFAULT;
740 }
741 }
742
743 const char *TRP_CU (GrCCUColor_t a)
744 {
745 switch (a) {
746 TRAP_CASE_STRING(GR_CMBX_ZERO);
747 TRAP_CASE_STRING(GR_CMBX_TEXTURE_ALPHA);
748 TRAP_CASE_STRING(GR_CMBX_ALOCAL);
749 TRAP_CASE_STRING(GR_CMBX_AOTHER);
750 TRAP_CASE_STRING(GR_CMBX_B);
751 TRAP_CASE_STRING(GR_CMBX_CONSTANT_ALPHA);
752 TRAP_CASE_STRING(GR_CMBX_CONSTANT_COLOR);
753 TRAP_CASE_STRING(GR_CMBX_DETAIL_FACTOR);
754 TRAP_CASE_STRING(GR_CMBX_ITALPHA);
755 TRAP_CASE_STRING(GR_CMBX_ITRGB);
756 TRAP_CASE_STRING(GR_CMBX_LOCAL_TEXTURE_ALPHA);
757 TRAP_CASE_STRING(GR_CMBX_LOCAL_TEXTURE_RGB);
758 TRAP_CASE_STRING(GR_CMBX_LOD_FRAC);
759 TRAP_CASE_STRING(GR_CMBX_OTHER_TEXTURE_ALPHA);
760 TRAP_CASE_STRING(GR_CMBX_OTHER_TEXTURE_RGB);
761 TRAP_CASE_STRING(GR_CMBX_TEXTURE_RGB);
762 TRAP_CASE_STRING(GR_CMBX_TMU_CALPHA);
763 TRAP_CASE_STRING(GR_CMBX_TMU_CCOLOR);
764 TRAP_NODEFAULT;
765 }
766 }
767
768 const char *TRP_CMBMODE (GrCombineMode_t a_mode)
769 {
770 switch (a_mode) {
771 TRAP_CASE_STRING(GR_FUNC_MODE_ZERO);
772 TRAP_CASE_STRING(GR_FUNC_MODE_X);
773 TRAP_CASE_STRING(GR_FUNC_MODE_ONE_MINUS_X);
774 TRAP_CASE_STRING(GR_FUNC_MODE_NEGATIVE_X);
775 TRAP_CASE_STRING(GR_FUNC_MODE_X_MINUS_HALF);
776 TRAP_NODEFAULT;
777 }
778 }
779
780 const char *TRP_TMU (GrChipID_t tmu)
781 {
782 switch (tmu) {
783 TRAP_CASE_STRING(GR_TMU0);
784 TRAP_CASE_STRING(GR_TMU1);
785 TRAP_NODEFAULT;
786 }
787 }
788
789 const char *TRP_TXDITHER (FxU32 dither)
790 {
791 switch (dither) {
792 TRAP_CASE_STRING(TX_DITHER_NONE);
793 TRAP_CASE_STRING(TX_DITHER_4x4);
794 TRAP_CASE_STRING(TX_DITHER_ERR);
795 TRAP_NODEFAULT;
796 }
797 }
798
799 const char *TRP_TXCOMPRESS (FxU32 compress)
800 {
801 switch (compress) {
802 TRAP_CASE_STRING(TX_COMPRESSION_STATISTICAL);
803 TRAP_CASE_STRING(TX_COMPRESSION_HEURISTIC);
804 TRAP_NODEFAULT;
805 }
806 }
807
808
809
810 /****************************************************************************\
811 * REAL POINTERS *
812 \****************************************************************************/
813
814 /*
815 ** glide extensions
816 */
817 char * (FX_CALL *real_grGetRegistryOrEnvironmentStringExt) (char *theEntry);
818 void (FX_CALL *real_grGetGammaTableExt) (FxU32 nentries, FxU32 *red, FxU32 *green, FxU32 *blue);
819 void (FX_CALL *real_grChromaRangeModeExt) (GrChromakeyMode_t mode);
820 void (FX_CALL *real_grChromaRangeExt) (GrColor_t color, GrColor_t range, GrChromaRangeMode_t match_mode);
821 void (FX_CALL *real_grTexChromaModeExt) (GrChipID_t tmu, GrChromakeyMode_t mode);
822 void (FX_CALL *real_grTexChromaRangeExt) (GrChipID_t tmu, GrColor_t min, GrColor_t max, GrTexChromakeyMode_t mode);
823
824 /* pointcast */
825 void (FX_CALL *real_grTexDownloadTableExt) (GrChipID_t tmu, GrTexTable_t type, void *data);
826 void (FX_CALL *real_grTexDownloadTablePartialExt) (GrChipID_t tmu, GrTexTable_t type, void *data, int start, int end);
827 void (FX_CALL *real_grTexNCCTableExt) (GrChipID_t tmu, GrNCCTable_t table);
828
829 /* tbext */
830 void (FX_CALL *real_grTextureBufferExt) (GrChipID_t tmu, FxU32 startAddress, GrLOD_t thisLOD, GrLOD_t largeLOD, GrAspectRatio_t aspectRatio, GrTextureFormat_t format, FxU32 odd_even_mask);
831 void (FX_CALL *real_grTextureAuxBufferExt) (GrChipID_t tmu, FxU32 startAddress, GrLOD_t thisLOD, GrLOD_t largeLOD, GrAspectRatio_t aspectRatio, GrTextureFormat_t format, FxU32 odd_even_mask);
832 void (FX_CALL *real_grAuxBufferExt) (GrBuffer_t buffer);
833
834 /* napalm */
835 GrContext_t (FX_CALL *real_grSstWinOpenExt) (FxU32 hWnd, GrScreenResolution_t resolution, GrScreenRefresh_t refresh, GrColorFormat_t format, GrOriginLocation_t origin, GrPixelFormat_t pixelformat, int nColBuffers, int nAuxBuffers);
836 void (FX_CALL *real_grStencilFuncExt) (GrCmpFnc_t fnc, GrStencil_t ref, GrStencil_t mask);
837 void (FX_CALL *real_grStencilMaskExt) (GrStencil_t value);
838 void (FX_CALL *real_grStencilOpExt) (GrStencilOp_t stencil_fail, GrStencilOp_t depth_fail, GrStencilOp_t depth_pass);
839 void (FX_CALL *real_grLfbConstantStencilExt) (GrStencil_t value);
840 void (FX_CALL *real_grBufferClearExt) (GrColor_t color, GrAlpha_t alpha, FxU32 depth, GrStencil_t stencil);
841 void (FX_CALL *real_grColorCombineExt) (GrCCUColor_t a, GrCombineMode_t a_mode, GrCCUColor_t b, GrCombineMode_t b_mode, GrCCUColor_t c, FxBool c_invert, GrCCUColor_t d, FxBool d_invert, FxU32 shift, FxBool invert);
842 void (FX_CALL *real_grAlphaCombineExt) (GrACUColor_t a, GrCombineMode_t a_mode, GrACUColor_t b, GrCombineMode_t b_mode, GrACUColor_t c, FxBool c_invert, GrACUColor_t d, FxBool d_invert, FxU32 shift, FxBool invert);
843 void (FX_CALL *real_grTexColorCombineExt) (GrChipID_t tmu, GrTCCUColor_t a, GrCombineMode_t a_mode, GrTCCUColor_t b, GrCombineMode_t b_mode, GrTCCUColor_t c, FxBool c_invert, GrTCCUColor_t d, FxBool d_invert, FxU32 shift, FxBool invert);
844 void (FX_CALL *real_grTexAlphaCombineExt) (GrChipID_t tmu, GrTACUColor_t a, GrCombineMode_t a_mode, GrTACUColor_t b, GrCombineMode_t b_mode, GrTACUColor_t c, FxBool c_invert, GrTACUColor_t d, FxBool d_invert, FxU32 shift, FxBool invert);
845 void (FX_CALL *real_grConstantColorValueExt) (GrChipID_t tmu, GrColor_t value);
846 void (FX_CALL *real_grColorMaskExt) (FxBool r, FxBool g, FxBool b, FxBool a);
847 void (FX_CALL *real_grAlphaBlendFunctionExt) (GrAlphaBlendFnc_t rgb_sf, GrAlphaBlendFnc_t rgb_df, GrAlphaBlendOp_t rgb_op, GrAlphaBlendFnc_t alpha_sf, GrAlphaBlendFnc_t alpha_df, GrAlphaBlendOp_t alpha_op);
848 void (FX_CALL *real_grTBufferWriteMaskExt) (FxU32 tmask);
849
850 /*
851 ** texus
852 */
853 void (FX_CALL *real_txImgQuantize) (char *dst, char *src, int w, int h, FxU32 format, FxU32 dither);
854 void (FX_CALL *real_txMipQuantize) (TxMip *pxMip, TxMip *txMip, int fmt, FxU32 d, FxU32 comp);
855 void (FX_CALL *real_txPalToNcc) (GuNccTable *ncc_table, const FxU32 *pal);
856
857
858
859 /****************************************************************************\
860 * DEBUG HOOKS *
861 \****************************************************************************/
862
863 /*
864 ** rendering functions
865 */
866 void FX_CALL trap_grDrawPoint (const void *pt)
867 {
868 #define FN_NAME "grDrawPoint"
869 TRAP_LOG("%s(%p)\n", FN_NAME, pt);
870 grDrawPoint(pt);
871 #undef FN_NAME
872 }
873
874 void FX_CALL trap_grDrawLine (const void *v1,
875 const void *v2)
876 {
877 #define FN_NAME "grDrawLine"
878 TRAP_LOG("%s(%p, %p)\n", FN_NAME, v1, v2);
879 grDrawLine(v1, v2);
880 #undef FN_NAME
881 }
882
883 void FX_CALL trap_grDrawTriangle (const void *a,
884 const void *b,
885 const void *c)
886 {
887 #define FN_NAME "grDrawTriangle"
888 TRAP_LOG("%s(%p, %p, %p)\n", FN_NAME, a, b, c);
889 grDrawTriangle(a, b, c);
890 #undef FN_NAME
891 }
892
893 void FX_CALL trap_grVertexLayout (FxU32 param,
894 FxI32 offset,
895 FxU32 mode)
896 {
897 #define FN_NAME "grVertexLayout"
898 TRAP_LOG("%s(%s, %ld, %s)\n", FN_NAME, TRP_VTX(param), offset, TRP_PARAM(mode));
899 grVertexLayout(param, offset, mode);
900 #undef FN_NAME
901 }
902
903 void FX_CALL trap_grDrawVertexArray (FxU32 mode,
904 FxU32 Count,
905 void *pointers)
906 {
907 #define FN_NAME "grDrawVertexArray"
908 TRAP_LOG("%s(%s, %lu, %p)\n", FN_NAME, TRP_ARRAY(mode), Count, pointers);
909 grDrawVertexArray(mode, Count, pointers);
910 #undef FN_NAME
911 }
912
913 void FX_CALL trap_grDrawVertexArrayContiguous (FxU32 mode,
914 FxU32 Count,
915 void *pointers,
916 FxU32 stride)
917 {
918 #define FN_NAME "grDrawVertexArrayContiguous"
919 TRAP_LOG("%s(%s, %lu, %p, %lu)\n", FN_NAME, TRP_ARRAY(mode), Count, pointers, stride);
920 grDrawVertexArrayContiguous(mode, Count, pointers, stride);
921 #undef FN_NAME
922 }
923
924 /*
925 ** Antialiasing Functions
926 */
927 void FX_CALL trap_grAADrawTriangle (const void *a,
928 const void *b,
929 const void *c,
930 FxBool ab_antialias,
931 FxBool bc_antialias,
932 FxBool ca_antialias)
933 {
934 #define FN_NAME "grAADrawTriangle"
935 TRAP_LOG("%s(%p, %p, %p, %s, %s, %s)\n", FN_NAME, a, b, c, TRP_BOOL(ab_antialias), TRP_BOOL(bc_antialias), TRP_BOOL(ca_antialias));
936 grAADrawTriangle(a, b, c, ab_antialias, bc_antialias, ca_antialias);
937 #undef FN_NAME
938 }
939
940 /*
941 ** buffer management
942 */
943 void FX_CALL trap_grBufferClear (GrColor_t color,
944 GrAlpha_t alpha,
945 FxU32 depth)
946 {
947 #define FN_NAME "grBufferClear"
948 TRAP_LOG("%s(%08lx, %02x, %08lx)\n", FN_NAME, color, alpha, depth);
949 grBufferClear(color, alpha, depth);
950 #undef FN_NAME
951 }
952
953 void FX_CALL trap_grBufferSwap (FxU32 swap_interval)
954 {
955 #define FN_NAME "grBufferSwap"
956 TRAP_LOG("%s(%lu)\n", FN_NAME, swap_interval);
957 grBufferSwap(swap_interval);
958 #undef FN_NAME
959 }
960
961 void FX_CALL trap_grRenderBuffer (GrBuffer_t buffer)
962 {
963 #define FN_NAME "grRenderBuffer"
964 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_BUFFER(buffer));
965 grRenderBuffer(buffer);
966 #undef FN_NAME
967 }
968
969 /*
970 ** error management
971 */
972 void FX_CALL trap_grErrorSetCallback (GrErrorCallbackFnc_t fnc)
973 {
974 #define FN_NAME "grErrorSetCallback"
975 TRAP_LOG("%s(%p)\n", FN_NAME, (void *)fnc);
976 grErrorSetCallback(fnc);
977 #undef FN_NAME
978 }
979
980 /*
981 ** SST routines
982 */
983 void FX_CALL trap_grFinish (void)
984 {
985 #define FN_NAME "grFinish"
986 TRAP_LOG("%s()\n", FN_NAME);
987 grFinish();
988 #undef FN_NAME
989 }
990
991 void FX_CALL trap_grFlush (void)
992 {
993 #define FN_NAME "grFlush"
994 TRAP_LOG("%s()\n", FN_NAME);
995 grFlush();
996 #undef FN_NAME
997 }
998
999 GrContext_t FX_CALL trap_grSstWinOpen (FxU32 hWnd,
1000 GrScreenResolution_t screen_resolution,
1001 GrScreenRefresh_t refresh_rate,
1002 GrColorFormat_t color_format,
1003 GrOriginLocation_t origin_location,
1004 int nColBuffers,
1005 int nAuxBuffers)
1006 {
1007 #define FN_NAME "grSstWinOpen"
1008 GrContext_t rv;
1009 TRAP_LOG("%s(%08lx, %s, %s, %s, %s, %d, %d)\n", FN_NAME, hWnd, TRP_RESOLUTION(screen_resolution), TRP_REFRESH(refresh_rate), TRP_COLFMT(color_format), TRP_ORIGIN(origin_location), nColBuffers, nAuxBuffers);
1010 rv = grSstWinOpen(hWnd, screen_resolution, refresh_rate, color_format, origin_location, nColBuffers, nAuxBuffers);
1011 TRAP_LOG(GOT "%p\n", (void *)rv);
1012 return rv;
1013 #undef FN_NAME
1014 }
1015
1016 FxBool FX_CALL trap_grSstWinClose (GrContext_t context)
1017 {
1018 #define FN_NAME "grSstWinClose"
1019 FxBool rv;
1020 TRAP_LOG("%s(%p)\n", FN_NAME, (void *)context);
1021 rv = grSstWinClose(context);
1022 TRAP_LOG(GOT "%s\n", TRP_BOOL(rv));
1023 return rv;
1024 #undef FN_NAME
1025 }
1026
1027 void FX_CALL trap_grSetNumPendingBuffers (FxI32 NumPendingBuffers)
1028 {
1029 #define FN_NAME "grSetNumPendingBuffers"
1030 TRAP_LOG("%s(%ld)\n", FN_NAME, NumPendingBuffers);
1031 grSetNumPendingBuffers(NumPendingBuffers);
1032 #undef FN_NAME
1033 }
1034
1035 FxBool FX_CALL trap_grSelectContext (GrContext_t context)
1036 {
1037 #define FN_NAME "grSelectContext"
1038 FxBool rv;
1039 TRAP_LOG("%s(%p)\n", FN_NAME, (void *)context);
1040 rv = grSelectContext(context);
1041 TRAP_LOG(GOT "%s\n", TRP_BOOL(rv));
1042 return rv;
1043 #undef FN_NAME
1044 }
1045
1046 void FX_CALL trap_grSstOrigin (GrOriginLocation_t origin)
1047 {
1048 #define FN_NAME "grSstOrigin"
1049 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_ORIGIN(origin));
1050 grSstOrigin(origin);
1051 #undef FN_NAME
1052 }
1053
1054 void FX_CALL trap_grSstSelect (int which_sst)
1055 {
1056 #define FN_NAME "grSstSelect"
1057 TRAP_LOG("%s(%d)\n", FN_NAME, which_sst);
1058 grSstSelect(which_sst);
1059 #undef FN_NAME
1060 }
1061
1062 /*
1063 ** Glide configuration and special effect maintenance functions
1064 */
1065 void FX_CALL trap_grAlphaBlendFunction (GrAlphaBlendFnc_t rgb_sf,
1066 GrAlphaBlendFnc_t rgb_df,
1067 GrAlphaBlendFnc_t alpha_sf,
1068 GrAlphaBlendFnc_t alpha_df)
1069 {
1070 #define FN_NAME "grAlphaBlendFunction"
1071 TRAP_LOG("%s(%s, %s, %s, %s)\n", FN_NAME, TRP_BLEND(rgb_sf), TRP_BLEND(rgb_df), TRP_BLEND(alpha_sf), TRP_BLEND(alpha_df));
1072 grAlphaBlendFunction(rgb_sf, rgb_df, alpha_sf, alpha_df);
1073 #undef FN_NAME
1074 }
1075
1076 void FX_CALL trap_grAlphaCombine (GrCombineFunction_t function,
1077 GrCombineFactor_t factor,
1078 GrCombineLocal_t local,
1079 GrCombineOther_t other,
1080 FxBool invert)
1081 {
1082 #define FN_NAME "grAlphaCombine"
1083 TRAP_LOG("%s(%s, %s, %s, %s, %s)\n", FN_NAME, TRP_CMBFUNC(function), TRP_CMBFACT(factor), TRP_CMBLOCAL(local), TRP_CMBOTHER(other), TRP_BOOL(invert));
1084 grAlphaCombine(function, factor, local, other, invert);
1085 #undef FN_NAME
1086 }
1087
1088 void FX_CALL trap_grAlphaControlsITRGBLighting (FxBool enable)
1089 {
1090 #define FN_NAME "grAlphaControlsITRGBLighting"
1091 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_BOOL(enable));
1092 grAlphaControlsITRGBLighting(enable);
1093 #undef FN_NAME
1094 }
1095
1096 void FX_CALL trap_grAlphaTestFunction (GrCmpFnc_t function)
1097 {
1098 #define FN_NAME "grAlphaTestFunction"
1099 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_CMPFUNC(function));
1100 grAlphaTestFunction(function);
1101 #undef FN_NAME
1102 }
1103
1104 void FX_CALL trap_grAlphaTestReferenceValue (GrAlpha_t value)
1105 {
1106 #define FN_NAME "grAlphaTestReferenceValue"
1107 TRAP_LOG("%s(%02x)\n", FN_NAME, value);
1108 grAlphaTestReferenceValue(value);
1109 #undef FN_NAME
1110 }
1111
1112 void FX_CALL trap_grChromakeyMode (GrChromakeyMode_t mode)
1113 {
1114 #define FN_NAME "grChromakeyMode"
1115 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_CKMODE(mode));
1116 grChromakeyMode(mode);
1117 #undef FN_NAME
1118 }
1119
1120 void FX_CALL trap_grChromakeyValue (GrColor_t value)
1121 {
1122 #define FN_NAME "grChromakeyValue"
1123 TRAP_LOG("%s(%08lx)\n", FN_NAME, value);
1124 grChromakeyValue(value);
1125 #undef FN_NAME
1126 }
1127
1128 void FX_CALL trap_grClipWindow (FxU32 minx,
1129 FxU32 miny,
1130 FxU32 maxx,
1131 FxU32 maxy)
1132 {
1133 #define FN_NAME "grClipWindow"
1134 TRAP_LOG("%s(%lu, %lu, %lu, %lu)\n", FN_NAME, minx, miny, maxx, maxy);
1135 grClipWindow(minx, miny, maxx, maxy);
1136 #undef FN_NAME
1137 }
1138
1139 void FX_CALL trap_grColorCombine (GrCombineFunction_t function,
1140 GrCombineFactor_t factor,
1141 GrCombineLocal_t local,
1142 GrCombineOther_t other,
1143 FxBool invert)
1144 {
1145 #define FN_NAME "grColorCombine"
1146 TRAP_LOG("%s(%s, %s, %s, %s, %s)\n", FN_NAME, TRP_CMBFUNC(function), TRP_CMBFACT(factor), TRP_CMBLOCAL(local), TRP_CMBOTHER(other), TRP_BOOL(invert));
1147 grColorCombine(function, factor, local, other, invert);
1148 #undef FN_NAME
1149 }
1150
1151 void FX_CALL trap_grColorMask (FxBool rgb,
1152 FxBool a)
1153 {
1154 #define FN_NAME "grColorMask"
1155 TRAP_LOG("%s(%s, %s)\n", FN_NAME, TRP_BOOL(rgb), TRP_BOOL(a));
1156 grColorMask(rgb, a);
1157 #undef FN_NAME
1158 }
1159
1160 void FX_CALL trap_grCullMode (GrCullMode_t mode)
1161 {
1162 #define FN_NAME "grCullMode"
1163 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_CULLMODE(mode));
1164 grCullMode(mode);
1165 #undef FN_NAME
1166 }
1167
1168 void FX_CALL trap_grConstantColorValue (GrColor_t value)
1169 {
1170 #define FN_NAME "grConstantColorValue"
1171 TRAP_LOG("%s(%08lx)\n", FN_NAME, value);
1172 grConstantColorValue(value);
1173 #undef FN_NAME
1174 }
1175
1176 void FX_CALL trap_grDepthBiasLevel (FxI32 level)
1177 {
1178 #define FN_NAME "grDepthBiasLevel"
1179 TRAP_LOG("%s(%ld)\n", FN_NAME, level);
1180 grDepthBiasLevel(level);
1181 #undef FN_NAME
1182 }
1183
1184 void FX_CALL trap_grDepthBufferFunction (GrCmpFnc_t function)
1185 {
1186 #define FN_NAME "grDepthBufferFunction"
1187 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_CMPFUNC(function));
1188 grDepthBufferFunction(function);
1189 #undef FN_NAME
1190 }
1191
1192 void FX_CALL trap_grDepthBufferMode (GrDepthBufferMode_t mode)
1193 {
1194 #define FN_NAME "grDepthBufferMode"
1195 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_DEPTHMODE(mode));
1196 grDepthBufferMode(mode);
1197 #undef FN_NAME
1198 }
1199
1200 void FX_CALL trap_grDepthMask (FxBool mask)
1201 {
1202 #define FN_NAME "grDepthMask"
1203 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_BOOL(mask));
1204 grDepthMask(mask);
1205 #undef FN_NAME
1206 }
1207
1208 void FX_CALL trap_grDisableAllEffects (void)
1209 {
1210 #define FN_NAME "grDisableAllEffects"
1211 TRAP_LOG("%s()\n", FN_NAME);
1212 grDisableAllEffects();
1213 #undef FN_NAME
1214 }
1215
1216 void FX_CALL trap_grDitherMode (GrDitherMode_t mode)
1217 {
1218 #define FN_NAME "grDitherMode"
1219 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_DITHERMODE(mode));
1220 grDitherMode(mode);
1221 #undef FN_NAME
1222 }
1223
1224 void FX_CALL trap_grFogColorValue (GrColor_t fogcolor)
1225 {
1226 #define FN_NAME "grFogColorValue"
1227 TRAP_LOG("%s(%08lx)\n", FN_NAME, fogcolor);
1228 grFogColorValue(fogcolor);
1229 #undef FN_NAME
1230 }
1231
1232 void FX_CALL trap_grFogMode (GrFogMode_t mode)
1233 {
1234 #define FN_NAME "grFogMode"
1235 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_FOGMODE(mode));
1236 grFogMode(mode);
1237 #undef FN_NAME
1238 }
1239
1240 void FX_CALL trap_grFogTable (const GrFog_t ft[])
1241 {
1242 #define FN_NAME "grFogTable"
1243 TRAP_LOG("%s(%p)\n", FN_NAME, ft);
1244 grFogTable(ft);
1245 #undef FN_NAME
1246 }
1247
1248 void FX_CALL trap_grLoadGammaTable (FxU32 nentries,
1249 FxU32 *red,
1250 FxU32 *green,
1251 FxU32 *blue)
1252 {
1253 #define FN_NAME "grLoadGammaTable"
1254 TRAP_LOG("%s(%lu, %p, %p, %p)\n", FN_NAME, nentries, (void *)red, (void *)green, (void *)blue);
1255 grLoadGammaTable(nentries, red, green, blue);
1256 #undef FN_NAME
1257 }
1258
1259 void FX_CALL trap_grSplash (float x,
1260 float y,
1261 float width,
1262 float height,
1263 FxU32 frame)
1264 {
1265 #define FN_NAME "grSplash"
1266 TRAP_LOG("%s(%f, %f, %f, %f, %lu)\n", FN_NAME, x, y, width, height, frame);
1267 grSplash(x, y, width, height, frame);
1268 #undef FN_NAME
1269 }
1270
1271 FxU32 FX_CALL trap_grGet (FxU32 pname,
1272 FxU32 plength,
1273 FxI32 *params)
1274 {
1275 #define FN_NAME "grGet"
1276 FxU32 rv, i;
1277 TRAP_LOG("%s(%s, %lu, %p)\n", FN_NAME, TRP_GETNAME(pname), plength, (void *)params);
1278 rv = grGet(pname, plength, params);
1279 TRAP_LOG(GOT "[");
1280 for (i = 0; i < (rv/sizeof(FxI32)); i++) {
1281 TRAP_LOG("%s%ld", i ? ", " : "", params[i]);
1282 }
1283 TRAP_LOG("]\n");
1284 return rv;
1285 #undef FN_NAME
1286 }
1287
1288 const char *FX_CALL trap_grGetString (FxU32 pname)
1289 {
1290 #define FN_NAME "grGetString"
1291 const char *rv;
1292 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_GETSTRING(pname));
1293 rv = grGetString(pname);
1294 if (rv) {
1295 TRAP_LOG(GOT "\"%s\"\n", rv);
1296 } else {
1297 TRAP_LOG(GOT "NULL\n");
1298 }
1299 return rv;
1300 #undef FN_NAME
1301 }
1302
1303 FxI32 FX_CALL trap_grQueryResolutions (const GrResolution *resTemplate,
1304 GrResolution *output)
1305 {
1306 #define FN_NAME "grQueryResolutions"
1307 FxI32 rv;
1308 TRAP_LOG("%s(%p, %p)\n", FN_NAME, (void *)resTemplate, (void *)output);
1309 rv = grQueryResolutions(resTemplate, output);
1310 TRAP_LOG(GOT "%ld\n", rv);
1311 return rv;
1312 #undef FN_NAME
1313 }
1314
1315 FxBool FX_CALL trap_grReset (FxU32 what)
1316 {
1317 #define FN_NAME "grReset"
1318 FxBool rv;
1319 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_GETNAME(what));
1320 rv = grReset(what);
1321 TRAP_LOG(GOT "%s\n", TRP_BOOL(rv));
1322 return rv;
1323 #undef FN_NAME
1324 }
1325
1326 GrProc FX_CALL trap_grGetProcAddress (char *procName)
1327 {
1328 #define FN_NAME "grGetProcAddress"
1329 GrProc rv;
1330 TRAP_LOG("%s(%s)\n", FN_NAME, procName);
1331 rv = grGetProcAddress(procName);
1332 TRAP_LOG(GOT "%p\n", (void *)rv);
1333 return rv;
1334 #undef FN_NAME
1335 }
1336
1337 void FX_CALL trap_grEnable (GrEnableMode_t mode)
1338 {
1339 #define FN_NAME "grEnable"
1340 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_ENABLE(mode));
1341 grEnable(mode);
1342 #undef FN_NAME
1343 }
1344
1345 void FX_CALL trap_grDisable (GrEnableMode_t mode)
1346 {
1347 #define FN_NAME "grDisable"
1348 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_ENABLE(mode));
1349 grDisable(mode);
1350 #undef FN_NAME
1351 }
1352
1353 void FX_CALL trap_grCoordinateSpace (GrCoordinateSpaceMode_t mode)
1354 {
1355 #define FN_NAME "grCoordinateSpace"
1356 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_COORD(mode));
1357 grCoordinateSpace(mode);
1358 #undef FN_NAME
1359 }
1360
1361 void FX_CALL trap_grDepthRange (FxFloat n,
1362 FxFloat f)
1363 {
1364 #define FN_NAME "grDepthRange"
1365 TRAP_LOG("%s(%f, %f)\n", FN_NAME, n, f);
1366 grDepthRange(n, f);
1367 #undef FN_NAME
1368 }
1369
1370 void FX_CALL trap_grStippleMode (GrStippleMode_t mode)
1371 {
1372 #define FN_NAME "grStippleMode"
1373 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_STIPPLEMODE(mode));
1374 grStippleMode(mode);
1375 #undef FN_NAME
1376 }
1377
1378 void FX_CALL trap_grStipplePattern (GrStipplePattern_t mode)
1379 {
1380 #define FN_NAME "grStipplePattern"
1381 TRAP_LOG("%s(%08lx)\n", FN_NAME, mode);
1382 grStipplePattern(mode);
1383 #undef FN_NAME
1384 }
1385
1386 void FX_CALL trap_grViewport (FxI32 x,
1387 FxI32 y,
1388 FxI32 width,
1389 FxI32 height)
1390 {
1391 #define FN_NAME "grViewport"
1392 TRAP_LOG("%s(%ld, %ld, %ld, %ld)\n", FN_NAME, x, y, width, height);
1393 grViewport(x, y, width, height);
1394 #undef FN_NAME
1395 }
1396
1397 /*
1398 ** texture mapping control functions
1399 */
1400 FxU32 FX_CALL trap_grTexCalcMemRequired (GrLOD_t lodmin,
1401 GrLOD_t lodmax,
1402 GrAspectRatio_t aspect,
1403 GrTextureFormat_t fmt)
1404 {
1405 #define FN_NAME "grTexCalcMemRequired"
1406 FxU32 rv;
1407 TRAP_LOG("%s(%s, %s, %s, %s)\n", FN_NAME, TRP_LODLEVEL(lodmin), TRP_LODLEVEL(lodmax), TRP_ASPECTRATIO(aspect), TRP_TEXFMT(fmt));
1408 rv = grTexCalcMemRequired(lodmin, lodmax, aspect, fmt);
1409 TRAP_LOG(GOT "%lu\n", rv);
1410 return rv;
1411 #undef FN_NAME
1412 }
1413
1414 FxU32 FX_CALL trap_grTexTextureMemRequired (FxU32 evenOdd,
1415 GrTexInfo *info)
1416 {
1417 #define FN_NAME "grTexTextureMemRequired"
1418 FxU32 rv;
1419 TRAP_LOG("%s(%s, %p)\n", FN_NAME, TRP_EVENODD(evenOdd), (void *)info);
1420 rv = grTexTextureMemRequired(evenOdd, info);
1421 TRAP_LOG(GOT "%lu\n", rv);
1422 return rv;
1423 #undef FN_NAME
1424 }
1425
1426 FxU32 FX_CALL trap_grTexMinAddress (GrChipID_t tmu)
1427 {
1428 #define FN_NAME "grTexMinAddress"
1429 FxU32 rv;
1430 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_TMU(tmu));
1431 rv = grTexMinAddress(tmu);
1432 TRAP_LOG(GOT "%lu\n", rv);
1433 return rv;
1434 #undef FN_NAME
1435 }
1436
1437 FxU32 FX_CALL trap_grTexMaxAddress (GrChipID_t tmu)
1438 {
1439 #define FN_NAME "grTexMaxAddress"
1440 FxU32 rv;
1441 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_TMU(tmu));
1442 rv = grTexMaxAddress(tmu);
1443 TRAP_LOG(GOT "%lu\n", rv);
1444 return rv;
1445 #undef FN_NAME
1446 }
1447
1448 void FX_CALL trap_grTexNCCTable (GrNCCTable_t table)
1449 {
1450 #define FN_NAME "grTexNCCTable"
1451 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_NCC(table));
1452 grTexNCCTable(table);
1453 #undef FN_NAME
1454 }
1455
1456 void FX_CALL trap_grTexSource (GrChipID_t tmu,
1457 FxU32 startAddress,
1458 FxU32 evenOdd,
1459 GrTexInfo *info)
1460 {
1461 #define FN_NAME "grTexSource"
1462 TRAP_LOG("%s(%s, %08lx, %s, %p)\n", FN_NAME, TRP_TMU(tmu), startAddress, TRP_EVENODD(evenOdd), (void *)info);
1463 grTexSource(tmu, startAddress, evenOdd, info);
1464 #undef FN_NAME
1465 }
1466
1467 void FX_CALL trap_grTexClampMode (GrChipID_t tmu,
1468 GrTextureClampMode_t s_clampmode,
1469 GrTextureClampMode_t t_clampmode)
1470 {
1471 #define FN_NAME "grTexClampMode"
1472 TRAP_LOG("%s(%s, %s, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_CLAMPMODE(s_clampmode), TRP_CLAMPMODE(t_clampmode));
1473 grTexClampMode(tmu, s_clampmode, t_clampmode);
1474 #undef FN_NAME
1475 }
1476
1477 void FX_CALL trap_grTexCombine (GrChipID_t tmu,
1478 GrCombineFunction_t rgb_function,
1479 GrCombineFactor_t rgb_factor,
1480 GrCombineFunction_t alpha_function,
1481 GrCombineFactor_t alpha_factor,
1482 FxBool rgb_invert,
1483 FxBool alpha_invert)
1484 {
1485 #define FN_NAME "grTexCombine"
1486 TRAP_LOG("%s(%s, %s, %s, %s, %s, %s, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_CMBFUNC(rgb_function), TRP_CMBFACT(rgb_factor), TRP_CMBFUNC(alpha_function), TRP_CMBFACT(alpha_factor), TRP_BOOL(rgb_invert), TRP_BOOL(alpha_invert));
1487 grTexCombine(tmu, rgb_function, rgb_factor, alpha_function, alpha_factor, rgb_invert, alpha_invert);
1488 #undef FN_NAME
1489 }
1490
1491 void FX_CALL trap_grTexDetailControl (GrChipID_t tmu,
1492 int lod_bias,
1493 FxU8 detail_scale,
1494 float detail_max)
1495 {
1496 #define FN_NAME "grTexDetailControl"
1497 TRAP_LOG("%s(%s, %u, %d, %f)\n", FN_NAME, TRP_TMU(tmu), lod_bias, detail_scale, detail_max);
1498 grTexDetailControl(tmu, lod_bias, detail_scale, detail_max);
1499 #undef FN_NAME
1500 }
1501
1502 void FX_CALL trap_grTexFilterMode (GrChipID_t tmu,
1503 GrTextureFilterMode_t minfilter_mode,
1504 GrTextureFilterMode_t magfilter_mode)
1505 {
1506 #define FN_NAME "grTexFilterMode"
1507 TRAP_LOG("%s(%s, %s, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_TEXFILTER(minfilter_mode), TRP_TEXFILTER(magfilter_mode));
1508 grTexFilterMode(tmu, minfilter_mode, magfilter_mode);
1509 #undef FN_NAME
1510 }
1511
1512 void FX_CALL trap_grTexLodBiasValue (GrChipID_t tmu,
1513 float bias)
1514 {
1515 #define FN_NAME "grTexLodBiasValue"
1516 TRAP_LOG("%s(%s, %f)\n", FN_NAME, TRP_TMU(tmu), bias);
1517 grTexLodBiasValue(tmu, bias);
1518 #undef FN_NAME
1519 }
1520
1521 void FX_CALL trap_grTexDownloadMipMap (GrChipID_t tmu,
1522 FxU32 startAddress,
1523 FxU32 evenOdd,
1524 GrTexInfo *info)
1525 {
1526 #define FN_NAME "grTexDownloadMipMap"
1527 TRAP_LOG("%s(%s, %08lx, %s, %p)\n", FN_NAME, TRP_TMU(tmu), startAddress, TRP_EVENODD(evenOdd), (void *)info);
1528 grTexDownloadMipMap(tmu, startAddress, evenOdd, info);
1529 #undef FN_NAME
1530 }
1531
1532 void FX_CALL trap_grTexDownloadMipMapLevel (GrChipID_t tmu,
1533 FxU32 startAddress,
1534 GrLOD_t thisLod,
1535 GrLOD_t largeLod,
1536 GrAspectRatio_t aspectRatio,
1537 GrTextureFormat_t format,
1538 FxU32 evenOdd,
1539 void *data)
1540 {
1541 #define FN_NAME "grTexDownloadMipMapLevel"
1542 TRAP_LOG("%s(%s, %08lx, %s, %s, %s, %s, %s, %p)\n", FN_NAME, TRP_TMU(tmu), startAddress, TRP_LODLEVEL(thisLod), TRP_LODLEVEL(largeLod), TRP_ASPECTRATIO(aspectRatio), TRP_TEXFMT(format), TRP_EVENODD(evenOdd), data);
1543 grTexDownloadMipMapLevel(tmu, startAddress, thisLod, largeLod, aspectRatio, format, evenOdd, data);
1544 #undef FN_NAME
1545 }
1546
1547 FxBool FX_CALL trap_grTexDownloadMipMapLevelPartial (GrChipID_t tmu,
1548 FxU32 startAddress,
1549 GrLOD_t thisLod,
1550 GrLOD_t largeLod,
1551 GrAspectRatio_t aspectRatio,
1552 GrTextureFormat_t format,
1553 FxU32 evenOdd,
1554 void *data,
1555 int start,
1556 int end)
1557 {
1558 #define FN_NAME "grTexDownloadMipMapLevelPartial"
1559 FxBool rv;
1560 TRAP_LOG("%s(%s, %08lx, %s, %s, %s, %s, %s, %p, %d, %d)\n", FN_NAME, TRP_TMU(tmu), startAddress, TRP_LODLEVEL(thisLod), TRP_LODLEVEL(largeLod), TRP_ASPECTRATIO(aspectRatio), TRP_TEXFMT(format), TRP_EVENODD(evenOdd), data, start, end);
1561 rv = grTexDownloadMipMapLevelPartial(tmu, startAddress, thisLod, largeLod, aspectRatio, format, evenOdd, data, start, end);
1562 TRAP_LOG(GOT "%s\n", TRP_BOOL(rv));
1563 return rv;
1564 #undef FN_NAME
1565 }
1566
1567 void FX_CALL trap_grTexDownloadTable (GrTexTable_t type,
1568 void *data)
1569 {
1570 #define FN_NAME "grTexDownloadTable"
1571 TRAP_LOG("%s(%s, %p)\n", FN_NAME, TRP_TABLE(type), data);
1572 grTexDownloadTable(type, data);
1573 #undef FN_NAME
1574 }
1575
1576 void FX_CALL trap_grTexDownloadTablePartial (GrTexTable_t type,
1577 void *data,
1578 int start,
1579 int end)
1580 {
1581 #define FN_NAME "grTexDownloadTablePartial"
1582 TRAP_LOG("%s(%s, %p, %d, %d)\n", FN_NAME, TRP_TABLE(type), data, start, end);
1583 grTexDownloadTablePartial(type, data, start, end);
1584 #undef FN_NAME
1585 }
1586
1587 void FX_CALL trap_grTexMipMapMode (GrChipID_t tmu,
1588 GrMipMapMode_t mode,
1589 FxBool lodBlend)
1590 {
1591 #define FN_NAME "grTexMipMapMode"
1592 TRAP_LOG("%s(%s, %s, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_MIPMODE(mode), TRP_BOOL(lodBlend));
1593 grTexMipMapMode(tmu, mode, lodBlend);
1594 #undef FN_NAME
1595 }
1596
1597 void FX_CALL trap_grTexMultibase (GrChipID_t tmu,
1598 FxBool enable)
1599 {
1600 #define FN_NAME "grTexMultibase"
1601 TRAP_LOG("%s(%s, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_BOOL(enable));
1602 grTexMultibase(tmu, enable);
1603 #undef FN_NAME
1604 }
1605
1606 void FX_CALL trap_grTexMultibaseAddress (GrChipID_t tmu,
1607 GrTexBaseRange_t range,
1608 FxU32 startAddress,
1609 FxU32 evenOdd,
1610 GrTexInfo *info)
1611 {
1612 #define FN_NAME "grTexMultibaseAddress"
1613 TRAP_LOG("%s(%s, %s, %08lx, %s, %p)\n", FN_NAME, TRP_TMU(tmu), TRP_TEXBASERANGE(range), startAddress, TRP_EVENODD(evenOdd), (void *)info);
1614 grTexMultibaseAddress(tmu, range, startAddress, evenOdd, info);
1615 #undef FN_NAME
1616 }
1617
1618 /*
1619 ** linear frame buffer functions
1620 */
1621 FxBool FX_CALL trap_grLfbLock (GrLock_t type,
1622 GrBuffer_t buffer,
1623 GrLfbWriteMode_t writeMode,
1624 GrOriginLocation_t origin,
1625 FxBool pixelPipeline,
1626 GrLfbInfo_t *info)
1627 {
1628 #define FN_NAME "grLfbLock"
1629 FxBool rv;
1630 TRAP_LOG("%s(%s, %s, %s, %s, %s, %p)\n", FN_NAME, TRP_LOCKTYPE(type), TRP_BUFFER(buffer), TRP_WRITEMODE(writeMode), TRP_ORIGIN(origin), TRP_BOOL(pixelPipeline), (void *)info);
1631 rv = grLfbLock(type, buffer, writeMode, origin, pixelPipeline, info);
1632 TRAP_LOG(GOT "%s\n", TRP_BOOL(rv));
1633 return rv;
1634 #undef FN_NAME
1635 }
1636
1637 FxBool FX_CALL trap_grLfbUnlock (GrLock_t type,
1638 GrBuffer_t buffer)
1639 {
1640 #define FN_NAME "grLfbUnlock"
1641 FxBool rv;
1642 TRAP_LOG("%s(%s, %s)\n", FN_NAME, TRP_LOCKTYPE(type), TRP_BUFFER(buffer));
1643 rv = grLfbUnlock(type, buffer);
1644 TRAP_LOG(GOT "%s\n", TRP_BOOL(rv));
1645 return rv;
1646 #undef FN_NAME
1647 }
1648
1649 void FX_CALL trap_grLfbConstantAlpha (GrAlpha_t alpha)
1650 {
1651 #define FN_NAME "grLfbConstantAlpha"
1652 TRAP_LOG("%s(%02x)\n", FN_NAME, alpha);
1653 grLfbConstantAlpha(alpha);
1654 #undef FN_NAME
1655 }
1656
1657 void FX_CALL trap_grLfbConstantDepth (FxU32 depth)
1658 {
1659 #define FN_NAME "grLfbConstantDepth"
1660 TRAP_LOG("%s(%08lx)\n", FN_NAME, depth);
1661 grLfbConstantDepth(depth);
1662 #undef FN_NAME
1663 }
1664
1665 void FX_CALL trap_grLfbWriteColorSwizzle (FxBool swizzleBytes,
1666 FxBool swapWords)
1667 {
1668 #define FN_NAME "grLfbWriteColorSwizzle"
1669 TRAP_LOG("%s(%s, %s)\n", FN_NAME, TRP_BOOL(swizzleBytes), TRP_BOOL(swapWords));
1670 grLfbWriteColorSwizzle(swizzleBytes, swapWords);
1671 #undef FN_NAME
1672 }
1673
1674 void FX_CALL trap_grLfbWriteColorFormat (GrColorFormat_t colorFormat)
1675 {
1676 #define FN_NAME "grLfbWriteColorFormat"
1677 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_COLFMT(colorFormat));
1678 grLfbWriteColorFormat(colorFormat);
1679 #undef FN_NAME
1680 }
1681
1682 FxBool FX_CALL trap_grLfbWriteRegion (GrBuffer_t dst_buffer,
1683 FxU32 dst_x,
1684 FxU32 dst_y,
1685 GrLfbSrcFmt_t src_format,
1686 FxU32 src_width,
1687 FxU32 src_height,
1688 FxBool pixelPipeline,
1689 FxI32 src_stride,
1690 void *src_data)
1691 {
1692 #define FN_NAME "grLfbWriteRegion"
1693 FxBool rv;
1694 TRAP_LOG("%s(%s, %lu, %lu, %s, %lu, %lu, %s, %ld, %p)\n", FN_NAME, TRP_BUFFER(dst_buffer), dst_x, dst_y, TRP_SRCFMT(src_format), src_width, src_height, TRP_BOOL(pixelPipeline), src_stride, src_data);
1695 rv = grLfbWriteRegion(dst_buffer, dst_x, dst_y, src_format, src_width, src_height, pixelPipeline, src_stride, src_data);
1696 TRAP_LOG(GOT "%s\n", TRP_BOOL(rv));
1697 return rv;
1698 #undef FN_NAME
1699 }
1700
1701 FxBool FX_CALL trap_grLfbReadRegion (GrBuffer_t src_buffer,
1702 FxU32 src_x,
1703 FxU32 src_y,
1704 FxU32 src_width,
1705 FxU32 src_height,
1706 FxU32 dst_stride,
1707 void *dst_data)
1708 {
1709 #define FN_NAME "grLfbReadRegion"
1710 FxBool rv;
1711 TRAP_LOG("%s(%s, %lu, %lu, %lu, %lu, %ld, %p)\n", FN_NAME, TRP_BUFFER(src_buffer), src_x, src_y, src_width, src_height, dst_stride, dst_data);
1712 rv = grLfbReadRegion(src_buffer, src_x, src_y, src_width, src_height, dst_stride, dst_data);
1713 TRAP_LOG(GOT "%s\n", TRP_BOOL(rv));
1714 return rv;
1715 #undef FN_NAME
1716 }
1717
1718 /*
1719 ** glide management functions
1720 */
1721 void FX_CALL trap_grGlideInit (void)
1722 {
1723 #define FN_NAME "grGlideInit"
1724 TRAP_LOG("%s()\n", FN_NAME);
1725 grGlideInit();
1726 #undef FN_NAME
1727 }
1728
1729 void FX_CALL trap_grGlideShutdown (void)
1730 {
1731 #define FN_NAME "grGlideShutdown"
1732 TRAP_LOG("%s()\n", FN_NAME);
1733 grGlideShutdown();
1734 #undef FN_NAME
1735 }
1736
1737 void FX_CALL trap_grGlideGetState (void *state)
1738 {
1739 #define FN_NAME "grGlideGetState"
1740 TRAP_LOG("%s(%p)\n", FN_NAME, state);
1741 grGlideGetState(state);
1742 #undef FN_NAME
1743 }
1744
1745 void FX_CALL trap_grGlideSetState (const void *state)
1746 {
1747 #define FN_NAME "grGlideSetState"
1748 TRAP_LOG("%s(%p)\n", FN_NAME, state);
1749 grGlideSetState(state);
1750 #undef FN_NAME
1751 }
1752
1753 void FX_CALL trap_grGlideGetVertexLayout (void *layout)
1754 {
1755 #define FN_NAME "grGlideGetVertexLayout"
1756 TRAP_LOG("%s(%p)\n", FN_NAME, layout);
1757 grGlideGetVertexLayout(layout);
1758 #undef FN_NAME
1759 }
1760
1761 void FX_CALL trap_grGlideSetVertexLayout (const void *layout)
1762 {
1763 #define FN_NAME "grGlideSetVertexLayout"
1764 TRAP_LOG("%s(%p)\n", FN_NAME, layout);
1765 grGlideSetVertexLayout(layout);
1766 #undef FN_NAME
1767 }
1768
1769 /*
1770 ** glide utility functions
1771 */
1772 void FX_CALL trap_guGammaCorrectionRGB (FxFloat red,
1773 FxFloat green,
1774 FxFloat blue)
1775 {
1776 #define FN_NAME "guGammaCorrectionRGB"
1777 TRAP_LOG("%s(%f, %f, %f)\n", FN_NAME, red, green, blue);
1778 guGammaCorrectionRGB(red, green, blue);
1779 #undef FN_NAME
1780 }
1781
1782 float FX_CALL trap_guFogTableIndexToW (int i)
1783 {
1784 #define FN_NAME "guFogTableIndexToW"
1785 float rv;
1786 TRAP_LOG("%s(%d)\n", FN_NAME, i);
1787 rv = guFogTableIndexToW(i);
1788 TRAP_LOG(GOT "%f\n", rv);
1789 return rv;
1790 #undef FN_NAME
1791 }
1792
1793 void FX_CALL trap_guFogGenerateExp (GrFog_t *fogtable,
1794 float density)
1795 {
1796 #define FN_NAME "guFogGenerateExp"
1797 TRAP_LOG("%s(%p, %f)\n", FN_NAME, fogtable, density);
1798 guFogGenerateExp(fogtable, density);
1799 #undef FN_NAME
1800 }
1801
1802 void FX_CALL trap_guFogGenerateExp2 (GrFog_t *fogtable,
1803 float density)
1804 {
1805 #define FN_NAME "guFogGenerateExp2"
1806 TRAP_LOG("%s(%p, %f)\n", FN_NAME, fogtable, density);
1807 guFogGenerateExp2(fogtable, density);
1808 #undef FN_NAME
1809 }
1810
1811 void FX_CALL trap_guFogGenerateLinear (GrFog_t *fogtable,
1812 float nearZ,
1813 float farZ)
1814 {
1815 #define FN_NAME "guFogGenerateLinear"
1816 TRAP_LOG("%s(%p, %f, %f)\n", FN_NAME, fogtable, nearZ, farZ);
1817 guFogGenerateLinear(fogtable, nearZ, farZ);
1818 #undef FN_NAME
1819 }
1820
1821 /*
1822 ** glide extensions
1823 */
1824 char *FX_CALL trap_grGetRegistryOrEnvironmentStringExt (char *theEntry)
1825 {
1826 #define FN_NAME "grGetRegistryOrEnvironmentStringExt"
1827 char *rv;
1828 TRAP_LOG("%s(\"%s\")\n", FN_NAME, theEntry);
1829 assert(real_grGetRegistryOrEnvironmentStringExt);
1830 rv = (*real_grGetRegistryOrEnvironmentStringExt)(theEntry);
1831 if (rv) {
1832 TRAP_LOG(GOT "\"%s\"\n", rv);
1833 } else {
1834 TRAP_LOG(GOT "NULL\n");
1835 }
1836 return rv;
1837 #undef FN_NAME
1838 }
1839
1840 void FX_CALL trap_grGetGammaTableExt (FxU32 nentries,
1841 FxU32 *red,
1842 FxU32 *green,
1843 FxU32 *blue)
1844 {
1845 #define FN_NAME "grGetGammaTableExt"
1846 TRAP_LOG("%s(%lu, %p, %p, %p)\n", FN_NAME, nentries, (void *)red, (void *)green, (void *)blue);
1847 assert(real_grGetGammaTableExt);
1848 (*real_grGetGammaTableExt)(nentries, red, green, blue);
1849 #undef FN_NAME
1850 }
1851
1852 void FX_CALL trap_grChromaRangeModeExt (GrChromakeyMode_t mode)
1853 {
1854 #define FN_NAME "grChromaRangeModeExt"
1855 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_CKMODE(mode));
1856 assert(real_grChromaRangeModeExt);
1857 (*real_grChromaRangeModeExt)(mode);
1858 #undef FN_NAME
1859 }
1860
1861 void FX_CALL trap_grChromaRangeExt (GrColor_t color,
1862 GrColor_t range,
1863 GrChromaRangeMode_t match_mode)
1864 {
1865 #define FN_NAME "grChromaRangeExt"
1866 TRAP_LOG("%s(%08lx, %08lx, %s)\n", FN_NAME, color, range, TRP_CRMODE(match_mode));
1867 assert(real_grChromaRangeExt);
1868 (*real_grChromaRangeExt)(color, range, match_mode);
1869 #undef FN_NAME
1870 }
1871
1872 void FX_CALL trap_grTexChromaModeExt (GrChipID_t tmu,
1873 GrChromakeyMode_t mode)
1874 {
1875 #define FN_NAME "grTexChromaModeExt"
1876 TRAP_LOG("%s(%s, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_CKMODE(mode));
1877 assert(real_grTexChromaModeExt);
1878 (*real_grTexChromaModeExt)(tmu, mode);
1879 #undef FN_NAME
1880 }
1881
1882 void FX_CALL trap_grTexChromaRangeExt (GrChipID_t tmu,
1883 GrColor_t min,
1884 GrColor_t max,
1885 GrTexChromakeyMode_t mode)
1886 {
1887 #define FN_NAME "grTexChromaRangeExt"
1888 TRAP_LOG("%s(%s, %08lx, %08lx, %s)\n", FN_NAME, TRP_TMU(tmu), min, max, TRP_CRMODE(mode));
1889 assert(real_grTexChromaRangeExt);
1890 (*real_grTexChromaRangeExt)(tmu, min, max, mode);
1891 #undef FN_NAME
1892 }
1893
1894 /* pointcast */
1895 void FX_CALL trap_grTexDownloadTableExt (GrChipID_t tmu,
1896 GrTexTable_t type,
1897 void *data)
1898 {
1899 #define FN_NAME "grTexDownloadTableExt"
1900 TRAP_LOG("%s(%s, %s, %p)\n", FN_NAME, TRP_TMU(tmu), TRP_TABLE(type), data);
1901 assert(real_grTexDownloadTableExt);
1902 (*real_grTexDownloadTableExt)(tmu, type, data);
1903 #undef FN_NAME
1904 }
1905
1906 void FX_CALL trap_grTexDownloadTablePartialExt (GrChipID_t tmu,
1907 GrTexTable_t type,
1908 void *data,
1909 int start,
1910 int end)
1911 {
1912 #define FN_NAME "grTexDownloadTablePartialExt"
1913 TRAP_LOG("%s(%s, %s, %p, %d, %d)\n", FN_NAME, TRP_TMU(tmu), TRP_TABLE(type), data, start, end);
1914 assert(real_grTexDownloadTablePartialExt);
1915 (*real_grTexDownloadTablePartialExt)(tmu, type, data, start, end);
1916 #undef FN_NAME
1917 }
1918
1919 void FX_CALL trap_grTexNCCTableExt (GrChipID_t tmu,
1920 GrNCCTable_t table)
1921 {
1922 #define FN_NAME "grTexNCCTableExt"
1923 TRAP_LOG("%s(%s, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_NCC(table));
1924 assert(real_grTexNCCTableExt);
1925 (*real_grTexNCCTableExt)(tmu, table);
1926 #undef FN_NAME
1927 }
1928
1929 /* tbext */
1930 void FX_CALL trap_grTextureBufferExt (GrChipID_t tmu,
1931 FxU32 startAddress,
1932 GrLOD_t thisLOD,
1933 GrLOD_t largeLOD,
1934 GrAspectRatio_t aspectRatio,
1935 GrTextureFormat_t format,
1936 FxU32 odd_even_mask)
1937 {
1938 #define FN_NAME "grTextureBufferExt"
1939 TRAP_LOG("%s(%s, %08lx, %s, %s, %s, %s, %s)\n", FN_NAME, TRP_TMU(tmu), startAddress, TRP_LODLEVEL(thisLOD), TRP_LODLEVEL(largeLOD), TRP_ASPECTRATIO(aspectRatio), TRP_TEXFMT(format), TRP_EVENODD(odd_even_mask));
1940 assert(real_grTextureBufferExt);
1941 (*real_grTextureBufferExt)(tmu, startAddress, thisLOD, largeLOD, aspectRatio, format, odd_even_mask);
1942 #undef FN_NAME
1943 }
1944
1945 void FX_CALL trap_grTextureAuxBufferExt (GrChipID_t tmu,
1946 FxU32 startAddress,
1947 GrLOD_t thisLOD,
1948 GrLOD_t largeLOD,
1949 GrAspectRatio_t aspectRatio,
1950 GrTextureFormat_t format,
1951 FxU32 odd_even_mask)
1952 {
1953 #define FN_NAME "grTextureAuxBufferExt"
1954 TRAP_LOG("%s(%s, %08lx, %s, %s, %s, %s, %s)\n", FN_NAME, TRP_TMU(tmu), startAddress, TRP_LODLEVEL(thisLOD), TRP_LODLEVEL(largeLOD), TRP_ASPECTRATIO(aspectRatio), TRP_TEXFMT(format), TRP_EVENODD(odd_even_mask));
1955 assert(real_grTextureAuxBufferExt);
1956 (*real_grTextureAuxBufferExt)(tmu, startAddress, thisLOD, largeLOD, aspectRatio, format, odd_even_mask);
1957 #undef FN_NAME
1958 }
1959
1960 void FX_CALL trap_grAuxBufferExt (GrBuffer_t buffer)
1961 {
1962 #define FN_NAME "grAuxBufferExt"
1963 TRAP_LOG("%s(%s)\n", FN_NAME, TRP_BUFFER(buffer));
1964 assert(real_grAuxBufferExt);
1965 (*real_grAuxBufferExt)(buffer);
1966 #undef FN_NAME
1967 }
1968
1969 /* napalm */
1970 GrContext_t FX_CALL trap_grSstWinOpenExt (FxU32 hWnd,
1971 GrScreenResolution_t resolution,
1972 GrScreenRefresh_t refresh,
1973 GrColorFormat_t format,
1974 GrOriginLocation_t origin,
1975 GrPixelFormat_t pixelformat,
1976 int nColBuffers,
1977 int nAuxBuffers)
1978 {
1979 #define FN_NAME "grSstWinOpenExt"
1980 GrContext_t rv;
1981 TRAP_LOG("%s(%08lx, %s, %s, %s, %s, %s, %d, %d)\n", FN_NAME, hWnd, TRP_RESOLUTION(resolution), TRP_REFRESH(refresh), TRP_COLFMT(format), TRP_ORIGIN(origin), TRP_PIXFMT(pixelformat), nColBuffers, nAuxBuffers);
1982 assert(real_grSstWinOpenExt);
1983 rv = (*real_grSstWinOpenExt)(hWnd, resolution, refresh, format, origin, pixelformat, nColBuffers, nAuxBuffers);
1984 TRAP_LOG(GOT "%p\n", (void *)rv);
1985 return rv;
1986 #undef FN_NAME
1987 }
1988
1989 void FX_CALL trap_grStencilFuncExt (GrCmpFnc_t fnc,
1990 GrStencil_t ref,
1991 GrStencil_t mask)
1992 {
1993 #define FN_NAME "grStencilFuncExt"
1994 TRAP_LOG("%s(%s, %02x, %02x)\n", FN_NAME, TRP_CMPFUNC(fnc), ref, mask);
1995 assert(real_grStencilFuncExt);
1996 (*real_grStencilFuncExt)(fnc, ref, mask);
1997 #undef FN_NAME
1998 }
1999
2000 void FX_CALL trap_grStencilMaskExt (GrStencil_t value)
2001 {
2002 #define FN_NAME "grStencilMaskExt"
2003 TRAP_LOG("%s(%02x)\n", FN_NAME, value);
2004 assert(real_grStencilMaskExt);
2005 (*real_grStencilMaskExt)(value);
2006 #undef FN_NAME
2007 }
2008
2009 void FX_CALL trap_grStencilOpExt (GrStencilOp_t stencil_fail,
2010 GrStencilOp_t depth_fail,
2011 GrStencilOp_t depth_pass)
2012 {
2013 #define FN_NAME "grStencilOpExt"
2014 TRAP_LOG("%s(%s, %s, %s)\n", FN_NAME, TRP_STENCILOP(stencil_fail), TRP_STENCILOP(depth_fail), TRP_STENCILOP(depth_pass));
2015 assert(real_grStencilOpExt);
2016 (*real_grStencilOpExt)(stencil_fail, depth_fail, depth_pass);
2017 #undef FN_NAME
2018 }
2019
2020 void FX_CALL trap_grLfbConstantStencilExt (GrStencil_t value)
2021 {
2022 #define FN_NAME "grLfbConstantStencilExt"
2023 TRAP_LOG("%s(%02x)\n", FN_NAME, value);
2024 assert(real_grLfbConstantStencilExt);
2025 (*real_grLfbConstantStencilExt)(value);
2026 #undef FN_NAME
2027 }
2028
2029 void FX_CALL trap_grBufferClearExt (GrColor_t color,
2030 GrAlpha_t alpha,
2031 FxU32 depth,
2032 GrStencil_t stencil)
2033 {
2034 #define FN_NAME "grBufferClearExt"
2035 TRAP_LOG("%s(%08lx, %02x, %08lx, %02x)\n", FN_NAME, color, alpha, depth, stencil);
2036 assert(real_grBufferClearExt);
2037 (*real_grBufferClearExt)(color, alpha, depth, stencil);
2038 #undef FN_NAME
2039 }
2040
2041 void FX_CALL trap_grColorCombineExt (GrCCUColor_t a,
2042 GrCombineMode_t a_mode,
2043 GrCCUColor_t b,
2044 GrCombineMode_t b_mode,
2045 GrCCUColor_t c,
2046 FxBool c_invert,
2047 GrCCUColor_t d,
2048 FxBool d_invert,
2049 FxU32 shift,
2050 FxBool invert)
2051 {
2052 #define FN_NAME "grColorCombineExt"
2053 TRAP_LOG("%s(%s, %s, %s, %s, %s, %s, %s, %s, %lu, %s)\n", FN_NAME, TRP_CU(a), TRP_CMBMODE(a_mode), TRP_CU(b), TRP_CMBMODE(b_mode), TRP_CU(c), TRP_BOOL(c_invert), TRP_CU(d), TRP_BOOL(d_invert), shift, TRP_BOOL(invert));
2054 assert(real_grColorCombineExt);
2055 (*real_grColorCombineExt)(a, a_mode, b, b_mode, c, c_invert, d, d_invert, shift, invert);
2056 #undef FN_NAME
2057 }
2058
2059 void FX_CALL trap_grAlphaCombineExt (GrACUColor_t a,
2060 GrCombineMode_t a_mode,
2061 GrACUColor_t b,
2062 GrCombineMode_t b_mode,
2063 GrACUColor_t c,
2064 FxBool c_invert,
2065 GrACUColor_t d,
2066 FxBool d_invert,
2067 FxU32 shift,
2068 FxBool invert)
2069 {
2070 #define FN_NAME "grAlphaCombineExt"
2071 TRAP_LOG("%s(%s, %s, %s, %s, %s, %s, %s, %s, %lu, %s)\n", FN_NAME, TRP_CU(a), TRP_CMBMODE(a_mode), TRP_CU(b), TRP_CMBMODE(b_mode), TRP_CU(c), TRP_BOOL(c_invert), TRP_CU(d), TRP_BOOL(d_invert), shift, TRP_BOOL(invert));
2072 assert(real_grAlphaCombineExt);
2073 (*real_grAlphaCombineExt)(a, a_mode, b, b_mode, c, c_invert, d, d_invert, shift, invert);
2074 #undef FN_NAME
2075 }
2076
2077 void FX_CALL trap_grTexColorCombineExt (GrChipID_t tmu,
2078 GrTCCUColor_t a,
2079 GrCombineMode_t a_mode,
2080 GrTCCUColor_t b,
2081 GrCombineMode_t b_mode,
2082 GrTCCUColor_t c,
2083 FxBool c_invert,
2084 GrTCCUColor_t d,
2085 FxBool d_invert,
2086 FxU32 shift,
2087 FxBool invert)
2088 {
2089 #define FN_NAME "grTexColorCombineExt"
2090 TRAP_LOG("%s(%s, %s, %s, %s, %s, %s, %s, %s, %s, %lu, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_CU(a), TRP_CMBMODE(a_mode), TRP_CU(b), TRP_CMBMODE(b_mode), TRP_CU(c), TRP_BOOL(c_invert), TRP_CU(d), TRP_BOOL(d_invert), shift, TRP_BOOL(invert));
2091 assert(real_grTexColorCombineExt);
2092 (*real_grTexColorCombineExt)(tmu, a, a_mode, b, b_mode, c, c_invert, d, d_invert, shift, invert);
2093 #undef FN_NAME
2094 }
2095
2096 void FX_CALL trap_grTexAlphaCombineExt (GrChipID_t tmu,
2097 GrTACUColor_t a,
2098 GrCombineMode_t a_mode,
2099 GrTACUColor_t b,
2100 GrCombineMode_t b_mode,
2101 GrTACUColor_t c,
2102 FxBool c_invert,
2103 GrTACUColor_t d,
2104 FxBool d_invert,
2105 FxU32 shift,
2106 FxBool invert)
2107 {
2108 #define FN_NAME "grTexAlphaCombineExt"
2109 TRAP_LOG("%s(%s, %s, %s, %s, %s, %s, %s, %s, %s, %lu, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_CU(a), TRP_CMBMODE(a_mode), TRP_CU(b), TRP_CMBMODE(b_mode), TRP_CU(c), TRP_BOOL(c_invert), TRP_CU(d), TRP_BOOL(d_invert), shift, TRP_BOOL(invert));
2110 assert(real_grTexAlphaCombineExt);
2111 (*real_grTexAlphaCombineExt)(tmu, a, a_mode, b, b_mode, c, c_invert, d, d_invert, shift, invert);
2112 #undef FN_NAME
2113 }
2114
2115 void FX_CALL trap_grConstantColorValueExt (GrChipID_t tmu,
2116 GrColor_t value)
2117 {
2118 #define FN_NAME "grConstantColorValueExt"
2119 TRAP_LOG("%s(%s, %08lx)\n", FN_NAME, TRP_TMU(tmu), value);
2120 assert(real_grConstantColorValueExt);
2121 (*real_grConstantColorValueExt)(tmu, value);
2122 #undef FN_NAME
2123 }
2124
2125 void FX_CALL trap_grColorMaskExt (FxBool r,
2126 FxBool g,
2127 FxBool b,
2128 FxBool a)
2129 {
2130 #define FN_NAME "grColorMaskExt"
2131 TRAP_LOG("%s(%s, %s, %s, %s)\n", FN_NAME, TRP_BOOL(r), TRP_BOOL(g), TRP_BOOL(b), TRP_BOOL(a));
2132 assert(real_grColorMaskExt);
2133 (*real_grColorMaskExt)(r, g, b, a);
2134 #undef FN_NAME
2135 }
2136
2137 void FX_CALL trap_grAlphaBlendFunctionExt (GrAlphaBlendFnc_t rgb_sf,
2138 GrAlphaBlendFnc_t rgb_df,
2139 GrAlphaBlendOp_t rgb_op,
2140 GrAlphaBlendFnc_t alpha_sf,
2141 GrAlphaBlendFnc_t alpha_df,
2142 GrAlphaBlendOp_t alpha_op)
2143 {
2144 #define FN_NAME "grAlphaBlendFunctionExt"
2145 TRAP_LOG("%s(%s, %s, %s, %s, %s, %s)\n", FN_NAME, TRP_BLEND(rgb_sf), TRP_BLEND(rgb_df), TRP_BLENDOP(rgb_op), TRP_BLEND(alpha_sf), TRP_BLEND(alpha_df), TRP_BLENDOP(alpha_op));
2146 assert(real_grAlphaBlendFunctionExt);
2147 (*real_grAlphaBlendFunctionExt)(rgb_sf, rgb_df, rgb_op, alpha_sf, alpha_df, alpha_op);
2148 #undef FN_NAME
2149 }
2150
2151 void FX_CALL trap_grTBufferWriteMaskExt (FxU32 tmask)
2152 {
2153 #define FN_NAME "grTBufferWriteMaskExt"
2154 TRAP_LOG("%s(%08lx)\n", FN_NAME, tmask);
2155 assert(real_grTBufferWriteMaskExt);
2156 (*real_grTBufferWriteMaskExt)(tmask);
2157 #undef FN_NAME
2158 }
2159
2160 /*
2161 ** texus functions
2162 */
2163 void FX_CALL trap_txImgQuantize (char *dst,
2164 char *src,
2165 int w,
2166 int h,
2167 FxU32 format,
2168 FxU32 dither)
2169 {
2170 #define FN_NAME "txImgQuantize"
2171 TRAP_LOG("%s(%p, %p, %d, %d, %s, %s)\n", FN_NAME, dst, src, w, h, TRP_TEXFMT(format), TRP_TXDITHER(dither));
2172 assert(real_txImgQuantize);
2173 (*real_txImgQuantize)(dst, src, w, h, format, dither);
2174 #undef FN_NAME
2175 }
2176
2177 void FX_CALL trap_txMipQuantize (TxMip *pxMip,
2178 TxMip *txMip,
2179 int fmt,
2180 FxU32 d,
2181 FxU32 comp)
2182 {
2183 #define FN_NAME "txMipQuantize"
2184 TRAP_LOG("%s(%p, %p, %s, %s, %s)\n", FN_NAME, (void *)pxMip, (void *)txMip, TRP_TEXFMT(fmt), TRP_TXDITHER(d), TRP_TXCOMPRESS(comp));
2185 assert(real_txMipQuantize);
2186 (*real_txMipQuantize)(pxMip, txMip, fmt, d, comp);
2187 #undef FN_NAME
2188 }
2189
2190 void FX_CALL trap_txPalToNcc (GuNccTable *ncc_table,
2191 const FxU32 *pal)
2192 {
2193 #define FN_NAME "txPalToNcc"
2194 TRAP_LOG("%s(%p, %p)\n", FN_NAME, (void *)ncc_table, (void *)pal);
2195 assert(real_txPalToNcc);
2196 (*real_txPalToNcc)(ncc_table, pal);
2197 #undef FN_NAME
2198 }
2199 #endif
2200
2201
2202
2203 /****************************************************************************\
2204 * housekeeping (fake pointers) *
2205 \****************************************************************************/
2206 char *FX_CALL fake_grGetRegistryOrEnvironmentStringExt (char *theEntry)
2207 {
2208 return getenv(theEntry);
2209 }
2210
2211 void FX_CALL fake_grTexDownloadTableExt (GrChipID_t tmu,
2212 GrTexTable_t type,
2213 void *data)
2214 {
2215 (void)tmu;
2216 grTexDownloadTable(type, data);
2217 }
2218
2219 void FX_CALL fake_grTexDownloadTablePartialExt (GrChipID_t tmu,
2220 GrTexTable_t type,
2221 void *data,
2222 int start,
2223 int end)
2224 {
2225 (void)tmu;
2226 grTexDownloadTablePartial(type, data, start, end);
2227 }
2228
2229 void FX_CALL fake_grTexNCCTableExt (GrChipID_t tmu,
2230 GrNCCTable_t table)
2231 {
2232 (void)tmu;
2233 grTexNCCTable(table);
2234 }
2235
2236
2237
2238 /****************************************************************************\
2239 * interface *
2240 \****************************************************************************/
2241 void tdfx_hook_glide (struct tdfx_glide *Glide)
2242 {
2243 #if DEBUG_TRAP
2244 #define GET_EXT_ADDR(name) *(GrProc *)&real_##name = grGetProcAddress(#name), Glide->name = trap_##name
2245 #define GET_EXT_FAKE(name) GET_EXT_ADDR(name); if (real_##name == NULL) real_##name = fake_##name
2246 #else /* DEBUG_TRAP */
2247 #define GET_EXT_ADDR(name) *(GrProc *)&Glide->name = grGetProcAddress(#name)
2248 #define GET_EXT_FAKE(name) GET_EXT_ADDR(name); if (Glide->name == NULL) Glide->name = fake_##name
2249 #endif /* DEBUG_TRAP */
2250
2251 /*
2252 ** glide extensions
2253 */
2254 GET_EXT_FAKE(grGetRegistryOrEnvironmentStringExt);
2255 GET_EXT_ADDR(grGetGammaTableExt);
2256 GET_EXT_ADDR(grChromaRangeModeExt);
2257 GET_EXT_ADDR(grChromaRangeExt);
2258 GET_EXT_ADDR(grTexChromaModeExt);
2259 GET_EXT_ADDR(grTexChromaRangeExt);
2260 /* pointcast */
2261 GET_EXT_FAKE(grTexDownloadTableExt);
2262 GET_EXT_FAKE(grTexDownloadTablePartialExt);
2263 GET_EXT_FAKE(grTexNCCTableExt);
2264 /* tbext */
2265 GET_EXT_ADDR(grTextureBufferExt);
2266 GET_EXT_ADDR(grTextureAuxBufferExt);
2267 GET_EXT_ADDR(grAuxBufferExt);
2268 /* napalm */
2269 GET_EXT_ADDR(grSstWinOpenExt);
2270 GET_EXT_ADDR(grStencilFuncExt);
2271 GET_EXT_ADDR(grStencilMaskExt);
2272 GET_EXT_ADDR(grStencilOpExt);
2273 GET_EXT_ADDR(grLfbConstantStencilExt);
2274 GET_EXT_ADDR(grBufferClearExt);
2275 GET_EXT_ADDR(grColorCombineExt);
2276 GET_EXT_ADDR(grAlphaCombineExt);
2277 GET_EXT_ADDR(grTexColorCombineExt);
2278 GET_EXT_ADDR(grTexAlphaCombineExt);
2279 GET_EXT_ADDR(grConstantColorValueExt);
2280 GET_EXT_ADDR(grColorMaskExt);
2281 GET_EXT_ADDR(grAlphaBlendFunctionExt);
2282 GET_EXT_ADDR(grTBufferWriteMaskExt);
2283
2284 /*
2285 ** texus
2286 */
2287 GET_EXT_ADDR(txImgQuantize);
2288 GET_EXT_ADDR(txMipQuantize);
2289 GET_EXT_ADDR(txPalToNcc);
2290
2291 #undef GET_EXT_ADDR
2292 }
2293
2294 #endif /* FX */