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