1 /*---------------------------------------------------------------------------* 2 Project: Dolphin GX library 3 File: GXEnum.h 4 5 Copyright 1998- 2002 Nintendo. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Log: GXEnum.h,v $ 14 Revision 1.2 2006/02/04 11:56:46 hashida 15 (none) 16 17 Revision 1.1.1.1 2005/12/29 06:53:28 hiratsu 18 Initial import. 19 20 Revision 1.1.1.1 2005/05/12 02:41:07 yasuh-to 21 Ported from dolphin source tree. 22 23 24 40 2002/12/06 9:28 Hirose 25 Added GX_TEV_KCSEL_n_8/GX_TEV_KASEL_n_8 (n=even). 26 27 39 2002/11/18 18:10 Hirose 28 Workaround for GXAbortFrame() problem with PE copyout. 29 30 38 2002/10/17 15:11 Hirose 31 Added new enums for orthographic fog support. 32 33 37 2002/07/24 9:06 Hirose 34 Resolved version conflicts. 35 36 36 2001/12/11 4:31p Carl 37 Fixed warning with GX_NO_LEGACY_HW1. 38 39 35 2001/11/27 2:39p Carl 40 Added GX_NO_LEGACY_HW1 conditional. 41 42 34 2001/7/12 6:07p Carl 43 Removed extra #ifdef's. 44 45 33 2001/05/10 9:43p Hirose 46 Added tag for each enum definition 47 48 32 2001/04/27 1:19p Carl 49 Changes for making DL context saving optional. 50 51 31 2001/04/09 3:43p Carl 52 Changed GXXFFlushVal keywords. 53 54 30 2001/04/04 3:28p Carl 55 Second round of XF flush fixes. 56 57 29 2001/03/16 7:22p Carl 58 Changes for XF flush. 59 60 28 2001/01/16 7:59p Carl 61 Added new CTF. 62 63 27 2000/11/08 6:48p Hirose 64 Fixed the enum value of GX_CC_KONST 65 66 26 2000/11/06 4:06p Carl 67 Added GXClipMode. 68 69 25 2000/11/02 4:37p Carl 70 Made Z16 tex fmt same value for both revs. 71 72 24 2000/11/02 3:22p Carl 73 Removed CCV bit from tex fmts. 74 75 23 2000/10/18 4:05p Carl 76 Latest round of HW2 modifications and minor updates. 77 78 22 2000/10/11 6:25p Carl 79 Made CCV, CTF, ZTF into visible symbols. 80 81 21 2000/10/03 7:55p Hirose 82 Update for HW2(Rev.B) GX API extensions 83 84 20 2000/08/29 3:21p Carl 85 allow perf counter api to work with draw sync callback [Rob] 86 87 88 19 2000/06/14 4:50p Carl 89 Removed inverted Z formats. 90 91 18 2000/06/08 1:58p Carl 92 Added GXAlphaReadMode. 93 94 17 2000/06/06 6:57p Alligator 95 added vcache mem and stall counters 96 97 16 2000/06/06 12:02p Alligator 98 made changes to perf counter api 99 100 15 2000/04/26 4:08p Alligator 101 Added GXCopyMode enumeration 102 103 14 2000/04/28 4:55p Carl 104 Fixed GX_MAX_VTXATTRFMTLIST_SZ. 105 106 13 2000/04/17 4:24p Alligator 107 integrate ArtX update. Perf monitor api and indirect texture api 108 added. Misc bug fixes. 109 110 12 2000/04/07 12:00p Alligator 111 made vtx attr list size smaller (remove index attributes from list) 112 113 11 2000/04/04 11:17a Alligator 114 moved constants from GXStruct.h to GXEnum.h since they are dependent on 115 enumerated values. 116 117 10 2000/04/26 5:39p Alligator 118 Latest integration with ArtX 119 120 9 2000/03/03 4:21p Alligator 121 integrate with ArtX source 122 123 8 2000/02/12 5:16p Alligator 124 Integrate ArtX source tree changes 125 126 7 2000/02/04 5:09p Alligator 127 added GX_TF_A8 type to texture formats. For tex copy from alpha 128 channel. 129 130 6 2000/02/01 7:22p Alligator 131 Second GX update from ArtX 132 133 5 2000/01/13 5:55p Alligator 134 integrate with ArtX GX library code 135 136 4 1999/12/08 4:55p Alligator 137 remove source alpha saturate blend source 138 139 3 1999/12/07 5:34p Hirose 140 added GXTexCacheSize 141 142 2 1999/12/07 2:16p Alligator 143 unlock 144 145 35 1999/11/15 5:56p Yasu 146 Fixed GXPrimitive enum 147 148 34 1999/11/11 6:17p Yasu 149 Delete GXTevSwap, not used anymore. 150 151 33 1999/11/05 6:49p Hirose 152 validated GX_AF_SPEC 153 154 32 1999/10/26 1:34p Alligator 155 change GXSetDefaultMatrix to GXSetDefaultMtx 156 157 31 1999/10/24 4:34p Yasu 158 Add GX_LIGHT_NULL as 0x00 159 160 30 1999/10/20 2:39p Yasu 161 Add TexMatrixIndex 162 163 29 1999/10/19 2:49p Alligator 164 165 28 1999/10/19 2:35p Alligator 166 added GX_VA_NBT for 9-element normal to vcd 167 168 27 1999/10/13 5:17p Alligator 169 added _NULL types to some enums 170 171 26 1999/10/06 10:38a Alligator 172 changed enums for compressed Z format 173 updated Init functions to make GX_ZC_LINEAR default 174 175 25 1999/10/04 6:47p Yasu 176 Rename -Sz to -Size 177 178 24 1999/10/04 12:44p Yasu 179 180 21 1999/09/30 10:59p Yasu 181 Add patch for renaming GXExtras.h temporary 182 183 20 1999/09/30 10:40p Yasu 184 Renamed some GX functions and enums 185 186 19 1999/09/30 4:50p Yasu 187 Return GX_TG_CLR* back to GX_TG_COLOR* 188 189 18 1999/09/30 4:26p Yasu 190 Change GX_TG_COLOR* to GX_TG_CLR* 191 192 17 1999/9/17 3:29p Hirose 193 corrected GX_TLUT_16k to GX_TLUT_16K 194 195 16 1999/09/09 1:20p Hirose 196 added GXSpotFn and GXDistAttnFn enums 197 198 15 1999/09/08 7:12p Yasu 199 Delete alias of enum GX_MAT_?x4 200 201 14 1999/09/03 2:44p Ryan 202 203 13 1999/09/02 3:18p Ryan 204 Made Frame Buffer Api changes 205 206 12 1999/09/01 3:17p Ryan 207 Added GXZTexOp enum and added three new TexFormats for Z textures 208 209 10 1999/08/28 12:10a Yasu 210 Change enum name GX_MAT_2x4/3x4 -> GX_MTX2x4/3x4 and 211 Swap values GX_MTX2x4 <--> GX_MTX3x4 212 213 9 1999/08/27 2:24p Yasu 214 Change enum GXBlendMode GX_CM_XXX -> GX_BM_XXX 215 216 8 1999/08/17 2:39p Alligator 217 changed the values of some enums to match hardware 218 219 7 1999/08/17 1:33p Alligator 220 added GXSetTexGenEnables function, modified GXTexCoordID enumeration for 221 bitwise OR of enables. 222 223 6 1999/08/17 12:02p Alligator 224 updated to reflect arbitrary tlut size 225 226 5 1999/08/12 2:29p Hirose 227 228 4 1999/08/05 11:17a Ryan 229 removed all Mac-only enums 230 231 3 1999/07/28 4:07p Alligator 232 update header files and emulator for hw changes 233 234 2 1999/07/23 12:30p Alligator 235 Fixed pnmtx index per vertex emulation 236 237 1 1999/07/14 4:20p Alligator 238 Split gx.h into individual header files for each major section of API 239 $NoKeywords: $ 240 *---------------------------------------------------------------------------*/ 241 242 #ifndef __GXENUM_H__ 243 #define __GXENUM_H__ 244 245 /********************************/ 246 #ifdef __cplusplus 247 extern "C" { 248 #endif 249 250 /********************************/ 251 #include <revolution/types.h> 252 253 /********************************/ 254 typedef u8 GXBool; 255 256 /********************************/ 257 #define GX_TRUE ((GXBool)1) 258 #define GX_FALSE ((GXBool)0) 259 #define GX_ENABLE ((GXBool)1) 260 #define GX_DISABLE ((GXBool)0) 261 262 /********************************/ 263 typedef enum _GXAttr 264 { 265 GX_VA_PNMTXIDX = 0, // position/normal matrix index 266 GX_VA_TEX0MTXIDX, // texture 0 matrix index 267 GX_VA_TEX1MTXIDX, // texture 1 matrix index 268 GX_VA_TEX2MTXIDX, // texture 2 matrix index 269 GX_VA_TEX3MTXIDX, // texture 3 matrix index 270 GX_VA_TEX4MTXIDX, // texture 4 matrix index 271 GX_VA_TEX5MTXIDX, // texture 5 matrix index 272 GX_VA_TEX6MTXIDX, // texture 6 matrix index 273 GX_VA_TEX7MTXIDX, // texture 7 matrix index 274 GX_VA_POS = 9, // position 275 GX_VA_NRM, // normal 276 GX_VA_CLR0, // color 0 277 GX_VA_CLR1, // color 1 278 GX_VA_TEX0, // input texture coordinate 0 279 GX_VA_TEX1, // input texture coordinate 1 280 GX_VA_TEX2, // input texture coordinate 2 281 GX_VA_TEX3, // input texture coordinate 3 282 GX_VA_TEX4, // input texture coordinate 4 283 GX_VA_TEX5, // input texture coordinate 5 284 GX_VA_TEX6, // input texture coordinate 6 285 GX_VA_TEX7, // input texture coordinate 7 286 287 GX_POS_MTX_ARRAY, // position matrix array pointer 288 GX_NRM_MTX_ARRAY, // normal matrix array pointer 289 GX_TEX_MTX_ARRAY, // texture matrix array pointer 290 GX_LIGHT_ARRAY, // light parameter array pointer 291 GX_VA_NBT, // normal, bi-normal, tangent 292 GX_VA_MAX_ATTR, // maximum number of vertex attributes 293 294 GX_VA_NULL = 0xff // NULL attribute (to mark end of lists) 295 296 } GXAttr; 297 298 #define GX_MAX_VTXDESC GX_VA_MAX_ATTR 299 #define GX_MAX_VTXDESCLIST_SZ (GX_MAX_VTXDESC+1) // +1 for GX_VA_NULL 300 301 #define GX_MAX_VTXATTRFMT GX_VA_MAX_ATTR 302 #define GX_MAX_VTXATTRFMTLIST_SZ (GX_MAX_VTXATTRFMT+1) // +1 for GX_VA_NULL 303 304 #define GX_MAX_VTXARRAY 16 305 306 /********************************/ 307 typedef enum _GXVtxFmt 308 { 309 GX_VTXFMT0 = 0, 310 GX_VTXFMT1, 311 GX_VTXFMT2, 312 GX_VTXFMT3, 313 GX_VTXFMT4, 314 GX_VTXFMT5, 315 GX_VTXFMT6, 316 GX_VTXFMT7, 317 GX_MAX_VTXFMT 318 319 } GXVtxFmt; 320 321 #define GX_MAX_VTXFMT GX_MAX_VTXFMT 322 323 /********************************/ 324 typedef enum _GXAttrType 325 { 326 GX_NONE = 0, 327 GX_DIRECT, 328 GX_INDEX8, 329 GX_INDEX16 330 331 } GXAttrType; 332 333 /********************************/ 334 typedef enum _GXTexCoordID 335 { 336 GX_TEXCOORD0 = 0x0, // generated texture coordinate 0 337 GX_TEXCOORD1, // generated texture coordinate 1 338 GX_TEXCOORD2, // generated texture coordinate 2 339 GX_TEXCOORD3, // generated texture coordinate 3 340 GX_TEXCOORD4, // generated texture coordinate 4 341 GX_TEXCOORD5, // generated texture coordinate 5 342 GX_TEXCOORD6, // generated texture coordinate 6 343 GX_TEXCOORD7, // generated texture coordinate 7 344 GX_MAX_TEXCOORD = 8, 345 GX_TEXCOORD_NULL = 0xff 346 347 } GXTexCoordID; 348 349 #define GX_MAX_TEXCOORDGEN GX_MAX_TEXCOORD 350 351 /********************************/ 352 typedef enum _GXTexGenType 353 { 354 GX_TG_MTX3x4 = 0, 355 GX_TG_MTX2x4, 356 GX_TG_BUMP0, 357 GX_TG_BUMP1, 358 GX_TG_BUMP2, 359 GX_TG_BUMP3, 360 GX_TG_BUMP4, 361 GX_TG_BUMP5, 362 GX_TG_BUMP6, 363 GX_TG_BUMP7, 364 GX_TG_SRTG 365 366 } GXTexGenType; 367 368 /********************************/ 369 typedef enum _GXTexGenSrc 370 { 371 GX_TG_POS = 0, 372 GX_TG_NRM, 373 GX_TG_BINRM, 374 GX_TG_TANGENT, 375 GX_TG_TEX0, 376 GX_TG_TEX1, 377 GX_TG_TEX2, 378 GX_TG_TEX3, 379 GX_TG_TEX4, 380 GX_TG_TEX5, 381 GX_TG_TEX6, 382 GX_TG_TEX7, 383 GX_TG_TEXCOORD0, 384 GX_TG_TEXCOORD1, 385 GX_TG_TEXCOORD2, 386 GX_TG_TEXCOORD3, 387 GX_TG_TEXCOORD4, 388 GX_TG_TEXCOORD5, 389 GX_TG_TEXCOORD6, 390 GX_TG_COLOR0, 391 GX_TG_COLOR1 392 393 } GXTexGenSrc; 394 395 /********************************/ 396 typedef enum _GXCompCnt 397 { 398 #if ( GX_REV == 1 ) 399 GX_POS_XY = 0, 400 GX_POS_XYZ = 1, 401 GX_NRM_XYZ = 0, 402 GX_NRM_NBT = 1, // not really used, just to make api consistent 403 GX_CLR_RGB = 0, 404 GX_CLR_RGBA = 1, 405 GX_TEX_S = 0, 406 GX_TEX_ST = 1 407 408 #else // ( GX_REV >= 2 ) 409 GX_POS_XY = 0, 410 GX_POS_XYZ = 1, 411 GX_NRM_XYZ = 0, 412 GX_NRM_NBT = 1, // one index per NBT 413 GX_NRM_NBT3 = 2, // one index per each of N/B/T 414 GX_CLR_RGB = 0, 415 GX_CLR_RGBA = 1, 416 GX_TEX_S = 0, 417 GX_TEX_ST = 1 418 419 #endif 420 } GXCompCnt; 421 422 /********************************/ 423 typedef enum _GXCompType 424 { 425 GX_U8 = 0, 426 GX_S8 = 1, 427 GX_U16 = 2, 428 GX_S16 = 3, 429 GX_F32 = 4, 430 431 GX_RGB565 = 0, 432 GX_RGB8 = 1, 433 GX_RGBX8 = 2, 434 GX_RGBA4 = 3, 435 GX_RGBA6 = 4, 436 GX_RGBA8 = 5 437 438 } GXCompType; 439 440 /********************************/ 441 typedef enum _GXChannelID 442 { 443 GX_COLOR0, 444 GX_COLOR1, 445 GX_ALPHA0, 446 GX_ALPHA1, 447 GX_COLOR0A0, // Color 0 + Alpha 0 448 GX_COLOR1A1, // Color 1 + Alpha 1 449 GX_COLOR_ZERO, // RGBA = 0 450 GX_ALPHA_BUMP, // bump alpha 0-248, RGB=0 451 GX_ALPHA_BUMPN, // normalized bump alpha, 0-255, RGB=0 452 GX_COLOR_NULL = 0xff 453 454 } GXChannelID; 455 456 /********************************/ 457 typedef enum _GXColorSrc 458 { 459 GX_SRC_REG = 0, 460 GX_SRC_VTX 461 462 } GXColorSrc; 463 464 /********************************/ 465 typedef enum _GXLightID 466 { 467 GX_LIGHT0 = 0x001, 468 GX_LIGHT1 = 0x002, 469 GX_LIGHT2 = 0x004, 470 GX_LIGHT3 = 0x008, 471 GX_LIGHT4 = 0x010, 472 GX_LIGHT5 = 0x020, 473 GX_LIGHT6 = 0x040, 474 GX_LIGHT7 = 0x080, 475 GX_MAX_LIGHT = 0x100, 476 GX_LIGHT_NULL = 0x000 477 } GXLightID; 478 479 /********************************/ 480 typedef enum _GXDiffuseFn 481 { 482 GX_DF_NONE = 0, 483 GX_DF_SIGN, 484 GX_DF_CLAMP 485 486 } GXDiffuseFn; 487 488 /********************************/ 489 typedef enum _GXAttnFn 490 { 491 GX_AF_SPEC = 0, // use specular attenuation 492 GX_AF_SPOT = 1, // use distance/spotlight attenuation 493 GX_AF_NONE // attenuation is off 494 495 } GXAttnFn; 496 497 /********************************/ 498 typedef enum _GXSpotFn 499 { 500 GX_SP_OFF = 0, 501 GX_SP_FLAT, 502 GX_SP_COS, 503 GX_SP_COS2, 504 GX_SP_SHARP, 505 GX_SP_RING1, 506 GX_SP_RING2 507 } GXSpotFn; 508 509 /********************************/ 510 typedef enum _GXDistAttnFn 511 { 512 GX_DA_OFF = 0, 513 GX_DA_GENTLE, 514 GX_DA_MEDIUM, 515 GX_DA_STEEP 516 } GXDistAttnFn; 517 518 /********************************/ 519 typedef enum _GXPosNrmMtx 520 { 521 GX_PNMTX0 = 0, 522 GX_PNMTX1 = 3, 523 GX_PNMTX2 = 6, 524 GX_PNMTX3 = 9, 525 GX_PNMTX4 = 12, 526 GX_PNMTX5 = 15, 527 GX_PNMTX6 = 18, 528 GX_PNMTX7 = 21, 529 GX_PNMTX8 = 24, 530 GX_PNMTX9 = 27 531 532 } GXPosNrmMtx; 533 534 /********************************/ 535 typedef enum _GXTexMtx 536 { 537 GX_TEXMTX0 = 30, 538 GX_TEXMTX1 = 33, 539 GX_TEXMTX2 = 36, 540 GX_TEXMTX3 = 39, 541 GX_TEXMTX4 = 42, 542 GX_TEXMTX5 = 45, 543 GX_TEXMTX6 = 48, 544 GX_TEXMTX7 = 51, 545 GX_TEXMTX8 = 54, 546 GX_TEXMTX9 = 57, 547 GX_IDENTITY = 60 548 549 } GXTexMtx; 550 551 /********************************/ 552 #if ( GX_REV != 1 ) // Revision 2 or greater only 553 typedef enum _GXPTTexMtx 554 { 555 GX_PTTEXMTX0 = 64, 556 GX_PTTEXMTX1 = 67, 557 GX_PTTEXMTX2 = 70, 558 GX_PTTEXMTX3 = 73, 559 GX_PTTEXMTX4 = 76, 560 GX_PTTEXMTX5 = 79, 561 GX_PTTEXMTX6 = 82, 562 GX_PTTEXMTX7 = 85, 563 GX_PTTEXMTX8 = 88, 564 GX_PTTEXMTX9 = 91, 565 GX_PTTEXMTX10 = 94, 566 GX_PTTEXMTX11 = 97, 567 GX_PTTEXMTX12 = 100, 568 GX_PTTEXMTX13 = 103, 569 GX_PTTEXMTX14 = 106, 570 GX_PTTEXMTX15 = 109, 571 GX_PTTEXMTX16 = 112, 572 GX_PTTEXMTX17 = 115, 573 GX_PTTEXMTX18 = 118, 574 GX_PTTEXMTX19 = 121, 575 GX_PTIDENTITY = 125 576 577 } GXPTTexMtx; 578 #endif // ( GX_REV != 1 ) 579 580 /********************************/ 581 typedef enum _GXTexMtxType 582 { 583 GX_MTX3x4 = 0, 584 GX_MTX2x4 585 586 } GXTexMtxType; 587 588 /********************************/ 589 typedef enum _GXPrimitive 590 { 591 GX_POINTS = 0xb8, 592 GX_LINES = 0xa8, 593 GX_LINESTRIP = 0xb0, 594 GX_TRIANGLES = 0x90, 595 GX_TRIANGLESTRIP = 0x98, 596 GX_TRIANGLEFAN = 0xa0, 597 GX_QUADS = 0x80 598 599 } GXPrimitive; 600 601 /********************************/ 602 typedef enum _GXTexOffset 603 { 604 GX_TO_ZERO, 605 GX_TO_SIXTEENTH, 606 GX_TO_EIGHTH, 607 GX_TO_FOURTH, 608 GX_TO_HALF, 609 GX_TO_ONE, 610 GX_MAX_TEXOFFSET 611 612 } GXTexOffset; 613 614 /********************************/ 615 typedef enum _GXCullMode 616 { 617 GX_CULL_NONE, 618 GX_CULL_FRONT, 619 GX_CULL_BACK, 620 GX_CULL_ALL 621 622 } GXCullMode; 623 624 /********************************/ 625 typedef enum _GXClipMode 626 { 627 // Note: these are (by design) backwards of typical enable/disables! 628 GX_CLIP_ENABLE = 0, 629 GX_CLIP_DISABLE = 1 630 631 } GXClipMode; 632 633 /********************************/ 634 typedef enum _GXTexWrapMode 635 { 636 GX_CLAMP, 637 GX_REPEAT, 638 GX_MIRROR, 639 GX_MAX_TEXWRAPMODE 640 641 } GXTexWrapMode; 642 643 /********************************/ 644 typedef enum _GXTexFilter 645 { 646 GX_NEAR, 647 GX_LINEAR, 648 GX_NEAR_MIP_NEAR, 649 GX_LIN_MIP_NEAR, 650 GX_NEAR_MIP_LIN, 651 GX_LIN_MIP_LIN 652 653 } GXTexFilter; 654 655 /********************************/ 656 typedef enum _GXCITexFmt 657 { 658 GX_TF_C4 = 0x8, 659 GX_TF_C8 = 0x9, 660 GX_TF_C14X2 = 0xa 661 662 } GXCITexFmt; 663 664 /********************************/ 665 typedef enum _GXTexFmt 666 { 667 #if ( GX_REV == 1 ) 668 GX_TF_I4 = 0x0, 669 GX_TF_I8 = 0x1, 670 GX_TF_IA4 = 0x2, 671 GX_TF_IA8 = 0x3, 672 GX_TF_RGB565 = 0x4, 673 GX_TF_RGB5A3 = 0x5, 674 GX_TF_RGBA8 = 0x6, 675 GX_TF_CMPR = 0xE, 676 GX_TF_A8 = (0x20 | GX_TF_I8), 677 GX_TF_Z8 = (0x10 | GX_TF_I8), 678 GX_TF_Z16 = (0x10 | GX_TF_IA8), 679 GX_TF_Z24X8 = (0x10 | GX_TF_RGBA8) 680 681 #else // ( GX_REV >= 2 ) 682 683 #define _GX_TF_CTF 0x20 /* copy-texture-format only */ 684 #define _GX_TF_ZTF 0x10 /* Z-texture-format */ 685 686 GX_TF_I4 = 0x0, 687 GX_TF_I8 = 0x1, 688 GX_TF_IA4 = 0x2, 689 GX_TF_IA8 = 0x3, 690 GX_TF_RGB565 = 0x4, 691 GX_TF_RGB5A3 = 0x5, 692 GX_TF_RGBA8 = 0x6, 693 GX_TF_CMPR = 0xE, 694 695 GX_CTF_R4 = 0x0 | _GX_TF_CTF, 696 GX_CTF_RA4 = 0x2 | _GX_TF_CTF, 697 GX_CTF_RA8 = 0x3 | _GX_TF_CTF, 698 GX_CTF_YUVA8 = 0x6 | _GX_TF_CTF, 699 GX_CTF_A8 = 0x7 | _GX_TF_CTF, 700 GX_CTF_R8 = 0x8 | _GX_TF_CTF, 701 GX_CTF_G8 = 0x9 | _GX_TF_CTF, 702 GX_CTF_B8 = 0xA | _GX_TF_CTF, 703 GX_CTF_RG8 = 0xB | _GX_TF_CTF, 704 GX_CTF_GB8 = 0xC | _GX_TF_CTF, 705 706 GX_TF_Z8 = 0x1 | _GX_TF_ZTF, 707 GX_TF_Z16 = 0x3 | _GX_TF_ZTF, 708 GX_TF_Z24X8 = 0x6 | _GX_TF_ZTF, 709 710 GX_CTF_Z4 = 0x0 | _GX_TF_ZTF | _GX_TF_CTF, 711 GX_CTF_Z8M = 0x9 | _GX_TF_ZTF | _GX_TF_CTF, 712 GX_CTF_Z8L = 0xA | _GX_TF_ZTF | _GX_TF_CTF, 713 GX_CTF_Z16L = 0xC | _GX_TF_ZTF | _GX_TF_CTF, 714 715 GX_TF_A8 = GX_CTF_A8 // to keep compatibility 716 #endif 717 } GXTexFmt; 718 719 /********************************/ 720 typedef enum _GXTlutFmt 721 { 722 GX_TL_IA8 = 0x0, 723 GX_TL_RGB565 = 0x1, 724 GX_TL_RGB5A3 = 0x2, 725 GX_MAX_TLUTFMT 726 727 } GXTlutFmt; 728 729 /********************************/ 730 typedef enum _GXTlutSize 731 { 732 GX_TLUT_16 = 1, // number of 16 entry blocks. 733 GX_TLUT_32 = 2, 734 GX_TLUT_64 = 4, 735 GX_TLUT_128 = 8, 736 GX_TLUT_256 = 16, 737 GX_TLUT_512 = 32, 738 GX_TLUT_1K = 64, 739 GX_TLUT_2K = 128, 740 GX_TLUT_4K = 256, 741 GX_TLUT_8K = 512, 742 GX_TLUT_16K = 1024 743 744 } GXTlutSize; 745 746 /********************************/ 747 typedef enum _GXTlut 748 { 749 // default 256-entry TLUTs 750 GX_TLUT0 = 0, 751 GX_TLUT1, 752 GX_TLUT2, 753 GX_TLUT3, 754 GX_TLUT4, 755 GX_TLUT5, 756 GX_TLUT6, 757 GX_TLUT7, 758 GX_TLUT8, 759 GX_TLUT9, 760 GX_TLUT10, 761 GX_TLUT11, 762 GX_TLUT12, 763 GX_TLUT13, 764 GX_TLUT14, 765 GX_TLUT15, 766 GX_BIGTLUT0, 767 GX_BIGTLUT1, 768 GX_BIGTLUT2, 769 GX_BIGTLUT3 770 771 } GXTlut; 772 773 /********************************/ 774 typedef enum _GXTexMapID 775 { 776 GX_TEXMAP0, 777 GX_TEXMAP1, 778 GX_TEXMAP2, 779 GX_TEXMAP3, 780 GX_TEXMAP4, 781 GX_TEXMAP5, 782 GX_TEXMAP6, 783 GX_TEXMAP7, 784 GX_MAX_TEXMAP, 785 786 GX_TEXMAP_NULL = 0xff, 787 GX_TEX_DISABLE = 0x100 // mask: disables texture look up 788 789 } GXTexMapID; 790 791 #define GX_MAX_TEXMAPS GX_MAX_TEXMAP 792 793 /********************************/ 794 typedef enum _GXTexCacheSize 795 { 796 GX_TEXCACHE_32K, 797 GX_TEXCACHE_128K, 798 GX_TEXCACHE_512K, 799 GX_TEXCACHE_NONE 800 801 } GXTexCacheSize; 802 803 /********************************/ 804 typedef enum _GXIndTexFormat 805 { 806 GX_ITF_8, // 8 bit texture offsets. 807 GX_ITF_5, // 5 bit texture offsets. 808 GX_ITF_4, // 4 bit texture offsets. 809 GX_ITF_3, // 3 bit texture offsets. 810 GX_MAX_ITFORMAT 811 812 } GXIndTexFormat; 813 814 /********************************/ 815 typedef enum _GXIndTexBiasSel 816 { 817 GX_ITB_NONE, 818 GX_ITB_S, 819 GX_ITB_T, 820 GX_ITB_ST, 821 GX_ITB_U, 822 GX_ITB_SU, 823 GX_ITB_TU, 824 GX_ITB_STU, 825 GX_MAX_ITBIAS 826 827 } GXIndTexBiasSel; 828 829 /********************************/ 830 typedef enum _GXIndTexAlphaSel 831 { 832 GX_ITBA_OFF, 833 GX_ITBA_S, 834 GX_ITBA_T, 835 GX_ITBA_U, 836 GX_MAX_ITBALPHA 837 838 } GXIndTexAlphaSel; 839 840 /********************************/ 841 typedef enum _GXIndTexMtxID 842 { 843 GX_ITM_OFF, 844 GX_ITM_0, 845 GX_ITM_1, 846 GX_ITM_2, 847 GX_ITM_S0 = 5, 848 GX_ITM_S1, 849 GX_ITM_S2, 850 GX_ITM_T0 = 9, 851 GX_ITM_T1, 852 GX_ITM_T2 853 854 } GXIndTexMtxID; 855 856 /********************************/ 857 typedef enum _GXIndTexWrap 858 { 859 GX_ITW_OFF, // no wrapping 860 GX_ITW_256, // wrap 256 861 GX_ITW_128, // wrap 128 862 GX_ITW_64, // wrap 64 863 GX_ITW_32, // wrap 32 864 GX_ITW_16, // wrap 16 865 GX_ITW_0, // wrap 0 866 GX_MAX_ITWRAP 867 868 } GXIndTexWrap; 869 870 /********************************/ 871 typedef enum _GXIndTexScale 872 { 873 GX_ITS_1, // Scale by 1. 874 GX_ITS_2, // Scale by 1/2. 875 GX_ITS_4, // Scale by 1/4. 876 GX_ITS_8, // Scale by 1/8. 877 GX_ITS_16, // Scale by 1/16. 878 GX_ITS_32, // Scale by 1/32. 879 GX_ITS_64, // Scale by 1/64. 880 GX_ITS_128, // Scale by 1/128. 881 GX_ITS_256, // Scale by 1/256. 882 GX_MAX_ITSCALE 883 884 } GXIndTexScale; 885 886 /********************************/ 887 typedef enum _GXIndTexStageID 888 { 889 GX_INDTEXSTAGE0, // Indirect Texture Stage Names. 890 GX_INDTEXSTAGE1, 891 GX_INDTEXSTAGE2, 892 GX_INDTEXSTAGE3, 893 GX_MAX_INDTEXSTAGE 894 895 } GXIndTexStageID; 896 897 /********************************/ 898 typedef enum _GXTevStageID 899 { 900 GX_TEVSTAGE0, 901 GX_TEVSTAGE1, 902 GX_TEVSTAGE2, 903 GX_TEVSTAGE3, 904 GX_TEVSTAGE4, 905 GX_TEVSTAGE5, 906 GX_TEVSTAGE6, 907 GX_TEVSTAGE7, 908 GX_TEVSTAGE8, 909 GX_TEVSTAGE9, 910 GX_TEVSTAGE10, 911 GX_TEVSTAGE11, 912 GX_TEVSTAGE12, 913 GX_TEVSTAGE13, 914 GX_TEVSTAGE14, 915 GX_TEVSTAGE15, 916 GX_MAX_TEVSTAGE 917 918 } GXTevStageID; 919 920 #define GX_MAX_TEVSTAGES GX_MAX_TEVSTAGE 921 922 /********************************/ 923 typedef enum _GXTevRegID 924 { 925 GX_TEVPREV = 0, 926 GX_TEVREG0, 927 GX_TEVREG1, 928 GX_TEVREG2, 929 GX_MAX_TEVREG 930 931 } GXTevRegID; 932 933 /********************************/ 934 typedef enum _GXTevOp 935 { 936 #if ( GX_REV == 1 ) 937 GX_TEV_ADD, 938 GX_TEV_SUB 939 940 #else // ( GX_REV >= 2 ) 941 GX_TEV_ADD = 0, 942 GX_TEV_SUB = 1, 943 944 GX_TEV_COMP_R8_GT = 8, 945 GX_TEV_COMP_R8_EQ = 9, 946 GX_TEV_COMP_GR16_GT = 10, 947 GX_TEV_COMP_GR16_EQ = 11, 948 GX_TEV_COMP_BGR24_GT = 12, 949 GX_TEV_COMP_BGR24_EQ = 13, 950 GX_TEV_COMP_RGB8_GT = 14, 951 GX_TEV_COMP_RGB8_EQ = 15, 952 953 GX_TEV_COMP_A8_GT = GX_TEV_COMP_RGB8_GT, // for alpha channel 954 GX_TEV_COMP_A8_EQ = GX_TEV_COMP_RGB8_EQ // for alpha channel 955 956 #endif 957 } GXTevOp; 958 959 /********************************/ 960 typedef enum _GXTevColorArg 961 { 962 #if ( GX_REV == 1 ) 963 GX_CC_CPREV, 964 GX_CC_APREV, 965 GX_CC_C0, 966 GX_CC_A0, 967 GX_CC_C1, 968 GX_CC_A1, 969 GX_CC_C2, 970 GX_CC_A2, 971 GX_CC_TEXC, 972 GX_CC_TEXA, 973 GX_CC_RASC, 974 GX_CC_RASA, 975 GX_CC_ONE, 976 GX_CC_HALF, 977 GX_CC_QUARTER, 978 GX_CC_ZERO, 979 980 GX_CC_TEXRRR, 981 GX_CC_TEXGGG, 982 GX_CC_TEXBBB 983 984 #else // ( GX_REV >= 2 ) 985 GX_CC_CPREV, 986 GX_CC_APREV, 987 GX_CC_C0, 988 GX_CC_A0, 989 GX_CC_C1, 990 GX_CC_A1, 991 GX_CC_C2, 992 GX_CC_A2, 993 GX_CC_TEXC, 994 GX_CC_TEXA, 995 GX_CC_RASC, 996 GX_CC_RASA, 997 GX_CC_ONE, 998 GX_CC_HALF, 999 GX_CC_KONST, 1000 GX_CC_ZERO 1001 1002 #ifndef GX_NO_LEGACY_HW1 1003 , // separator needed only in this case 1004 1005 GX_CC_TEXRRR, // obsolete 1006 GX_CC_TEXGGG, // obsolete 1007 GX_CC_TEXBBB, // obsolete 1008 1009 GX_CC_QUARTER = GX_CC_KONST // obsolete, to keep compatibility 1010 #endif 1011 1012 #endif 1013 } GXTevColorArg; 1014 1015 /********************************/ 1016 typedef enum _GXTevAlphaArg 1017 { 1018 #if ( GX_REV == 1 ) 1019 GX_CA_APREV, 1020 GX_CA_A0, 1021 GX_CA_A1, 1022 GX_CA_A2, 1023 GX_CA_TEXA, 1024 GX_CA_RASA, 1025 GX_CA_ONE, 1026 GX_CA_ZERO 1027 1028 #else // ( GX_REV >= 2 ) 1029 GX_CA_APREV, 1030 GX_CA_A0, 1031 GX_CA_A1, 1032 GX_CA_A2, 1033 GX_CA_TEXA, 1034 GX_CA_RASA, 1035 GX_CA_KONST, 1036 GX_CA_ZERO 1037 1038 #ifndef GX_NO_LEGACY_HW1 1039 , // separator needed only in this case 1040 1041 GX_CA_ONE = GX_CA_KONST // obsolete, to keep compatibility 1042 #endif 1043 1044 #endif 1045 } GXTevAlphaArg; 1046 1047 /********************************/ 1048 typedef enum _GXTevBias 1049 { 1050 GX_TB_ZERO, 1051 GX_TB_ADDHALF, 1052 GX_TB_SUBHALF, 1053 GX_MAX_TEVBIAS 1054 1055 } GXTevBias; 1056 1057 /********************************/ 1058 typedef enum _GXTevClampMode 1059 { 1060 GX_TC_LINEAR, 1061 GX_TC_GE, 1062 GX_TC_EQ, 1063 GX_TC_LE, 1064 GX_MAX_TEVCLAMPMODE 1065 1066 } GXTevClampMode; 1067 1068 /********************************/ 1069 #if ( GX_REV != 1 ) // GX Revision 2 or later only 1070 typedef enum _GXTevKColorID 1071 { 1072 GX_KCOLOR0 = 0, 1073 GX_KCOLOR1, 1074 GX_KCOLOR2, 1075 GX_KCOLOR3, 1076 GX_MAX_KCOLOR 1077 1078 } GXTevKColorID; 1079 #endif // ( GX_REV != 1 ) 1080 1081 /********************************/ 1082 #if ( GX_REV != 1 ) // GX Revision 2 or later only 1083 typedef enum _GXTevKColorSel 1084 { 1085 GX_TEV_KCSEL_8_8 = 0x00, 1086 GX_TEV_KCSEL_7_8 = 0x01, 1087 GX_TEV_KCSEL_6_8 = 0x02, 1088 GX_TEV_KCSEL_5_8 = 0x03, 1089 GX_TEV_KCSEL_4_8 = 0x04, 1090 GX_TEV_KCSEL_3_8 = 0x05, 1091 GX_TEV_KCSEL_2_8 = 0x06, 1092 GX_TEV_KCSEL_1_8 = 0x07, 1093 1094 GX_TEV_KCSEL_1 = GX_TEV_KCSEL_8_8, 1095 GX_TEV_KCSEL_3_4 = GX_TEV_KCSEL_6_8, 1096 GX_TEV_KCSEL_1_2 = GX_TEV_KCSEL_4_8, 1097 GX_TEV_KCSEL_1_4 = GX_TEV_KCSEL_2_8, 1098 1099 GX_TEV_KCSEL_K0 = 0x0C, 1100 GX_TEV_KCSEL_K1 = 0x0D, 1101 GX_TEV_KCSEL_K2 = 0x0E, 1102 GX_TEV_KCSEL_K3 = 0x0F, 1103 GX_TEV_KCSEL_K0_R = 0x10, 1104 GX_TEV_KCSEL_K1_R = 0x11, 1105 GX_TEV_KCSEL_K2_R = 0x12, 1106 GX_TEV_KCSEL_K3_R = 0x13, 1107 GX_TEV_KCSEL_K0_G = 0x14, 1108 GX_TEV_KCSEL_K1_G = 0x15, 1109 GX_TEV_KCSEL_K2_G = 0x16, 1110 GX_TEV_KCSEL_K3_G = 0x17, 1111 GX_TEV_KCSEL_K0_B = 0x18, 1112 GX_TEV_KCSEL_K1_B = 0x19, 1113 GX_TEV_KCSEL_K2_B = 0x1A, 1114 GX_TEV_KCSEL_K3_B = 0x1B, 1115 GX_TEV_KCSEL_K0_A = 0x1C, 1116 GX_TEV_KCSEL_K1_A = 0x1D, 1117 GX_TEV_KCSEL_K2_A = 0x1E, 1118 GX_TEV_KCSEL_K3_A = 0x1F 1119 1120 } GXTevKColorSel; 1121 #endif // ( GX_REV != 1 ) 1122 1123 /********************************/ 1124 #if ( GX_REV != 1 ) // GX Revision 2 or later only 1125 typedef enum _GXTevKAlphaSel 1126 { 1127 GX_TEV_KASEL_8_8 = 0x00, 1128 GX_TEV_KASEL_7_8 = 0x01, 1129 GX_TEV_KASEL_6_8 = 0x02, 1130 GX_TEV_KASEL_5_8 = 0x03, 1131 GX_TEV_KASEL_4_8 = 0x04, 1132 GX_TEV_KASEL_3_8 = 0x05, 1133 GX_TEV_KASEL_2_8 = 0x06, 1134 GX_TEV_KASEL_1_8 = 0x07, 1135 1136 GX_TEV_KASEL_1 = GX_TEV_KASEL_8_8, 1137 GX_TEV_KASEL_3_4 = GX_TEV_KASEL_6_8, 1138 GX_TEV_KASEL_1_2 = GX_TEV_KASEL_4_8, 1139 GX_TEV_KASEL_1_4 = GX_TEV_KASEL_2_8, 1140 1141 GX_TEV_KASEL_K0_R = 0x10, 1142 GX_TEV_KASEL_K1_R = 0x11, 1143 GX_TEV_KASEL_K2_R = 0x12, 1144 GX_TEV_KASEL_K3_R = 0x13, 1145 GX_TEV_KASEL_K0_G = 0x14, 1146 GX_TEV_KASEL_K1_G = 0x15, 1147 GX_TEV_KASEL_K2_G = 0x16, 1148 GX_TEV_KASEL_K3_G = 0x17, 1149 GX_TEV_KASEL_K0_B = 0x18, 1150 GX_TEV_KASEL_K1_B = 0x19, 1151 GX_TEV_KASEL_K2_B = 0x1A, 1152 GX_TEV_KASEL_K3_B = 0x1B, 1153 GX_TEV_KASEL_K0_A = 0x1C, 1154 GX_TEV_KASEL_K1_A = 0x1D, 1155 GX_TEV_KASEL_K2_A = 0x1E, 1156 GX_TEV_KASEL_K3_A = 0x1F 1157 1158 } GXTevKAlphaSel; 1159 #endif // ( GX_REV != 1 ) 1160 1161 /********************************/ 1162 #if ( GX_REV != 1 ) // GX Revision 2 or later only 1163 typedef enum _GXTevSwapSel 1164 { 1165 GX_TEV_SWAP0 = 0, 1166 GX_TEV_SWAP1, 1167 GX_TEV_SWAP2, 1168 GX_TEV_SWAP3, 1169 GX_MAX_TEVSWAP 1170 1171 } GXTevSwapSel; 1172 #endif // ( GX_REV != 1 ) 1173 1174 /********************************/ 1175 #if ( GX_REV != 1 ) // GX Revision 2 or later only 1176 typedef enum _GXTevColorChan 1177 { 1178 GX_CH_RED = 0, 1179 GX_CH_GREEN, 1180 GX_CH_BLUE, 1181 GX_CH_ALPHA 1182 1183 } GXTevColorChan; 1184 #endif // ( GX_REV != 1 ) 1185 1186 /********************************/ 1187 typedef enum _GXAlphaOp 1188 { 1189 GX_AOP_AND, 1190 GX_AOP_OR, 1191 GX_AOP_XOR, 1192 GX_AOP_XNOR, 1193 GX_MAX_ALPHAOP 1194 1195 } GXAlphaOp; 1196 1197 /********************************/ 1198 typedef enum _GXTevScale 1199 { 1200 GX_CS_SCALE_1, 1201 GX_CS_SCALE_2, 1202 GX_CS_SCALE_4, 1203 GX_CS_DIVIDE_2, 1204 GX_MAX_TEVSCALE 1205 1206 } GXTevScale; 1207 1208 /********************************/ 1209 typedef enum _GXFogType 1210 { 1211 GX_FOG_NONE = 0x00, 1212 1213 GX_FOG_PERSP_LIN = 0x02, 1214 GX_FOG_PERSP_EXP = 0x04, 1215 GX_FOG_PERSP_EXP2 = 0x05, 1216 GX_FOG_PERSP_REVEXP = 0x06, 1217 GX_FOG_PERSP_REVEXP2 = 0x07, 1218 1219 GX_FOG_ORTHO_LIN = 0x0A, 1220 GX_FOG_ORTHO_EXP = 0x0C, 1221 GX_FOG_ORTHO_EXP2 = 0x0D, 1222 GX_FOG_ORTHO_REVEXP = 0x0E, 1223 GX_FOG_ORTHO_REVEXP2 = 0x0F, 1224 1225 // For compatibility with former versions 1226 GX_FOG_LIN = GX_FOG_PERSP_LIN, 1227 GX_FOG_EXP = GX_FOG_PERSP_EXP, 1228 GX_FOG_EXP2 = GX_FOG_PERSP_EXP2, 1229 GX_FOG_REVEXP = GX_FOG_PERSP_REVEXP, 1230 GX_FOG_REVEXP2 = GX_FOG_PERSP_REVEXP2 1231 1232 } GXFogType; 1233 1234 /********************************/ 1235 typedef enum _GXBlendMode 1236 { 1237 #if ( GX_REV == 1 ) 1238 GX_BM_NONE, 1239 GX_BM_BLEND, 1240 GX_BM_LOGIC, 1241 GX_MAX_BLENDMODE 1242 1243 #else // ( GX_REV >= 2 ) 1244 GX_BM_NONE, 1245 GX_BM_BLEND, 1246 GX_BM_LOGIC, 1247 GX_BM_SUBTRACT, 1248 GX_MAX_BLENDMODE 1249 1250 #endif 1251 } GXBlendMode; 1252 1253 /********************************/ 1254 typedef enum _GXBlendFactor 1255 { 1256 GX_BL_ZERO, 1257 GX_BL_ONE, 1258 GX_BL_SRCCLR, 1259 GX_BL_INVSRCCLR, 1260 GX_BL_SRCALPHA, 1261 GX_BL_INVSRCALPHA, 1262 GX_BL_DSTALPHA, 1263 GX_BL_INVDSTALPHA, 1264 1265 GX_BL_DSTCLR = GX_BL_SRCCLR, 1266 GX_BL_INVDSTCLR = GX_BL_INVSRCCLR 1267 1268 } GXBlendFactor; 1269 1270 /********************************/ 1271 typedef enum _GXCompare 1272 { 1273 GX_NEVER, 1274 GX_LESS, 1275 GX_EQUAL, 1276 GX_LEQUAL, 1277 GX_GREATER, 1278 GX_NEQUAL, 1279 GX_GEQUAL, 1280 GX_ALWAYS 1281 1282 } GXCompare; 1283 1284 /********************************/ 1285 typedef enum _GXLogicOp 1286 { 1287 GX_LO_CLEAR, 1288 GX_LO_AND, 1289 GX_LO_REVAND, 1290 GX_LO_COPY, 1291 GX_LO_INVAND, 1292 GX_LO_NOOP, 1293 GX_LO_XOR, 1294 GX_LO_OR, 1295 GX_LO_NOR, 1296 GX_LO_EQUIV, 1297 GX_LO_INV, 1298 GX_LO_REVOR, 1299 GX_LO_INVCOPY, 1300 GX_LO_INVOR, 1301 GX_LO_NAND, 1302 GX_LO_SET 1303 1304 } GXLogicOp; 1305 1306 /********************************/ 1307 typedef enum _GXPixelFmt 1308 { 1309 GX_PF_RGB8_Z24, 1310 GX_PF_RGBA6_Z24, 1311 GX_PF_RGB565_Z16, 1312 GX_PF_Z24, 1313 GX_PF_Y8, 1314 GX_PF_U8, 1315 GX_PF_V8, 1316 GX_PF_YUV420 1317 1318 } GXPixelFmt; 1319 1320 /********************************/ 1321 typedef enum _GXZFmt16 1322 { 1323 GX_ZC_LINEAR, 1324 GX_ZC_NEAR, 1325 GX_ZC_MID, 1326 GX_ZC_FAR 1327 1328 } GXZFmt16; 1329 1330 /********************************/ 1331 typedef enum _GXTevMode 1332 { 1333 GX_MODULATE, 1334 GX_DECAL, 1335 GX_BLEND, 1336 GX_REPLACE, 1337 GX_PASSCLR 1338 1339 } GXTevMode; 1340 1341 /********************************/ 1342 typedef enum _GXGamma 1343 { 1344 GX_GM_1_0, 1345 GX_GM_1_7, 1346 GX_GM_2_2 1347 1348 } GXGamma; 1349 1350 /********************************/ 1351 typedef enum _GXProjectionType 1352 { 1353 GX_PERSPECTIVE, 1354 GX_ORTHOGRAPHIC 1355 1356 } GXProjectionType; 1357 1358 1359 /********************************/ 1360 typedef enum _GXEvent 1361 { 1362 GX_VCACHE_MISS_ALL, 1363 GX_VCACHE_MISS_POS, 1364 GX_VCACHE_MISS_NRM 1365 1366 } GXEvent; 1367 1368 /********************************/ 1369 typedef enum _GXFBClamp 1370 { 1371 GX_CLAMP_NONE, 1372 GX_CLAMP_TOP, 1373 GX_CLAMP_BOTTOM 1374 1375 } GXFBClamp; 1376 1377 /********************************/ 1378 typedef enum _GXAnisotropy 1379 { 1380 GX_ANISO_1, 1381 GX_ANISO_2, 1382 GX_ANISO_4, 1383 GX_MAX_ANISOTROPY 1384 1385 } GXAnisotropy; 1386 1387 /********************************/ 1388 typedef enum _GXZTexOp 1389 { 1390 GX_ZT_DISABLE, 1391 GX_ZT_ADD, 1392 GX_ZT_REPLACE, 1393 GX_MAX_ZTEXOP 1394 1395 } GXZTexOp; 1396 1397 /********************************/ 1398 typedef enum _GXAlphaReadMode 1399 { 1400 GX_READ_00, 1401 GX_READ_FF, 1402 GX_READ_NONE 1403 1404 } GXAlphaReadMode; 1405 1406 /********************************/ 1407 typedef enum _GXPerf0 1408 { 1409 GX_PERF0_VERTICES, 1410 GX_PERF0_CLIP_VTX, 1411 GX_PERF0_CLIP_CLKS, 1412 GX_PERF0_XF_WAIT_IN, 1413 GX_PERF0_XF_WAIT_OUT, 1414 GX_PERF0_XF_XFRM_CLKS, 1415 GX_PERF0_XF_LIT_CLKS, 1416 GX_PERF0_XF_BOT_CLKS, 1417 GX_PERF0_XF_REGLD_CLKS, 1418 GX_PERF0_XF_REGRD_CLKS, 1419 GX_PERF0_CLIP_RATIO, 1420 1421 GX_PERF0_TRIANGLES, 1422 GX_PERF0_TRIANGLES_CULLED, 1423 GX_PERF0_TRIANGLES_PASSED, 1424 GX_PERF0_TRIANGLES_SCISSORED, 1425 GX_PERF0_TRIANGLES_0TEX, 1426 GX_PERF0_TRIANGLES_1TEX, 1427 GX_PERF0_TRIANGLES_2TEX, 1428 GX_PERF0_TRIANGLES_3TEX, 1429 GX_PERF0_TRIANGLES_4TEX, 1430 GX_PERF0_TRIANGLES_5TEX, 1431 GX_PERF0_TRIANGLES_6TEX, 1432 GX_PERF0_TRIANGLES_7TEX, 1433 GX_PERF0_TRIANGLES_8TEX, 1434 GX_PERF0_TRIANGLES_0CLR, 1435 GX_PERF0_TRIANGLES_1CLR, 1436 GX_PERF0_TRIANGLES_2CLR, 1437 1438 GX_PERF0_QUAD_0CVG, 1439 GX_PERF0_QUAD_NON0CVG, 1440 GX_PERF0_QUAD_1CVG, 1441 GX_PERF0_QUAD_2CVG, 1442 GX_PERF0_QUAD_3CVG, 1443 GX_PERF0_QUAD_4CVG, 1444 GX_PERF0_AVG_QUAD_CNT, 1445 1446 GX_PERF0_CLOCKS, 1447 GX_PERF0_NONE 1448 1449 } GXPerf0; 1450 1451 /********************************/ 1452 typedef enum _GXPerf1 1453 { 1454 GX_PERF1_TEXELS, 1455 GX_PERF1_TX_IDLE, 1456 GX_PERF1_TX_REGS, 1457 GX_PERF1_TX_MEMSTALL, 1458 GX_PERF1_TC_CHECK1_2, 1459 GX_PERF1_TC_CHECK3_4, 1460 GX_PERF1_TC_CHECK5_6, 1461 GX_PERF1_TC_CHECK7_8, 1462 GX_PERF1_TC_MISS, 1463 1464 GX_PERF1_VC_ELEMQ_FULL, 1465 GX_PERF1_VC_MISSQ_FULL, 1466 GX_PERF1_VC_MEMREQ_FULL, 1467 GX_PERF1_VC_STATUS7, 1468 GX_PERF1_VC_MISSREP_FULL, 1469 GX_PERF1_VC_STREAMBUF_LOW, 1470 GX_PERF1_VC_ALL_STALLS, 1471 GX_PERF1_VERTICES, 1472 1473 GX_PERF1_FIFO_REQ, 1474 GX_PERF1_CALL_REQ, 1475 GX_PERF1_VC_MISS_REQ, 1476 GX_PERF1_CP_ALL_REQ, 1477 1478 GX_PERF1_CLOCKS, 1479 GX_PERF1_NONE 1480 1481 } GXPerf1; 1482 1483 /********************************/ 1484 typedef enum _GXVCachePerf 1485 { 1486 GX_VC_POS, 1487 GX_VC_NRM, 1488 GX_VC_CLR0, 1489 GX_VC_CLR1, 1490 GX_VC_TEX0, 1491 GX_VC_TEX1, 1492 GX_VC_TEX2, 1493 GX_VC_TEX3, 1494 GX_VC_TEX4, 1495 GX_VC_TEX5, 1496 GX_VC_TEX6, 1497 GX_VC_TEX7, 1498 GX_VC_ALL = 0xf 1499 1500 } GXVCachePerf; 1501 1502 /********************************/ 1503 typedef enum _GXCopyMode 1504 { 1505 GX_COPY_PROGRESSIVE = 0, 1506 GX_COPY_INTLC_EVEN = 2, 1507 GX_COPY_INTLC_ODD = 3 1508 1509 } GXCopyMode; 1510 1511 /********************************/ 1512 typedef enum _GXMiscToken 1513 { 1514 GX_MT_XF_FLUSH = 1, 1515 GX_MT_DL_SAVE_CONTEXT = 2, 1516 GX_MT_ABORT_WAIT_COPYOUT = 3, 1517 GX_MT_NULL = 0 1518 1519 } GXMiscToken; 1520 1521 /********************************/ 1522 typedef enum _GXXFFlushVal 1523 { 1524 GX_XF_FLUSH_NONE = 0, 1525 GX_XF_FLUSH_SAFE = 8 1526 1527 } GXXFFlushVal; 1528 1529 /********************************/ 1530 // Compile-time checks to ensure that enumerations are compiled 1531 // as 32-bit integers. If your build breaks at this line, 1532 // please ensure that you enable the "enumerations are integers" 1533 // option for the compiler. 1534 1535 #define GXCTASSERT(cond) int GXCTASSERT( int assertion_failed[ (cond) != 0 ] ) 1536 1537 GXCTASSERT(sizeof(GXAttrType) == sizeof(u32)); 1538 1539 /*---------------------------------------------------------------------------*/ 1540 #ifdef __cplusplus 1541 } 1542 #endif 1543 1544 #endif // __GXENUM_H__ 1545