19#define GCM_DEFAULT_FIFO_MODE_TRADITIONAL 0
26#define GCM_DEFAULT_FIFO_MODE_OPTIMIZE 1
32#define GCM_DEFAULT_FIFO_MODE_CONDITIONAL 2
35#define GCM_FLIP_HSYNC 1
37#define GCM_FLIP_VSYNC 2
39#define GCM_FLIP_HSYNC_AND_BREAK_EVERYTHING 3
42#define GCM_MAX_MRT_COUNT 4
44#define GCM_DMA_MEMORY_FRAME_BUFFER (0xFEED0000)
45#define GCM_DMA_MEMORY_HOST_BUFFER (0xFEED0001)
47#define GCM_CONTEXT_SURFACE2D (0x313371C3)
48#define GCM_CONTEXT_SWIZZLE2D (0x31337A73)
50#define GCM_TRANSFER_LOCAL_TO_LOCAL 0
51#define GCM_TRANSFER_MAIN_TO_LOCAL 1
52#define GCM_TRANSFER_LOCAL_TO_MAIN 2
53#define GCM_TRANSFER_MAIN_TO_MAIN 3
56#define GCM_LOCATION_RSX 0
58#define GCM_LOCATION_CELL 1
60#define GCM_LOCATION_REPORT 2
62#define GCM_SURFACE_X1R5G5B5_Z1R5G5B5 1
63#define GCM_SURFACE_X1R5G5B5_O1R5G5B5 2
64#define GCM_SURFACE_R5G5B5 3
65#define GCM_SURFACE_X8R8G8B8_Z8R8G8B8 4
66#define GCM_SURFACE_X8R8G8B8 5
67#define GCM_SURFACE_A8R8G8B8 8
68#define GCM_SURFACE_B8 9
69#define GCM_SURFACE_G8B8 10
70#define GCM_SURFACE_F_W16Z16Y16X16 11
71#define GCM_SURFACE_F_W32Z32Y32X32 12
72#define GCM_SURFACE_F_X32 13
73#define GCM_SURFACE_X8B8G8R8_Z8B8G8R8 14
74#define GCM_SURFACE_X8B8G8R8_O8B8G8R8 15
75#define GCM_SURFACE_A8B8G8R8 16
78#define GCM_SURFACE_ZETA_Z16 1
80#define GCM_SURFACE_ZETA_Z24S8 2
83#define GCM_SURFACE_TYPE_LINEAR 1
85#define GCM_SURFACE_TYPE_SWIZZLE 2
88#define GCM_SURFACE_TARGET_NONE 0
90#define GCM_SURFACE_TARGET_0 1
92#define GCM_SURFACE_TARGET_1 2
94#define GCM_SURFACE_TARGET_MRT1 0x13
96#define GCM_SURFACE_TARGET_MRT2 0x17
98#define GCM_SURFACE_TARGET_MRT3 0x1f
101#define GCM_SURFACE_CENTER_1 0
102#define GCM_SURFACE_DIAGONAL_CENTERED_2 3
103#define GCM_SURFACE_SQUARE_CENTERED_4 4
104#define GCM_SURFACE_SQUARE_ROTATED_4 5
107#define GCM_COLOR_MASK_B 0x00000001
109#define GCM_COLOR_MASK_G 0x00000100
111#define GCM_COLOR_MASK_R 0x00010000
113#define GCM_COLOR_MASK_A 0x01000000
115#define GCM_COLOR_MASK_MRT1_A 0x00000010
116#define GCM_COLOR_MASK_MRT1_R 0x00000020
117#define GCM_COLOR_MASK_MRT1_G 0x00000040
118#define GCM_COLOR_MASK_MRT1_B 0x00000080
119#define GCM_COLOR_MASK_MRT2_A 0x00000100
120#define GCM_COLOR_MASK_MRT2_R 0x00000200
121#define GCM_COLOR_MASK_MRT2_G 0x00000400
122#define GCM_COLOR_MASK_MRT2_B 0x00000800
123#define GCM_COLOR_MASK_MRT3_A 0x00001000
124#define GCM_COLOR_MASK_MRT3_R 0x00002000
125#define GCM_COLOR_MASK_MRT3_G 0x00004000
126#define GCM_COLOR_MASK_MRT3_B 0x00008000
129#define GCM_CLEAR_Z 0x01
131#define GCM_CLEAR_S 0x02
133#define GCM_CLEAR_R 0x10
135#define GCM_CLEAR_G 0x20
137#define GCM_CLEAR_B 0x40
139#define GCM_CLEAR_A 0x80
141#define GCM_CLEAR_M 0xf3
144#define GCM_NEVER 0x0200
146#define GCM_LESS 0x0201
148#define GCM_EQUAL 0x0202
150#define GCM_LEQUAL 0x0203
152#define GCM_GREATER 0x0204
154#define GCM_NOTEQUAL 0x0205
156#define GCM_GEQUAL 0x0206
158#define GCM_ALWAYS 0x0207
161#define GCM_CULL_FRONT 0x0404
163#define GCM_CULL_BACK 0x0405
165#define GCM_CULL_ALL 0x0408
168#define GCM_POLYGON_MODE_POINT 0x1b00
170#define GCM_POLYGON_MODE_LINE 0x1b01
172#define GCM_POLYGON_MODE_FILL 0x1b02
175#define GCM_FRONTFACE_CW 0x0900
177#define GCM_FRONTFACE_CCW 0x0901
179#define GCM_CLEAR 0x1500
180#define GCM_AND 0x1501
181#define GCM_AND_REVERSE 0x1502
182#define GCM_COPY 0x1503
183#define GCM_AND_INVERTED 0x1504
184#define GCM_NOOP 0x1505
185#define GCM_XOR 0x1506
187#define GCM_NOR 0x1508
188#define GCM_EQUIV 0x1509
189#define GCM_INVERT 0x150A
190#define GCM_OR_REVERSE 0x150B
191#define GCM_COPY_INVERTED 0x150C
192#define GCM_OR_INVERTED 0x150D
193#define GCM_NAND 0x150E
194#define GCM_SET 0x150F
197#define GCM_KEEP 0x1E00
199#define GCM_REPLACE 0x1E01
201#define GCM_INCR 0x1E02
203#define GCM_DECR 0x1E03
205#define GCM_INCR_WRAP 0x8507
207#define GCM_DECR_WRAP 0x8508
210#define GCM_TYPE_POINTS 1
212#define GCM_TYPE_LINES 2
214#define GCM_TYPE_LINE_LOOP 3
216#define GCM_TYPE_LINE_STRIP 4
218#define GCM_TYPE_TRIANGLES 5
220#define GCM_TYPE_TRIANGLE_STRIP 6
222#define GCM_TYPE_TRIANGLE_FAN 7
224#define GCM_TYPE_QUADS 8
226#define GCM_TYPE_QUAD_STRIP 9
228#define GCM_TYPE_POLYGON 10
231#define GCM_INVALIDATE_TEXTURE 1
233#define GCM_INVALIDATE_VERTEX_TEXTURE 2
236#define GCM_TEXTURE_DIMS_1D 1
238#define GCM_TEXTURE_DIMS_2D 2
240#define GCM_TEXTURE_DIMS_3D 3
243#define GCM_TEXTURE_FORMAT_SWZ 0x00
245#define GCM_TEXTURE_FORMAT_LIN 0x20
247#define GCM_TEXTURE_FORMAT_NRM 0x00
249#define GCM_TEXTURE_FORMAT_UNRM 0x40
252#define GCM_TEXTURE_FORMAT_B8 1
254#define GCM_TEXTURE_FORMAT_A1R5G5B5 2
256#define GCM_TEXTURE_FORMAT_A4R4G4B4 3
258#define GCM_TEXTURE_FORMAT_R5G6B5 4
260#define GCM_TEXTURE_FORMAT_A8R8G8B8 5
262#define GCM_TEXTURE_FORMAT_DXT1 6
264#define GCM_TEXTURE_FORMAT_DXT23 7
266#define GCM_TEXTURE_FORMAT_DXT45 8
268#define GCM_TEXTURE_FORMAT_G8B8 11
270#define GCM_TEXTURE_FORMAT_R6G5B5 15
272#define GCM_TEXTURE_FORMAT_DEPTH24_D8 16
274#define GCM_TEXTURE_FORMAT_DEPTH24_D8_FLOAT 17
276#define GCM_TEXTURE_FORMAT_DEPTH16 18
278#define GCM_TEXTURE_FORMAT_DEPTH16_FLOAT 19
280#define GCM_TEXTURE_FORMAT_X16 20
282#define GCM_TEXTURE_FORMAT_Y16_X16 21
284#define GCM_TEXTURE_FORMAT_R5G6B5A1 23
286#define GCM_TEXTURE_FORMAT_COMPRESSED_HILO8 24
288#define GCM_TEXTURE_FORMAT_COMPRESSED_HILO8_S8 25
290#define GCM_TEXTURE_FORMAT_W16_Z16_Y16_X16_FLOAT 26
292#define GCM_TEXTURE_FORMAT_W32_Z32_Y32_X32_FLOAT 27
294#define GCM_TEXTURE_FORMAT_X32_FLOAT 28
296#define GCM_TEXTURE_FORMAT_D1R5G5B5 29
298#define GCM_TEXTURE_FORMAT_D8R8G8B8 30
300#define GCM_TEXTURE_FORMAT_Y16_X16_FLOAT 31
302#define GCM_TEXTURE_FORMAT_COMPRESSED_B8R8_G8R8 45
304#define GCM_TEXTURE_FORMAT_COMPRESSED_R8B8_R8G8 46
308#define GCM_TEXTURE_REMAP_TYPE_B_SHIFT 14
310#define GCM_TEXTURE_REMAP_TYPE_G_SHIFT 12
312#define GCM_TEXTURE_REMAP_TYPE_R_SHIFT 10
314#define GCM_TEXTURE_REMAP_TYPE_A_SHIFT 8
317#define GCM_TEXTURE_REMAP_COLOR_B_SHIFT 6
319#define GCM_TEXTURE_REMAP_COLOR_G_SHIFT 4
321#define GCM_TEXTURE_REMAP_COLOR_R_SHIFT 2
323#define GCM_TEXTURE_REMAP_COLOR_A_SHIFT 0
326#define GCM_TEXTURE_REMAP_TYPE_ZERO 0
328#define GCM_TEXTURE_REMAP_TYPE_ONE 1
330#define GCM_TEXTURE_REMAP_TYPE_REMAP 2
333#define GCM_TEXTURE_REMAP_ORDER_XYXY 0
335#define GCM_TEXTURE_REMAP_ORDER_XXXY 1
337#define GCM_TEXTURE_REMAP_COLOR_A 0
339#define GCM_TEXTURE_REMAP_COLOR_R 1
341#define GCM_TEXTURE_REMAP_COLOR_G 2
343#define GCM_TEXTURE_REMAP_COLOR_B 3
346#define GCM_TEXTURE_MAX_ANISO_1 0
348#define GCM_TEXTURE_MAX_ANISO_2 1
350#define GCM_TEXTURE_MAX_ANISO_4 2
352#define GCM_TEXTURE_MAX_ANISO_6 3
354#define GCM_TEXTURE_MAX_ANISO_8 4
356#define GCM_TEXTURE_MAX_ANISO_10 5
358#define GCM_TEXTURE_MAX_ANISO_12 6
360#define GCM_TEXTURE_MAX_ANISO_16 7
362#define GCM_FOG_MODE_LINEAR 0x2601
363#define GCM_FOG_MODE_EXP 0x0800
364#define GCM_FOG_MODE_EXP2 0x0801
365#define GCM_FOG_MODE_EXP_ABS 0x0802
366#define GCM_FOG_MODE_EXP2_ABS 0x0803
367#define GCM_FOG_MODE_LINEAR_ABS 0x0804
369#define GCM_POINT_SPRITE_TEX0 (1<<8)
370#define GCM_POINT_SPRITE_TEX1 (1<<9)
371#define GCM_POINT_SPRITE_TEX2 (1<<10)
372#define GCM_POINT_SPRITE_TEX3 (1<<11)
373#define GCM_POINT_SPRITE_TEX4 (1<<12)
374#define GCM_POINT_SPRITE_TEX5 (1<<13)
375#define GCM_POINT_SPRITE_TEX6 (1<<14)
376#define GCM_POINT_SPRITE_TEX7 (1<<15)
377#define GCM_POINT_SPRITE_TEX8 (1<<16)
378#define GCM_POINT_SPRITE_TEX9 (1<<17)
380#define GCM_POINT_SPRITE_RMODE_ZERO 0
381#define GCM_POINT_SPRITE_RMODE_FROM_R 1
382#define GCM_POINT_SPRITE_RMODE_FROM_S 2
384#define GCM_TEXTURE_NEAREST 1
385#define GCM_TEXTURE_LINEAR 2
386#define GCM_TEXTURE_NEAREST_MIPMAP_NEAREST 3
387#define GCM_TEXTURE_LINEAR_MIPMAP_NEAREST 4
388#define GCM_TEXTURE_NEAREST_MIPMAP_LINEAR 5
389#define GCM_TEXTURE_LINEAR_MIPMAP_LINEAR 6
390#define GCM_TEXTURE_CONVOLUTION_MIN 7
391#define GCM_TEXTURE_CONVOLUTION_MAG 4
393#define GCM_TEXTURE_CONVOLUTION_QUINCUNX 1
394#define GCM_TEXTURE_CONVOLUTION_GAUSSIAN 2
395#define GCM_TEXTURE_CONVOLUTION_QUINCUNX_ALT 3
397#define GCM_TEXTURE_REPEAT 1
398#define GCM_TEXTURE_MIRRORED_REPEAT 2
399#define GCM_TEXTURE_CLAMP_TO_EDGE 3
400#define GCM_TEXTURE_BORDER 4
401#define GCM_TEXTURE_CLAMP 5
402#define GCM_TEXTURE_MIRROR_ONCE_CLAMP_TO_EDGE 6
403#define GCM_TEXTURE_MIRROR_ONCE_CLAMP_TO_BORDER 7
404#define GCM_TEXTURE_MIRROR_ONCE_CLAMP 8
406#define GCM_TEXTURE_UNSIGNED_REMAP_NORMAL 0
407#define GCM_TEXTURE_UNSIGNED_REMAP_BIASED 1
409#define GCM_TEXTURE_GAMMA_R (1<<0)
410#define GCM_TEXTURE_GAMMA_G (1<<1)
411#define GCM_TEXTURE_GAMMA_B (1<<2)
412#define GCM_TEXTURE_GAMMA_A (1<<3)
414#define GCM_TEXTURE_ZFUNC_NEVER 0
415#define GCM_TEXTURE_ZFUNC_LESS 1
416#define GCM_TEXTURE_ZFUNC_EQUAL 2
417#define GCM_TEXTURE_ZFUNC_LEQUAL 3
418#define GCM_TEXTURE_ZFUNC_GREATER 4
419#define GCM_TEXTURE_ZFUNC_NOTEQUAL 5
420#define GCM_TEXTURE_ZFUNC_GEQUAL 6
421#define GCM_TEXTURE_ZFUNC_ALWAYS 7
423#define GCM_TEXTURE_ISO_LOW 0
424#define GCM_TEXTURE_ISO_HIGH 1
426#define GCM_TEXTURE_ANISO_LOW 0
427#define GCM_TEXTURE_ANISO_HIGH 1
429#define GCM_DEPTH_FORMAT_FIXED 0
430#define GCM_DEPTH_FORMAT_FLOAT 1
432#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX0_U (1<<0)
433#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX0_V (1<<1)
434#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX0_P (1<<2)
435#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX0_Q (1<<3)
436#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX1_U (1<<4)
437#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX1_V (1<<5)
438#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX1_P (1<<6)
439#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX1_Q (1<<7)
440#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX2_U (1<<8)
441#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX2_V (1<<9)
442#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX2_P (1<<10)
443#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX2_Q (1<<11)
444#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX3_U (1<<12)
445#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX3_V (1<<13)
446#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX3_P (1<<14)
447#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX3_Q (1<<15)
448#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX4_U (1<<16)
449#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX4_V (1<<17)
450#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX4_P (1<<18)
451#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX4_Q (1<<19)
452#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX5_U (1<<20)
453#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX5_V (1<<21)
454#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX5_P (1<<22)
455#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX5_Q (1<<23)
456#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX6_U (1<<24)
457#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX6_V (1<<25)
458#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX6_P (1<<26)
459#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX6_Q (1<<27)
460#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX7_U (1<<28)
461#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX7_V (1<<29)
462#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX7_P (1<<30)
463#define GCM_TEXTURE_CYLINDRICAL_WRAP_ENABLE_TEX7_Q (1<<31)
465#define GCM_VERTEX_ATTRIB_POS 0
466#define GCM_VERTEX_ATTRIB_WEIGHT 1
467#define GCM_VERTEX_ATTRIB_NORMAL 2
468#define GCM_VERTEX_ATTRIB_COLOR0 3
469#define GCM_VERTEX_ATTRIB_COLOR1 4
470#define GCM_VERTEX_ATTRIB_FOG 5
471#define GCM_VERTEX_ATTRIB_COLOR_INDEX 6
472#define GCM_VERTEX_ATTRIB_POINT_SIZE 6
473#define GCM_VERTEX_ATTRIB_EDGEFLAG 7
474#define GCM_VERTEX_ATTRIB_TEX0 8
475#define GCM_VERTEX_ATTRIB_TEX1 9
476#define GCM_VERTEX_ATTRIB_TEX2 10
477#define GCM_VERTEX_ATTRIB_TEX3 11
478#define GCM_VERTEX_ATTRIB_TEX4 12
479#define GCM_VERTEX_ATTRIB_TEX5 13
480#define GCM_VERTEX_ATTRIB_TEX6 14
481#define GCM_VERTEX_ATTRIB_TANGENT 14
482#define GCM_VERTEX_ATTRIB_TEX7 15
483#define GCM_VERTEX_ATTRIB_BINORMAL 15
485#define GCM_VERTEX_DATA_TYPE_F32 2
486#define GCM_VERTEX_DATA_TYPE_U8 4
488#define GCM_INDEX_TYPE_32B 0
489#define GCM_INDEX_TYPE_16B 1
491#define GCM_USER_CLIP_PLANE_DISABLE 0
492#define GCM_USER_CLIP_PLANE_LT 1
493#define GCM_USER_CLIP_PLANE_GE 2
495#define GCM_ATTRIB_OUTPUT_MASK_FRONTDIFFUSE (1<< 0)
496#define GCM_ATTRIB_OUTPUT_MASK_FRONTSPECULAR (1<< 1)
497#define GCM_ATTRIB_OUTPUT_MASK_BACKDIFFUSE (1<< 2)
498#define GCM_ATTRIB_OUTPUT_MASK_BACKSPECULAR (1<< 3)
499#define GCM_ATTRIB_OUTPUT_MASK_FOG (1<< 4)
500#define GCM_ATTRIB_OUTPUT_MASK_POINTSIZE (1<< 5)
501#define GCM_ATTRIB_OUTPUT_MASK_UC0 (1<< 6)
502#define GCM_ATTRIB_OUTPUT_MASK_UC1 (1<< 7)
503#define GCM_ATTRIB_OUTPUT_MASK_UC2 (1<< 8)
504#define GCM_ATTRIB_OUTPUT_MASK_UC3 (1<< 9)
505#define GCM_ATTRIB_OUTPUT_MASK_UC4 (1<<10)
506#define GCM_ATTRIB_OUTPUT_MASK_UC5 (1<<11)
507#define GCM_ATTRIB_OUTPUT_MASK_TEX8 (1<<12)
508#define GCM_ATTRIB_OUTPUT_MASK_TEX9 (1<<13)
509#define GCM_ATTRIB_OUTPUT_MASK_TEX0 (1<<14)
510#define GCM_ATTRIB_OUTPUT_MASK_TEX1 (1<<15)
511#define GCM_ATTRIB_OUTPUT_MASK_TEX2 (1<<16)
512#define GCM_ATTRIB_OUTPUT_MASK_TEX3 (1<<17)
513#define GCM_ATTRIB_OUTPUT_MASK_TEX4 (1<<18)
514#define GCM_ATTRIB_OUTPUT_MASK_TEX5 (1<<19)
515#define GCM_ATTRIB_OUTPUT_MASK_TEX6 (1<<20)
516#define GCM_ATTRIB_OUTPUT_MASK_TEX7 (1<<21)
519#define GCM_SHADE_MODEL_FLAT 0x1D00
521#define GCM_SHADE_MODEL_SMOOTH 0x1D01
528#define GCM_SRC_COLOR 0x0300
530#define GCM_ONE_MINUS_SRC_COLOR 0x0301
532#define GCM_SRC_ALPHA 0x0302
534#define GCM_ONE_MINUS_SRC_ALPHA 0x0303
536#define GCM_DST_ALPHA 0x0304
538#define GCM_ONE_MINUS_DST_ALPHA 0x0305
540#define GCM_DST_COLOR 0x0306
542#define GCM_ONE_MINUS_DST_COLOR 0x0307
544#define GCM_SRC_ALPHA_SATURATE 0x0308
546#define GCM_CONSTANT_COLOR 0x8001
548#define GCM_ONE_MINUS_CONSTANT_COLOR 0x8002
550#define GCM_CONSTANT_ALPHA 0x8003
552#define GCM_ONE_MINUS_CONSTANT_ALPHA 0x8004
555#define GCM_FUNC_ADD 0x8006
557#define GCM_FUNC_MIN 0x8007
559#define GCM_FUNC_MAX 0x8008
561#define GCM_FUNC_SUBTRACT 0x800a
563#define GCM_FUNC_REVERSE_SUBTRACT 0x800b
565#define GCM_FUNC_REVERSE_SUBTRACT_SIGNED 0xf005
567#define GCM_FUNC_ADD_SIGNED 0xf006
569#define GCM_FUNC_REVERSE_ADD_SIGNED 0xf007
571#define GCM_TRANSFER_SURFACE 0
572#define GCM_TRANSFER_SWIZZLE 1
575#define GCM_TRANSFER_CONVERSION_DITHER 0
577#define GCM_TRANSFER_CONVERSION_TRUNCATE 1
579#define GCM_TRANSFER_CONVERSION_SUBTRACT_TRUNCATE 2
582#define GCM_TRANSFER_SCALE_FORMAT_A1R5G5B5 1
584#define GCM_TRANSFER_SCALE_FORMAT_X1R5G5B5 2
586#define GCM_TRANSFER_SCALE_FORMAT_A8R8G8B8 3
588#define GCM_TRANSFER_SCALE_FORMAT_X8R8G8B8 4
590#define GCM_TRANSFER_SCALE_FORMAT_CR8YB8CB8YA8 5
592#define GCM_TRANSFER_SCALE_FORMAT_YB8CR8YA8CB8 6
594#define GCM_TRANSFER_SCALE_FORMAT_R5G6B5 7
596#define GCM_TRANSFER_SCALE_FORMAT_Y8 8
598#define GCM_TRANSFER_SCALE_FORMAT_AY8 9
600#define GCM_TRANSFER_SCALE_FORMAT_EYB8ECR8EYA8ECB8 0xa
602#define GCM_TRANSFER_SCALE_FORMAT_ECR8EYB8ECB8EYA8 0xb
604#define GCM_TRANSFER_SCALE_FORMAT_A8B8G8R8 0xc
606#define GCM_TRANSFER_SCALE_FORMAT_X8B8G8R8 0xd
609#define GCM_TRANSFER_OPERATION_SRCCOPY_AND 0
611#define GCM_TRANSFER_OPERATION_ROP_AND 1
613#define GCM_TRANSFER_OPERATION_BLEND_AND 2
615#define GCM_TRANSFER_OPERATION_SRCCOPY 3
617#define GCM_TRANSFER_OPERATION_SRCCOPY_PREMULT 4
619#define GCM_TRANSFER_OPERATION_BLEND_PREMULT 5
622#define GCM_TRANSFER_ORIGIN_CENTER 1
624#define GCM_TRANSFER_ORIGIN_CORNER 2
627#define GCM_TRANSFER_INTERPOLATOR_NEAREST 0
629#define GCM_TRANSFER_INTERPOLATOR_LINEAR 1
632#define GCM_TRANSFER_SURFACE_FORMAT_R5G6B5 4
634#define GCM_TRANSFER_SURFACE_FORMAT_A8R8G8B8 0xa
636#define GCM_TRANSFER_SURFACE_FORMAT_Y32 0xb
638#define GCM_FREQUENCY_MODULO 1
639#define GCM_FREQUENCY_DIVIDE 0
641#define GCM_COMPMODE_DISABLED 0
642#define GCM_COMPMODE_C32_2X1 7
643#define GCM_COMPMODE_C32_2X2 8
644#define GCM_COMPMODE_Z32_SEPSTENCIL 9
645#define GCM_COMPMODE_Z32_SEPSTENCIL_REG 10
646#define GCM_COMPMODE_Z32_SEPSTENCIL_REGULAR 10
647#define GCM_COMPMODE_Z32_SEPSTENCIL_DIAGONAL 11
648#define GCM_COMPMODE_Z32_SEPSTENCIL_ROTATED 12
650#define GCM_ZCULL_Z16 1
651#define GCM_ZCULL_Z24S8 2
653#define GCM_ZCULL_MSB 0
654#define GCM_ZCULL_LONES 1
656#define GCM_ZCULL_LESS 0
657#define GCM_ZCULL_GREATER 1
659#define GCM_SCULL_SFUNC_NEVER 0
660#define GCM_SCULL_SFUNC_LESS 1
661#define GCM_SCULL_SFUNC_EQUAL 2
662#define GCM_SCULL_SFUNC_LEQUAL 3
663#define GCM_SCULL_SFUNC_GREATER 4
664#define GCM_SCULL_SFUNC_NOTEQUAL 5
665#define GCM_SCULL_SFUNC_GEQUAL 6
666#define GCM_SCULL_SFUNC_ALWAYS 7
668#define GCM_CONDITIONAL 2
670#define GCM_ZPASS_PIXEL_CNT 1
671#define GCM_ZCULL_STATS 2
672#define GCM_ZCULL_STATS1 3
673#define GCM_ZCULL_STATS2 4
674#define GCM_ZCULL_STATS3 5
676#define GCM_ZCULL_ALIGN_OFFSET 4096
677#define GCM_ZCULL_ALIGN_WIDTH 64
678#define GCM_ZCULL_ALIGN_HEIGHT 64
679#define GCM_ZCULL_ALIGN_CULLSTART 4096
680#define GCM_ZCULL_COMPRESSION_TAG_BASE_MAX 0x7FF
681#define GCM_ZCULL_RAM_SIZE_MAX 0x00300000
683#define GCM_TILE_ALIGN_OFFSET 0x00010000
684#define GCM_TILE_ALIGN_SIZE 0x00010000
685#define GCM_TILE_LOCAL_ALIGN_HEIGHT 32
686#define GCM_TILE_MAIN_ALIGN_HEIGHT 64
688#define GCM_TILE_ALIGN_BUFFER_START_BOUNDARY 8
690#define GCM_FRAGMENT_UCODE_LOCAL_ALIGN_OFFSET 64
691#define GCM_FRAGMENT_UCODE_MAIN_ALIGN_OFFSET 128
693#define GCM_SURFACE_LINEAR_ALIGN_OFFSET 64
694#define GCM_SURFACE_SWIZZLE_ALIGN_OFFSET 128
696#define GCM_TEXTURE_SWIZZLE_ALIGN_OFFSET 128
697#define GCM_TEXTURE_CUBEMAP_ALIGN_OFFSET 128
698#define GCM_TEXTURE_SWIZZLED_CUBEMAP_FACE_ALIGN_OFFSET 128
700#define GCM_VERTEX_TEXTURE_CACHE_LINE_SIZE 32
701#define GCM_L2_TEXTURE_CACHE_LOCAL_LINE_SIZE 64
702#define GCM_L2_TEXTURE_CACHE_MAIN_LINE_SIZE 128
704#define GCM_TEXTURE_REMAP_MODE(order, inputA, inputR, inputG, inputB, outputA, outputR, outputG, outputB) \
706 ((inputA) << GCM_TEXTURE_REMAP_COLOR_A_SHIFT) | ((inputR) << GCM_TEXTURE_REMAP_COLOR_R_SHIFT) | \
707 ((inputG) << GCM_TEXTURE_REMAP_COLOR_G_SHIFT) | ((inputB) << GCM_TEXTURE_REMAP_COLOR_B_SHIFT) | \
708 ((outputA) << GCM_TEXTURE_REMAP_TYPE_A_SHIFT) | ((outputR) << GCM_TEXTURE_REMAP_TYPE_R_SHIFT) | \
709 ((outputG) << GCM_TEXTURE_REMAP_TYPE_G_SHIFT) | ((outputB) << GCM_TEXTURE_REMAP_TYPE_B_SHIFT))
1318void gcmSetTile(
const u8 index,
const u8 location,
const u32 offset,
const u32
size,
const u32 pitch,
const u8 comp,
const u16 base,
const u8 bank);
1320void gcmSetZcull(
const u8 index,
const u32 offset,
const u32 width,
const u32 height,
const u32 cullStart,
const u32 zFormat,
const u32 aaFormat,
const u32 zCullDir,
const u32 zCullFormat,
const u32 sFunc,
const u32 sRef,
const u32 sMask);
1321s32
gcmSetTileInfo(
const u8 index,
const u8 location,
const u32 offset,
const u32
size,
const u32 pitch,
const u8 comp,
const u16 base,
const u8 bank);
1324s32
gcmBindZcull(
const u8 index,
const u32 offset,
const u32 width,
const u32 height,
const u32 cullStart,
const u32 zFormat,
const u32 aaFormat,
const u32 zCullDir,
const u32 zCullFormat,
const u32 sFunc,
const u32 sRef,
const u32 sMask);
s32 gcmUnbindZcull(const u8 index)
struct _reportData gcmReportData
struct _notifyData gcmNotifyData
s32 gcmSetCursorDisable()
s32 gcmDumpGraphicsError()
s32 gcmInitBody(gcmContextData **ctx, const u32 cmdSize, const u32 ioSize, const void *ioAddress)
Initialize the RSX context.
void gcmSetVBlankFrequency(const u32 freq)
const gcmDisplayInfo * gcmGetDisplayInfo()
s32 gcmInitDefaultFifoMode(s32 mode)
s32 gcmSetFlip(gcmContextData *context, const u8 bufferId)
Enqueues a flip command into the command buffer.
s32 gcmMapEaIoAddressWithFlags(const void *ea, const u32 io, const u32 size, u32 userflags)
gcmNotifyData * gcmGetNotifyDataAddress(const u32 index)
s32(* gcmContextCallback)(struct _gcmCtxData *context, u32 count)
s32 gcmGetDisplayBufferByFlipIndex(const u32 qid)
struct _gcmOffsetTable gcmOffsetTable
s32 gcmSetDefaultCommandBufferAndSegmentWordSize(const u32 bufferSize, const u32 segmentSize)
s32 gcmMapLocalMemory(void **address, u32 *size)
void gcmSetSecondVHandler(void(*handler)(const u32 head))
u32 gcmGetReport(const u32 type, const u32 index)
const gcmTileInfo * gcmGetTileInfo()
u32 gcmGetDefaultSegmentWordSize()
void gcmSetUserHandler(void(*handler)(const u32 cause))
s32 gcmUnmapEaIoAddress(const void *ea)
u64 gcmGetTimeStamp(const u32 index)
s32 gcmUnmapIoAddress(const u32 io)
struct _gcmTexture gcmTexture
RSX Texture data structure.
void gcmSetZcull(const u8 index, const u32 offset, const u32 width, const u32 height, const u32 cullStart, const u32 zFormat, const u32 aaFormat, const u32 zCullDir, const u32 zCullFormat, const u32 sFunc, const u32 sRef, const u32 sMask)
s32 gcmBindTile(const u8 index)
void gcmSetFlipMode(const u32 mode)
Set flip mode.
void gcmSetSecondVFrequency(const u32 freq)
gcmControlRegister * gcmGetControlRegister()
Obtain registers for controlling the command buffer.
struct _gcmCfg gcmConfiguration
RSX Configuration structure.
s32 gcmInitSystemMode(const u64 mode)
u64 gcmGetTimeStampLocation(const u32 index, const u32 location)
s32 gcmSetDefaultFifoSize(const u32 bufferSize, const u32 segmentSize)
gcmReportData * gcmGetReportDataAddressLocation(const u32 index, const u32 location)
struct _gcmCtrlRegister gcmControlRegister
RSX control data structure.
s32 gcmSetTileInfo(const u8 index, const u8 location, const u32 offset, const u32 size, const u32 pitch, const u8 comp, const u16 base, const u8 bank)
void gcmSetUserCommand(void(*handler)(const u32 cause))
void gcmSetVBlankHandler(void(*handler)(const u32 head))
Register a callback function to be called upon VBlank.
s32 gcmGetCurrentDisplayBufferId(u8 *id)
u32 gcmSetPrepareFlip(gcmContextData *context, const u8 id)
Perform preprocessing for display output.
void gcmSetInvalidateTile(const u8 index)
s32 gcmBindZcull(const u8 index, const u32 offset, const u32 width, const u32 height, const u32 cullStart, const u32 zFormat, const u32 aaFormat, const u32 zCullDir, const u32 zCullFormat, const u32 sFunc, const u32 sRef, const u32 sMask)
void gcmSetTile(const u8 index, const u8 location, const u32 offset, const u32 size, const u32 pitch, const u8 comp, const u16 base, const u8 bank)
s32 gcmUnbindTile(const u8 index)
void gcmResetFlipStatus()
Reset the flip status.
void gcmSetWaitFlip(gcmContextData *context)
Wait for a flip to be completed.
struct _gcmZcullInfo gcmZcullInfo
s32 gcmSetCursorPosition(const s32 x, const s32 y)
s32 gcmSetDisplayBuffer(const u8 bufferId, const u32 offset, const u32 pitch, const u32 width, const u32 height)
Configures a display framebuffer.
#define GCM_MAX_MRT_COUNT
maximum count of multiple render targets
struct _gcmTransferSwizzle gcmTransferSwizzle
struct _gcmTransferScale gcmTransferScale
Specify scaled image blit geometry and format for rsxSetTransferImage()
gcmReportData * gcmGetReportDataAddress(const u32 index)
s32 gcmSortRemapEaIoAddress()
s32 gcmReserveIoMapSize(const u32 size)
s32 gcmMapEaIoAddress(const void *ea, const u32 io, const u32 size)
struct _gcmTransferSurface gcmTransferSurface
Specify destination surface characteristics for rsxSetTransferImage().
s32 gcmAddressToOffset(const void *address, u32 *offset)
Converts an effective address in RSX memory to an offset.
void gcmGetOffsetTable(gcmOffsetTable *table)
u32 * gcmGetLabelAddress(const u8 index)
Get address of specified label.
struct _gcmDisplayInfo gcmDisplayInfo
Display information.
void gcmSetDefaultCommandBuffer()
struct _gcmCtxData gcmContextData
RSX Context data structure.
s32 gcmUnreserveIoMapSize(const u32 size)
const gcmZcullInfo * gcmGetZcullInfo()
s32 gcmSetCursorImageOffset(const u32 offset)
void gcmSetGraphicsHandler(void(*handler)(const u32 val))
Register a graphics callback function.
s32 gcmSetFlipImmediate(const u8 id)
void gcmSetDebugOutputLevel(s32 level)
s32 gcmIoOffsetToAddress(u32 offset, void **address)
Converts an offset to an effective address in RSX memory.
s32 gcmMapMainMemory(const void *address, const u32 size, u32 *offset)
Maps a memory block in main memory for RSX to access it.
u32 gcmGetTiledPitchSize(const u32 size)
struct _gcmTileInfo gcmTileInfo
s32 gcmGetConfiguration(gcmConfiguration *config)
Retrieves the RSX configuration.
struct _gcmSurface gcmSurface
RSX target surface data structure.
u32 gcmGetDefaultCommandWordSize()
void gcmSetFlipHandler(void(*handler)(const u32 head))
Register a callback function for when a flip is executed.
void gcmSetQueueHandler(void(*handler)(const u32 head))
u32 gcmGetReportDataLocation(const u32 index, const u32 location)
u32 gcmGetFlipStatus()
Gets the flip status.
s64 gcmGetLastSecondVTime()
RSX Configuration structure.
void *ioAddress ATTRIBUTE_PRXPTR
effective start address of I/O mapped main memory to be used by RSX
u32 localSize
maximum available size of RSX memory
u32 memoryFreq
RSX memory clock frequency.
u32 ioSize
maximum available size of I/O mapped main memory to be used by RSX
u32 coreFreq
Core clock frequency of RSX.
void *localAddress ATTRIBUTE_PRXPTR
effective start address of RSX memory
RSX control data structure.
vu32 get
member for accessing the GET register
vu32 put
member for accessing the PUT register
vu32 ref
member for accessing the REF register. Initial value is 0xFFFFFFFF
RSX Context data structure.
u32 *__restrict begin ATTRIBUTE_PRXPTR
Start address of command buffer.
u32 *__restrict current ATTRIBUTE_PRXPTR
Current address of command buffer.
gcmContextCallback callback ATTRIBUTE_PRXPTR
Callback function that is called when current reaches end
u32 *__restrict end ATTRIBUTE_PRXPTR
End address of command buffer.
u32 pitch
Pitch for display (width multipied by the number of bytes per pixel).
u32 height
Height for display (in pixels)
u32 width
Width for display (in pixels)
RSX target surface data structure.
u8 colorLocation[4]
Location of the color buffer.
u8 depthLocation
Location of the depth buffer.
u8 antiAlias
Antialiasing format type.
u16 x
Window offset in x direction (0 - 4095).
u8 depthFormat
Format of the depth buffer.
u32 depthPitch
Size of a depth buffer line in bytes.
u16 height
Height of the render buffer (1 - 4096).
u8 _pad[2]
unused padding bytes. most be 0.
u8 colorFormat
Format of the color buffer.
u32 colorOffset[4]
Offset from the base address of the color buffer.
u8 type
Type of render target.
u32 colorPitch[4]
Size of a color buffer line in bytes.
u16 width
Width of the render buffer (1 - 4096).
u32 depthOffset
Offset from the base address of the depth buffer.
u8 colorTarget
Target of the color buffer.
u16 y
Window offset in y direction (0 - 4095).
RSX Texture data structure.
u16 height
Texture height in pixels.
u16 width
Texture width in pixels.
u8 _pad
unused padding byte.
u32 offset
Offset of texture data.
u32 pitch
Size of a texture line in bytes.
u8 location
Location of texture.
u8 mipmap
Indicates if this is a mip-mapped texture.
u32 remap
Color remapping bitfield.
u8 dimension
Texture dimension.
u8 cubemap
Indicates if this is a cube-mapped texture.
Specify scaled image blit geometry and format for rsxSetTransferImage()
s16 clipX
X origin of clipping rectangle, within the destination surface.
s32 ratioX
Ratio in X direction of the source rectangle size to the destination rectangle size,...
u32 operation
Blit operation. Possible values:
u16 inW
Width of the source rectangle.
u16 outH
Height of the destination rectangle.
u32 conversion
Not sure what this dones. Possible values:
u16 clipH
Height of clipping rectangle, within the destination surface.
u16 inX
X origin of destination rectangle.
u16 pitch
Pitch size, in bytes, of the source image data (width multiplied by the number of bytes in each pixel...
s16 outX
X origin of destination rectangle.
u16 inY
Y origin of destination rectangle.
u16 outW
Width of the destination rectangle.
u16 clipW
Width of clipping rectangle, within the destination surface.
u32 offset
Image data offset, e.g., a value returned by gcmAddressToOffset() or gcmMapMainMemory().
s32 ratioY
Ratio in Y direction of the source rectangle size to the destination rectangle size,...
s16 outY
Y origin of destination rectangle.
u16 inH
Height of the source rectangle.
u32 format
Format of image data. Possible values:
u8 origin
How the origin of each pixel is determined. Possible values:
s16 clipY
Y origin of clipping rectangle, within the destination surface.
u8 interp
Sampling for scaled blits. Possible values:
Specify destination surface characteristics for rsxSetTransferImage().
u32 format
Format of destination surface. Possible values are:
u16 pitch
Pitch for destination surface (width multipied by the number of bytes per pixel).
u8 _pad0[2]
unused padding bytes. most be 0.
u32 offset
Destination suface memory offset, e.g., a value returned by gcmAddressToOffset() or gcmMapMainMemory(...