sdk-core v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Loading...
Searching...
No Matches
libgs.h
Go to the documentation of this file.
1/*
2# _____ ___ ____ ___ ____
3# ____| | ____| | | |____|
4# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5#-----------------------------------------------------------------------
6# (c) 2009 Lion
7# Licenced under Academic Free License version 2.0
8# Review ps2sdk README & LICENSE files for further details.
9*/
10
16
17#ifndef __LIBGS_H__
18#define __LIBGS_H__
19
20#include <tamtypes.h>
21
22typedef struct {
32
34#define GS_INIT_RESET 0
36#define GS_INIT_DRAW_RESET 1
37
38#define GS_NONINTERLACED 0x00
39#define GS_INTERLACED 0x01
40
42#define GS_FFMD_FIELD 0x00
44#define GS_FFMD_FRAME 0x01
45
46/* About the supported video modes:
47 As GsSetDefaultDisplayEnv() has been modified to provide functionality that is similar to the Sony sceGsSetDefDispEnv() function,
48 it will now automatically in fill in the GS_DISPENV structure with values for the video mode that is specified for GsResetGraph().
49
50 However, as with the Sony function:
51 1. Only NTSC, PAL and 480P video modes are supported.
52 2. MAGV isn't automatically calculated.
53
54 It is possible to cover these limitations by setting the relevant values after calling GsSetDefaultDisplayEnv(), but I do not know how these values are to be calculated for other video modes.
55*/
56enum GsVideoModes{
57 GS_MODE_NTSC = 0x02,
58 GS_MODE_PAL,
59
60 GS_MODE_DTV_480P = 0x50,
61};
62
63#define GS_DISABLE 0
64#define GS_ENABLE 1
65
71 GS_PRIM_TRI,
72 GS_PRIM_TRI_STRIP,
73 GS_PRIM_TRI_FAN,
75};
76
78#define GS_PIXMODE_32 0
79#define GS_PIXMODE_24 1
80#define GS_PIXMODE_16 2
81#define GS_PIXMODE_16S 10
82
84#define GS_CLUT_32 0
85#define GS_CLUT_16 2
86#define GS_CLUT_16S 10
87
89#define GS_TEX_32 0
90#define GS_TEX_24 1
91#define GS_TEX_16 2
92#define GS_TEX_16S 10
93#define GS_TEX_8 19
94#define GS_TEX_4 20
95#define GS_TEX_8H 27
96#define GS_TEX_4HL 36
97#define GS_TEX_4HH 44
98
100#define GS_ZBUFF_32 48
101#define GS_ZBUFF_24 49
102#define GS_ZBUFF_16 50
103#define GS_ZBUFF_16S 58
104
107 GS_ALPHA_NEVER =0,
108 GS_ALPHA_ALWAYS,
109 GS_ALPHA_LESS,
110 GS_ALPHA_LEQUAL,
111 GS_ALPHA_EQUAL,
112 GS_ALPHA_GEQUAL,
113 GS_ALPHA_GREATER,
114 GS_ALPHA_NOTEQUAL,
115};
116
121 GS_ALPHA_FB_ONLY,
122 GS_ALPHA_ZB_ONLY,
123 GS_ALPHA_RGB_ONLY
124};
125
128 GS_ZBUFF_NEVER =0,
129 GS_ZBUFF_ALWAYS,
130 GS_ZBUFF_GEQUAL,
131 GS_ZBUFF_GREATER
132};
133
134// Texture Details
136#define GS_TEX_CALC 0
138#define GS_TEX_FIXED 1
139
156
162 GS_TEX_NEAREST_MIPMAP_NEAREST,
163 GS_TEX_NEAREST_MIPMAP_LINEAR,
164 GS_TEX_LINEAR_MIPMAP_NEAREST,
165 GS_TEX_LINEAR_MIPMAP_LINEAR
166};
167
169#define GS_TEX_MIPMAP_DEFINE 0
171#define GS_TEX_MIPMAP_AUTO 1
172
180
182 GS_GIF_PACKED =0,
183 GS_GIF_REGLIST,
184 GS_GIF_IMAGE,
187};
188
189/*GS Privileged Regs*/
191#define gs_p_pmode 0x12000000
193#define gs_p_smode1 0x12000010
195#define gs_p_smode2 0x12000020
197#define gs_p_dispfb1 0x12000070
199#define gs_p_display1 0x12000080
201#define gs_p_dispfb2 0x12000090
203#define gs_p_display2 0x120000a0
204#define gs_p_extbuf 0x120000b0
205#define gs_p_extdata 0x120000c0
206#define gs_p_extwrite 0x120000d0
208#define gs_p_bgcolor 0x120000e0
210#define gs_p_csr 0x12001000
212#define gs_p_imr 0x12001010
214#define gs_p_busdir 0x12001040
216#define gs_p_siglblid 0x12001080
217
218
219/*GS General Purpose Regs*/
221#define gs_g_prim 0x00
223#define gs_g_rgbaq 0x01
225#define gs_g_st 0x02
227#define gs_g_uv 0x03
229#define gs_g_xyzf2 0x04
231#define gs_g_xyz2 0x05
233#define gs_g_tex0_1 0x06
235#define gs_g_tex0_2 0x07
237#define gs_g_clamp_1 0x08
239#define gs_g_clamp_2 0x09
241#define gs_g_fog 0x0a
243#define gs_g_xyzf3 0x0c
245#define gs_g_xyz3 0x0d
246#define gs_g_tex1_1 0x14
247#define gs_g_tex1_2 0x15
249#define gs_g_tex2_1 0x16
251#define gs_g_tex2_2 0x17
253#define gs_g_xyoffset_1 0x18
255#define gs_g_xyoffset_2 0x19
257#define gs_g_prmodecont 0x1a
259#define gs_g_prmode 0x1b
260#define gs_g_texclut 0x1c
262#define gs_g_scanmsk 0x22
264#define gs_g_miptbp1_1 0x34
266#define gs_g_miptbp1_2 0x35
268#define gs_g_miptbp2_1 0x36
270#define gs_g_miptbp2_2 0x37
272#define gs_g_texa 0x3b
274#define gs_g_fogcol 0x3d
276#define gs_g_texflush 0x3f
278#define gs_g_scissor_1 0x40
280#define gs_g_scissor_2 0x41
282#define gs_g_alpha_1 0x42
284#define gs_g_alpha_2 0x43
286#define gs_g_dimx 0x44
288#define gs_g_dthe 0x45
290#define gs_g_colclamp 0x46
292#define gs_g_test_1 0x47
294#define gs_g_test_2 0x48
296#define gs_g_pabe 0x49
298#define gs_g_fba_1 0x4a
300#define gs_g_fba_2 0x4b
302#define gs_g_frame_1 0x4c
304#define gs_g_frame_2 0x4d
306#define gs_g_zbuf_1 0x4e
308#define gs_g_zbuf_2 0x4f
310#define gs_g_bitbltbuf 0x50
312#define gs_g_trxpos 0x51
314#define gs_g_trxreg 0x52
316#define gs_g_trxdir 0x53
317#define gs_g_hwreg 0x54
318#define gs_g_signal 0x60
319#define gs_g_finish 0x61
320#define gs_g_label 0x62
322#define gs_g_nop 0x7f
323
324
325/*GIF Register Descriptors (non-registers) */
327#define gif_rd_ad 0x0e
329#define gif_rd_nop 0x0f
330
331/* MISC */
332
333#ifndef QWORD
334typedef struct {
335
336 u64 lo;
337 u64 hi;
338
339}QWORD __attribute__((aligned(16)));/*aligned 128bits*/
340
341#endif/*QWORD*/
342
343/* GS Privileged Reg STRUCTs */
344
345typedef struct {
351 u32 crt_out :3;
353 u32 mmod :1;
355 u32 amod :1;
361 u32 nfld :1;
363 u32 pad1 :15;
365 u32 exvwins :10;
367 u32 exvwine :10;
369 u32 exsyncmd :1;
371 u32 pad2 :11;
372}GS_PMODE;
373
374typedef struct {
375 u64 rc :3;
376 u64 lc :7;
377 u64 t1248 :2;
378 u64 slck :1;
379 u64 cmod :2;
380 u64 ex :1;
381 u64 prst :1;
382 u64 sint :1;
383 u64 xpck :1;
384 u64 pck2 :2;
385 u64 spml :4;
386 u64 gcont :1;
387 u64 phs :1;
388 u64 pvs :1;
389 u64 pehs :1;
390 u64 pevs :1;
391 u64 clksel :2;
392 u64 nvck :1;
393 u64 slck2 :1;
394 u64 vcksel :2;
395 u64 vhp :2;
396 u64 pad :26;
397}GS_SMODE1;
398
399typedef struct {
400 u32 interlace :1;
401 u32 field_frame :1;
402 u32 vesta_dpms :2;
403 u64 pad2 :60;
404}GS_SMODE2;
405
406typedef struct {
408 u32 address :9;
410 u32 fbw :6;
412 u32 psm :5;
414 u32 pad1 :12;
416 u32 x :11;
418 u32 y :11;
420 u32 pad2 :10;
421}GS_DISPFB;
422
423typedef struct {
425 u32 display_x :12;
427 u32 display_y :11;
429 u32 magnify_h :4;
431 u32 magnify_v :2;
433 u32 pad1 :3;
435 u32 display_w :12;
437 u32 display_h :11;
439 u32 pad2 :9;
441
442typedef struct {
443 u64 exbp : 14;
444 u64 exbw : 6;
445 u64 fbin : 2;
446 u64 wffmd : 1;
447 u64 emoda : 2;
448 u64 emodc : 2;
449 u64 pad1 : 5;
450 u64 wdx : 11;
451 u64 wdy : 11;
452 u64 pad2 : 10;
453}GS_EXTBUF;
454
455typedef struct {
457 u32 x :12;
459 u32 y :11;
465 u32 pad1 :3;
467 u32 write_w :12;
469 u32 write_h :11;
471 u32 pad2 :9;
473
474typedef struct {
476 u32 write :1;
478 u32 pad1 :31;
480 u32 pad2;
482
483typedef struct {
485 u8 r;
487 u8 g;
489 u8 b;
493 float padq;
495
496typedef struct {
508 u32 exhsint :1;
510 u32 exvsint :1;
512 u32 pad1 :1;
514 u32 flush :1;
516 u32 reset :1;
518 u32 exverr :1;
520 u32 exfield :1;
522 u32 nfield :1;
530 u32 gs_id :8;
532 u32 pad2 :32;
533
534}GS_CSR;
535
536typedef struct {
538 u32 pad1 :8;
550 u32 exhs_mask :1;
552 u32 exvs_mask :1;
554 u32 pad2 :17;
556 u32 pad3;
557}GS_IMR;
558
559typedef struct {
561 u32 direction :1;
563 u32 p0 :31;
565 u32 p1;
566}GS_BUSDIR;
567
568#if 0
569typedef struct {
571 u32 id;
572 u32 p0;
573}GS_SIGLBLID;
574#endif
575
576/*
577 * GENERAL PURPOSE REG STRUCTS
578 *
579 * these structs have a size of 64 bits
580 */
581
582typedef struct {
583 u64 prim_type :3;
584 u64 iip :1;
585 u64 tme :1;
586 u64 fge :1;
587 u64 abe :1;
588 u64 aa1 :1;
589 u64 fst :1;
590 u64 ctxt :1;
591 u64 fix :1;
592 u64 pad1 :53;
593}GS_PRIM;
594
595typedef struct {
596 u8 r;
597 u8 g;
598 u8 b;
599 u8 a;
600 float q;
601}GS_RGBAQ;
602
603typedef struct {
604 float s;
605 float t;
606}GS_ST;
607
608typedef struct {
609 u64 u :14;
610 u64 pad1 :2;
611 u64 v :14;
612 u64 pad2 :34;
613}GS_UV;
614
615typedef struct {
616 u16 x;
617 u16 y;
618 u32 z:24;
619 u8 f;
620}GS_XYZF;
621
622typedef struct {
623 u16 x;
624 u16 y;
625 u32 z;
626}GS_XYZ;
627
628typedef struct {
629 u64 tb_addr :14;
630 u64 tb_width :6;
631 u64 psm :6;
632 u64 tex_width :4;
633 u64 tex_height :4;
634 u64 tex_cc :1;
635 u64 tex_funtion :2;
636 u64 cb_addr :14;
637 u64 clut_pixmode :4;
638 u64 clut_smode :1;
639 u64 clut_offset :5;
640 u64 clut_loadmode :3;
641
642}GS_TEX0;
643
644typedef struct {
645 u64 wrap_mode_s :2;
646 u64 wrap_mode_t :2;
647 u64 min_clamp_u :10;
648 u64 max_clamp_u :10;
649 u64 min_clamp_v :10;
650 u64 max_clamp_v :10;
651 u64 pad0 :20;
652}GS_CLAMP;
653
654typedef struct {
655 u64 pad1 :56;
656 u8 f;
657}GS_FOG;
658
659typedef struct {
660 u64 lcm :1;
661 u64 pad1 :1;
662 u64 mxl :3;
663 u64 mmag :1;
664 u64 mmin :3;
665 u64 mtba :1;
666 u64 pad2 :9;
667 u64 l :2;
668 u64 pad3 :11;
669 u64 k :12;
670 u64 pad4 :20;
671}GS_TEX1;
672
673typedef struct {
674 u64 pad1 :20;
675 u64 psm :6;
676 u64 pad2 :11;
677 u64 cb_addr :14;
678 u64 clut_psm :4;
679 u64 clut_smode :1;
680 u64 clut_offset :5;
681 u64 clut_loadmode :3;
682}GS_TEX2;
683
684typedef struct {
685 u64 offset_x :16;
686 u16 pad1;
687 u64 offset_y :16;
688 u16 pad2;
690
691typedef struct {
692 u64 control:1;
693 u64 pad1 :63;
695
696typedef struct {
697 u64 pad1 :3;
698 u64 iip :1;
699 u64 tme :1;
700 u64 fge :1;
701 u64 abe :1;
702 u64 aa1 :1;
703 u64 fst :1;
704 u64 ctxt :1;
705 u64 fix :1;
706 u64 pad2 :53;
707}GS_PRMODE;
708
709typedef struct {
710 u64 cb_width :6;
711 u64 clut_uoffset :6;
712 u64 clut_voffset :10;
713 u64 pad0:42;
715
716typedef struct {
717 u64 mask:2;
718 u64 pad0:62;
720
721typedef struct {
722 u64 tb_addr1 :14;
723 u64 tb_width1 :6;
724 u64 tb_addr2 :14;
725 u64 tb_width2 :6;
726 u64 tb_addr3 :14;
727 u64 tb_width3 :6;
728 u64 pad1 :4;
730
731typedef struct {
732 u64 tb_addr4 :14;
733 u64 tb_width4 :6;
734 u64 tb_addr5 :14;
735 u64 tb_width5 :6;
736 u64 tb_addr6 :14;
737 u64 tb_width6 :6;
738 u64 pad0 :4;
740
741typedef struct {
742 u64 alpha_0 : 8;
743 u64 pad1 : 7;
744 u64 alpha_method : 1;
745 u64 pad2 :16;
746 u64 alpha_1 : 8;
747 u64 pad3 :24;
748}GS_TEXA;
749
750typedef struct {
751 u64 r :8;
752 u64 g :8;
753 u64 b :8;
754 u64 pad1 :40;
756
757typedef struct {
759 u64 pad1;
761
762typedef struct {
763 u64 clip_x0 :11;
764 u64 pad1 :5;
765 u64 clip_x1 :11;
766 u64 pad2 :5;
767 u64 clip_y0 :11;
768 u64 pad3 :5;
769 u64 clip_y1 :11;
770 u64 pad4 :5;
772
773typedef struct {
774 u64 a :2;
775 u64 b :2;
776 u64 c :2;
777 u64 d :2;
778 u64 pad0 :24;
779 u64 alpha :8;
780 u64 pad1 :24;
781}GS_ALPHA;
782
783typedef struct {
784 u64 dimx00:3;
785 u64 pad0:1;
786 u64 dimx01:3;
787 u64 pad1:1;
788 u64 dimx02:3;
789 u64 pad2:1;
790 u64 dimx03:3;
791 u64 pad3:1;
792
793 u64 dimx10:3;
794 u64 pad4:1;
795 u64 dimx11:3;
796 u64 pad5:1;
797 u64 dimx12:3;
798 u64 pad6:1;
799 u64 dimx13:3;
800 u64 pad7:1;
801
802 u64 dimx20:3;
803 u64 pad8:1;
804 u64 dimx21:3;
805 u64 pad9:1;
806 u64 dimx22:3;
807 u64 pad10:1;
808 u64 dimx23:3;
809 u64 pad11:1;
810
811 u64 dimx30:3;
812 u64 pad12:1;
813 u64 dimx31:3;
814 u64 pad13:1;
815 u64 dimx32:3;
816 u64 pad14:1;
817 u64 dimx33:3;
818 u64 pad15:1;
819} GS_DIMX;
820
821typedef struct {
822 u64 enable:1;
823 u64 pad01:63;
824} GS_DTHE;
825
826typedef struct {
827 u64 clamp:1;
828 u64 pad01:63;
830
831typedef struct {
832 u64 atest_enable :1;
833 u64 atest_method :3;
834 u64 atest_reference :8;
835 u64 atest_fail_method :2;
836 u64 datest_enable :1;
837 u64 datest_mode :1;
838 u64 ztest_enable :1;
839 u64 ztest_method :2;
840 u64 pad1 :45;
841} GS_TEST;
842
843typedef struct {
844 u64 enable:1;
845 u64 pad0:63;
846}GS_PABE;
847
848typedef struct {
849 u64 alpha:1;
850 u64 pad0:63;
851}GS_FBA;
852
853typedef struct {
854 u64 fb_addr :9;
855 u64 pad1 :7;
856 u64 fb_width :6;
857 u64 pad2 :2;
858 u64 psm :6;
859 u64 pad3 :2;
860 u64 draw_mask :32;
861} GS_FRAME;
862
863typedef struct {
864 u64 fb_addr :9;
865 u64 pad1 :15;
866 u64 psm :4;
867 u64 pad2 :4;
868 u64 update_mask :1;
869 u64 pad3 :31;
870}GS_ZBUF;
871
872typedef struct {
873 u64 src_addr :14;
874 u64 pad1 :2;
875 u64 src_width :6;
876 u64 pad2 :2;
877 u64 src_pixmode :6;
878 u64 pad3 :2;
879 u64 dest_addr :14;
880 u64 pad4 :2;
881 u64 dest_width :6;
882 u64 pad5 :2;
883 u64 dest_pixmode:6;
884 u64 pad6 :2;
886
887typedef struct {
888 u64 src_x :11;
889 u64 pad1 :5;
890 u64 src_y :11;
891 u64 pad2 :5;
892 u64 dest_x :11;
893 u64 pad3 :5;
894 u64 dest_y :11;
895 u64 direction :2;
896 u64 pad4 :3;
897}GS_TRXPOS;
898
899typedef struct {
900 u64 trans_w :12;
901 u64 pad1 :20;
902 u64 trans_h :12;
903 u64 pad2 :20;
904}GS_TRXREG;
905
906
907typedef struct {
908 u64 trans_dir :2;
909 u64 pad1 :62;
910}GS_TRXDIR;
911
912typedef struct {
913 u64 data;
914}GS_HWREG;
915
916typedef struct {
917 u32 signal_id;
918 u32 update_mask;
919}GS_SIGNAL;
920
921typedef struct {
922 u64 pad0;
923}GS_FINISH;
924
925
926typedef struct {
927 u32 label_id;
928 u32 update_mask;
929}GS_LABEL;
930
931typedef struct {
932 u64 pad0;
933}GS_NOP;
934
935/*
936 * GENERAL PURPOSE REG STRUCTS 'WITH' A 64 BIT REG
937 *
938 * these structs have a size of 128 bits (1 QWORD)
939 */
940
941typedef struct {
942 GS_PRIM data;
943 u64 reg;
944}GS_R_PRIM;
945
946typedef struct {
947 GS_RGBAQ data;
948 u64 reg;
950
951typedef struct {
952 GS_ST data;
953 u64 reg;
954}GS_R_ST;
955
956typedef struct {
957 GS_UV data;
958 u64 reg;
959}GS_R_UV;
960
961typedef struct {
962 GS_XYZF data;
963 u64 reg;
964}GS_R_XYZF;
965
966typedef struct {
967 GS_XYZ data;
968 u64 reg;
969}GS_R_XYZ;
970
971typedef struct {
972 GS_TEX0 data;
973 u64 reg;
974}GS_R_TEX0;
975
976typedef struct {
977 GS_CLAMP data;
978 u64 reg;
980
981typedef struct {
982 GS_FOG data;
983 u64 reg;
984}GS_R_FOG;
985
986typedef struct {
987 GS_TEX1 data;
988 u64 reg;
989}GS_R_TEX1;
990
991typedef struct {
992 GS_TEX2 data;
993 u64 reg;
994}GS_R_TEX2;
995
996typedef struct {
997 GS_XYOFFSET data;
998 u64 reg;
1000
1001typedef struct {
1002 GS_PRMODECONT data;
1003 u64 reg;
1005
1006typedef struct {
1007 GS_PRMODE data;
1008 u64 reg;
1010
1011typedef struct {
1012 GS_TEXCLUT data;
1013 u64 reg;
1015
1016typedef struct {
1017 GS_SCANMSK data;
1018 u64 reg;
1020
1021typedef struct {
1022 GS_MIPTBP1 data;
1023 u64 reg;
1024} GS_R_MIPTBP1;
1025
1026typedef struct {
1027 GS_MIPTBP2 data;
1028 u64 reg;
1030
1031typedef struct {
1032 GS_TEXA data;
1033 u64 reg;
1034}GS_R_TEXA;
1035
1036typedef struct {
1037 GS_FOGCOLOR data;
1038 u64 reg;
1040
1041typedef struct {
1042 GS_TEXFLUSH data;
1043 u64 reg;
1045
1046typedef struct {
1047 GS_SCISSOR data;
1048 u64 reg;
1050
1051typedef struct {
1052 GS_ALPHA data;
1053 u64 reg;
1054}GS_R_ALPHA;
1055
1056typedef struct {
1057 GS_DIMX data;
1058 u64 reg;
1059} GS_R_DIMX;
1060
1061typedef struct {
1062 GS_DTHE data;
1063 u64 reg;
1064} GS_R_DTHE;
1065
1066typedef struct {
1067 GS_COLCLAMP data;
1068 u64 reg;
1070
1071typedef struct {
1072 GS_TEST data;
1073 u64 reg;
1074} GS_R_TEST;
1075
1076typedef struct {
1077 GS_PABE data;
1078 u64 reg;
1079}GS_R_PABE;
1080
1081typedef struct {
1082 GS_FBA data;
1083 u64 reg;
1084}GS_R_FBA;
1085
1086typedef struct {
1087 GS_FRAME data;
1088 u64 reg;
1089} GS_R_FRAME;
1090
1091typedef struct {
1092 GS_ZBUF data;
1093 u64 reg;
1094}GS_R_ZBUF;
1095
1096typedef struct {
1097 GS_BITBLTBUF data;
1098 u64 reg;
1100
1101typedef struct {
1102 GS_TRXPOS data;
1103 u64 reg;
1105
1106typedef struct {
1107 GS_TRXREG data;
1108 u64 reg;
1110
1111typedef struct {
1112 GS_TRXDIR data;
1113 u64 reg;
1115
1116typedef struct {
1117 GS_HWREG data;
1118 u64 reg;
1119}GS_R_HWREG;
1120
1121typedef struct {
1122 GS_SIGNAL data;
1123 u64 reg;
1125
1126typedef struct {
1127 GS_FINISH data;
1128 u64 reg;
1130
1131typedef struct {
1132 GS_LABEL data;
1133 u64 reg;
1134}GS_R_LABEL;
1135
1136typedef struct {
1137 GS_NOP data;
1138 u64 reg;
1139}GS_R_NOP;
1140
1141/* Set Funtion For GS Privileged Regs */
1142
1143#define GS_SET_PMODE(enable_rc1, enable_rc2, mmod, amod, blend_style, blend_value) \
1144 *(vu64 *)gs_p_pmode = \
1145 (u64)((enable_rc1 ) & 0x00000001) << 0 | \
1146 (u64)((enable_rc2 ) & 0x00000001) << 1 | \
1147 (u64)((1 ) & 0x00000007) << 2 | \
1148 (u64)((mmod ) & 0x00000001) << 5 | \
1149 (u64)((amod ) & 0x00000001) << 6 | \
1150 (u64)((blend_style) & 0x00000001) << 7 | \
1151 (u64)((blend_value) & 0x000000FF) << 8
1152
1154#define GS_SET_SMODE1(rc, lc, t1248, slck, cmod, ex, prst, sint, xpck, \
1155 pck2, spml, gcont, phs, pvs, pehs, pevs, clksel, \
1156 nvck, slck2, vcksel, vhp) \
1157 *(vu64 *)gs_p_smode1 = \
1158 (u64)((rc ) & 0x00000007) << 0 | \
1159 (u64)((lc ) & 0x0000007F) << 3 | \
1160 (u64)((t1248 ) & 0x00000003) << 10 | \
1161 (u64)((slck ) & 0x00000001) << 12 | \
1162 (u64)((cmod ) & 0x00000003) << 13 | \
1163 (u64)((ex ) & 0x00000001) << 15 | \
1164 (u64)((prst ) & 0x00000001) << 16 | \
1165 (u64)((sint ) & 0x00000001) << 17 | \
1166 (u64)((xpck ) & 0x00000001) << 18 | \
1167 (u64)((pck2 ) & 0x00000003) << 19 | \
1168 (u64)((spml ) & 0x0000000F) << 21 | \
1169 (u64)((gcont ) & 0x00000001) << 25 | \
1170 (u64)((phs ) & 0x00000001) << 26 | \
1171 (u64)((pvs ) & 0x00000001) << 27 | \
1172 (u64)((pehs ) & 0x00000001) << 28 | \
1173 (u64)((pevs ) & 0x00000001) << 29 | \
1174 (u64)((clksel ) & 0x00000003) << 30 | \
1175 (u64)((nvck ) & 0x00000001) << 32 | \
1176 (u64)((slck2 ) & 0x00000001) << 33 | \
1177 (u64)((vcksel ) & 0x00000003) << 34 | \
1178 (u64)((vhp ) & 0x00000003) << 36
1179
1180#define GS_SET_SMODE2(interlace, field_frame, vesta_dpms) \
1181 *(vu64 *)gs_p_smode2 = \
1182 (u64)((interlace ) & 0x00000001) << 0 | \
1183 (u64)((field_frame ) & 0x00000001) << 1 | \
1184 (u64)((vesta_dpms ) & 0x00000003) << 2
1185
1186#define GS_SET_DISPFB1(address, width, psm, x, y) \
1187 *(vu64 *)gs_p_dispfb1=\
1188 (u64)((address ) & 0x000001FF) << 0 | \
1189 (u64)((width ) & 0x0000003F) << 9 | \
1190 (u64)((psm ) & 0x0000001F) << 15 | \
1191 (u64)((x ) & 0x000007FF) << 32 | \
1192 (u64)((y ) & 0x000007FF) << 43
1193
1194#define GS_SET_DISPFB2(address, width, psm, x, y) \
1195 *(vu64 *)gs_p_dispfb2=\
1196 (u64)((address ) & 0x000001FF) << 0 | \
1197 (u64)((width ) & 0x0000003F) << 9 | \
1198 (u64)((psm ) & 0x0000001F) << 15 | \
1199 (u64)((x ) & 0x000007FF) << 32 | \
1200 (u64)((y ) & 0x000007FF) << 43
1201
1202#define GS_SET_DISPLAY1(display_x, display_y,magnify_h,magnify_v,display_w,display_h) \
1203 *(vu64 *)gs_p_display1 = \
1204 (u64)((display_x) & 0x00000FFF) << 0 | \
1205 (u64)((display_y) & 0x000007FF) << 12 | \
1206 (u64)((magnify_h) & 0x0000000F) << 23 | \
1207 (u64)((magnify_v) & 0x00000003) << 27 | \
1208 (u64)((display_w) & 0x00000FFF) << 32 | \
1209 (u64)((display_h) & 0x000007FF) << 44
1210
1211#define GS_SET_DISPLAY2(display_x, display_y,magnify_h,magnify_v,display_w,display_h) \
1212 *(vu64 *)gs_p_display2 = \
1213 (u64)((display_x) & 0x00000FFF) << 0 | \
1214 (u64)((display_y) & 0x000007FF) << 12 | \
1215 (u64)((magnify_h) & 0x0000000F) << 23 | \
1216 (u64)((magnify_v) & 0x00000003) << 27 | \
1217 (u64)((display_w) & 0x00000FFF) << 32 | \
1218 (u64)((display_h) & 0x000007FF) << 44
1219
1220#define GS_SET_EXTBUF(A,B,C,D,E,F,G,H) \
1221 *(vu64 *)gs_p_extbuf = \
1222 (u64)((A) & 0x00003FFF) << 0 | \
1223 (u64)((B) & 0x0000003F) << 14 | \
1224 (u64)((C) & 0x00000003) << 20 | \
1225 (u64)((D) & 0x00000001) << 22 | \
1226 (u64)((E) & 0x00000003) << 23 | \
1227 (u64)((F) & 0x00000003) << 25 | \
1228 (u64)((G) & 0x000007FF) << 32 | \
1229 (u64)((H) & 0x000007FF) << 43
1230
1231#define GS_SET_EXTDATA(x, y, sample_r_h, sample_r_v, write_w, write_h) \
1232 *(vu64 *)gs_p_extdata = \
1233 (u64)((x ) & 0x00000FFF) << 0 | \
1234 (u64)((y ) & 0x000007FF) << 12 | \
1235 (u64)((sample_r_h ) & 0x0000000F) << 23 | \
1236 (u64)((sample_r_v ) & 0x00000003) << 27 | \
1237 (u64)((write_w ) & 0x00000FFF) << 32 | \
1238 (u64)((write_h ) & 0x000007FF) << 44
1239
1240#define GS_SET_EXTWRITE(write)\
1241 *(vu64 *)gs_p_extwrite = \
1242 (u64)((write) & 0x00000001)
1243
1244#define GS_SET_BGCOLOR(r,g,b) \
1245 *(vu64 *)gs_p_bgcolor = \
1246 (u64)((r) & 0x000000FF) << 0 | \
1247 (u64)((g) & 0x000000FF) << 8 | \
1248 (u64)((b) & 0x000000FF) << 16
1249
1250#define GS_SET_CSR(signal_evnt,finish_evnt,hsync_intrupt,vsync_intrupt,write_terminate,flush,reset,nfield,current_field,fifo_status,gs_rev_number,gs_id) \
1251 *(vu64 *)gs_p_csr = \
1252 (u64)((signal_evnt ) & 0x00000001) << 0 | \
1253 (u64)((finish_evnt ) & 0x00000001) << 1 | \
1254 (u64)((hsync_intrupt ) & 0x00000001) << 2 | \
1255 (u64)((vsync_intrupt ) & 0x00000001) << 3 | \
1256 (u64)((write_terminate) & 0x00000001) << 4 | \
1257 (u64)((flush ) & 0x00000001) << 8 | \
1258 (u64)((reset ) & 0x00000001) << 9 | \
1259 (u64)((nfield ) & 0x00000001) << 12 | \
1260 (u64)((current_field ) & 0x00000001) << 13 | \
1261 (u64)((fifo_status ) & 0x00000003) << 14 | \
1262 (u64)((gs_rev_number ) & 0x000000FF) << 16 | \
1263 (u64)((gs_id ) & 0x000000FF) << 24
1264
1265#define GS_SET_IMR(signal_mask, finish_mask, hsync_mask, vsync_mask, write_mask, exhs_mask, exvs_mask) \
1266 *(vu64 *)gs_p_imr = \
1267 (u64)((signal_mask) & 0x00000001) << 8 | \
1268 (u64)((finish_mask) & 0x00000001) << 9 | \
1269 (u64)((hsync_mask ) & 0x00000001) << 10 | \
1270 (u64)((vsync_mask ) & 0x00000001) << 11 | \
1271 (u64)((write_mask ) & 0x00000001) << 12 | \
1272 (u64)((exhs_mask ) & 0x00000001) << 13 | \
1273 (u64)((exvs_mask ) & 0x00000001) << 14
1274
1275#define GS_SET_BUSDIR(direction) \
1276 *(vu64 *)gs_p_busdir = \
1277 (u64)((direction) & 0x00000001)
1278
1279#define GS_SET_SIGLBLID(signal_id, label_id) \
1280 *(vu64 *)gs_p_siglblid = \
1281 (u64)((signal_id ) & 0xFFFFFFFF) << 0 | \
1282 (u64)((label_id ) & 0xFFFFFFFF) << 32
1283
1284/*
1285 * These are use to SET the individual values
1286 * in each of the readable Privileged registers.
1287 */
1288
1289#define GS_SET_CSR_signal_evnt(val) \
1290 GS_SET_CSR(val,0,0,0,0,0,0,0,0,0,0,0)
1291
1292#define GS_SET_CSR_finish_evnt(val) \
1293 GS_SET_CSR(0,val,0,0,0,0,0,0,0,0,0,0)
1294
1295#define GS_SET_CSR_hsync_intrupt(val) \
1296 GS_SET_CSR(0,0,val,0,0,0,0,0,0,0,0,0)
1297
1298#define GS_SET_CSR_vsync_intrupt(val) \
1299 GS_SET_CSR(0,0,0,val,0,0,0,0,0,0,0,0)
1300
1301#define GS_SET_CSR_write_terminate(val) \
1302 GS_SET_CSR(0,0,0,0,val,0,0,0,0,0,0,0)
1303
1304#define GS_SET_CSR_flush(val) \
1305 GS_SET_CSR(0,0,0,0,0,val,0,0,0,0,0,0)
1306
1307#define GS_SET_CSR_reset(val) \
1308 GS_SET_CSR(0,0,0,0,0,0,val,0,0,0,0,0)
1309
1310/*nfield (r)*/
1311/*current_field (r)*/
1312/*fifo_status (r)*/
1313/*gs_rev_number (r)*/
1314/*gs_id (r)*/
1315
1316/*
1317 * These are use to GET the individual values
1318 * in each of the readable Privileged registers.
1319 */
1320
1321#define GS_GET_CSR_signal_evnt \
1322 (*((vu64 *)(gs_p_csr)) & (0x00000001 << 0))
1323
1324#define GS_GET_CSR_finish_evnt \
1325 (*((vu64 *)(gs_p_csr)) & (0x00000001 << 1))
1326
1327#define GS_GET_CSR_hsync_intrupt \
1328 (*((vu64 *)(gs_p_csr)) & (0x00000001 << 2))
1329
1330#define GS_GET_CSR_vsync_intrupt \
1331 (*((vu64 *)(gs_p_csr)) & (0x00000001 << 3))
1332
1333#define GS_GET_CSR_write_terminate \
1334 (*((vu64 *)(gs_p_csr)) & (0x00000001 << 4))
1335/*flush (w)*/
1336
1337/*reset (w)*/
1338
1339#define GS_GET_CSR_write_nfield \
1340 (*((vu64 *)(gs_p_csr)) & (0x00000001 << 12))
1341
1342#define GS_GET_CSR_current_field \
1343 (*((vu64 *)(gs_p_csr)) & (0x00000001 << 13))
1344
1345#define GS_GET_CSR_fifo_status \
1346 (*((vu64 *)(gs_p_csr)) & (0x00000003 << 14))
1347
1348#define GS_GET_CSR_gs_rev_number \
1349 (*((vu64 *)(gs_p_csr)) & (0x000000FF << 16))
1350
1351#define GS_GET_CSR_gs_id \
1352 (*((vu64 *)(gs_p_csr)) & (0x000000FF << 24))
1353
1354/* 'SET' GENERAL PURPOSE REG STRUCTS 'WITHOUT' REG */
1355
1356#define gs_setPRIM(p, _prim_type,_iip,_tme,_fge,_abe,_aa1,_fst,_ctxt,_fix)\
1357 (p)->prim_type = _prim_type, \
1358 (p)->iip = _iip, \
1359 (p)->tme = _tme, \
1360 (p)->fge = _fge, \
1361 (p)->abe = _abe, \
1362 (p)->aa1 = _aa1, \
1363 (p)->fst = _fst, \
1364 (p)->ctxt = _ctxt, \
1365 (p)->fix = _fix
1366
1367#define gs_setRGBAQ(p, _r,_g,_b,_a,_q) \
1368 (p)->r = _r, \
1369 (p)->g = _g, \
1370 (p)->b = _b, \
1371 (p)->a = _a, \
1372 (p)->q = _q
1373
1374#define gs_setST(p, _s,_t) \
1375 (p)->s = _s, \
1376 (p)->t = _t
1377
1378#define gs_setUV(p, _u,_v) \
1379 (p)->u = _u, \
1380 (p)->v = _v
1381
1382#define gs_setXYZF2(p, _x,_y,_z,_f) \
1383 (p)->x = _x, \
1384 (p)->y = _y, \
1385 (p)->z = _z, \
1386 (p)->f = _f
1387
1388#define gs_setXYZF3(p, _x,_y,_z,_f) \
1389 (p)->x = _x, \
1390 (p)->y = _y, \
1391 (p)->z = _z, \
1392 (p)->f = _f
1393
1394#define gs_setXYZ2(p, _x,_y,_z) \
1395 (p)->x = _x, \
1396 (p)->y = _y, \
1397 (p)->z = _z
1398
1399#define gs_setXYZ3(p, _x,_y,_z) \
1400 (p)->x = _x, \
1401 (p)->y = _y, \
1402 (p)->z = _z
1403
1404#define gs_setTEX0_1(p, _tb_addr, _tb_width, _psm, _tex_width, _tex_height, _tex_cc, _tex_funtion, _cb_addr, _clut_pixmode, _clut_smode, _clut_offset, _clut_loadmode)\
1405 (p)->tb_addr = _tb_addr, \
1406 (p)->tb_width = _tb_width, \
1407 (p)->psm = _psm, \
1408 (p)->tex_width = _tex_width, \
1409 (p)->tex_height = _tex_height, \
1410 (p)->tex_cc = _tex_cc, \
1411 (p)->tex_funtion = _tex_funtion, \
1412 (p)->cb_addr = _cb_addr, \
1413 (p)->clut_pixmode = _clut_pixmode, \
1414 (p)->clut_smode = _clut_smode, \
1415 (p)->clut_offset = _clut_offset, \
1416 (p)->clut_loadmode = _clut_loadmode
1417
1418#define gs_setTEX0_2 gs_setTEX0_1
1419
1420#define gs_setCLAMP_1(p, wms,wmt,minu,maxu,minv,maxv) \
1421 (p)->wms = wms, \
1422 (p)->wmt = wmt, \
1423 (p)->minu = minu, \
1424 (p)->maxu = maxu, \
1425 (p)->minv = minv, \
1426 (p)->maxv = maxv
1427
1428#define gs_setCLAMP_2 gs_setCLAMP_1
1429
1430#define gs_setFOG(p, _f) \
1431 (p)->f = _f
1432
1433#define gs_setTEX1_1(p, _lcm,_mxl,_mmag,_mmin,_mtba,_l,_k) \
1434 (p)->lcm = _lcm, \
1435 (p)->mxl = _mxl, \
1436 (p)->mmag = _mmag, \
1437 (p)->mmin = _mmin, \
1438 (p)->mtba = _mtba, \
1439 (p)->l = _l, \
1440 (p)->k = _k
1441
1442#define gs_setTEX1_2 gs_setTEX1_1
1443
1444#define gs_setTEX2_1(p, _psm,_cbp,_cpsm,_csm,_csa,_cld) \
1445 (p)->psm = _psm, \
1446 (p)->cbp = _cbp, \
1447 (p)->cpsm = _cpsm, \
1448 (p)->csm = _csm, \
1449 (p)->csa = _csa, \
1450 (p)->cld = _cld
1451
1452#define gs_setTEX2_2 gs_setTEX2_1
1453
1454#define gs_set_XYOFFSET_1(p, _offset_x,_offset_y) \
1455 (p)->offset_x = _offset_x, \
1456 (p)->offset_y = _offset_y
1457
1458#define gs_set_XYOFFSET_2 gs_set_XYOFFSET_1
1459
1460#define gs_set_PRMODECONT(p, _control) \
1461 (p)->control = _control
1462
1463#define gs_setPRMODE(p, _iip,_tme,_fge,_abe,_aa1,_fst,_ctxt,_fix) \
1464 (p)->iip = _iip, \
1465 (p)->tme = _tme, \
1466 (p)->fge = _fge, \
1467 (p)->abe = _abe, \
1468 (p)->aa1 = _aa1, \
1469 (p)->fst = _fst, \
1470 (p)->ctxt = _ctxt, \
1471 (p)->fix = _fix
1472
1473#define gs_setTEXCLUT(p, _cbw,_cou,_cov) \
1474 (p)->cbw = _cbw, \
1475 (p)->cou = _cou, \
1476 (p)->cov = _cov
1477
1478#define gs_setSCANMSK(p, _msk) \
1479 (p)->msk = _msk
1480
1481#define gs_setMIPTBP1_1(p, _tbp1,_tbw1,_tbp2,_tbw2,_tbp3,_tbw3) \
1482 (p)->tbp1 = _tbp1, \
1483 (p)->tbw1 = _tbw1, \
1484 (p)->tbp2 = _tbp2, \
1485 (p)->tbw2 = _tbw2, \
1486 (p)->tbp3 = _tbp3, \
1487 (p)->tbw3 = _tbw3
1488
1489#define gs_setMIPTBP1_2 gs_setMIPTBP1_1
1490
1491#define gs_setMIPTBP2_1(p, _tbp4, _tbw4, _tbp5, _tbw5, _tbp6, _tbw6) \
1492 (p)->tbp4 = _tbp4, \
1493 (p)->tbw4 = _tbw4, \
1494 (p)->tbp5 = _tbp5, \
1495 (p)->tbw5 = _tbw5, \
1496 (p)->tbp6 = _tbp6, \
1497 (p)->tbw6 = _tbw6
1498
1499#define gs_setMIPTBP2_2 gs_setMIPTBP2_1
1500
1501#define gs_setTEXA(p, _alpha_0, _alpha_method, _alpha_1) \
1502 (p)->alpha_0 = _alpha_0, \
1503 (p)->alpha_method = _alpha_method, \
1504 (p)->alpha_1 = _alpha_1
1505
1506#define gs_setFOGCOLOR(p, _r,_g,_b) \
1507 (p)->r = _r, \
1508 (p)->g = _g, \
1509 (p)->b = _b
1510
1511#define gs_setTEXFLUSH(p)
1512
1513#define gs_setSCISSOR_1(p, _clip_x0,_clip_x1,_clip_y0,_clip_y1) \
1514 (p)->clip_x0 = _clip_x0, \
1515 (p)->clip_x1 = _clip_x1, \
1516 (p)->clip_y0 = _clip_y0, \
1517 (p)->clip_y1 = _clip_y1
1518
1519#define gs_setSCISSOR_2 gs_setSCISSOR_1
1520
1521#define gs_setALPHA_1(p, _a,_b,_c,_d,_alpha)\
1522 (p)->a = _a, \
1523 (p)->b = _b, \
1524 (p)->c = _c, \
1525 (p)->d = _d, \
1526 (p)->alpha = _alpha
1527
1528#define gs_setALPHA_2 gs_setALPHA_1
1529
1530#define gs_setDIMX(p, _dimx00,_dimx01,_dimx02,_dimx03,_dimx10,_dimx11,_dimx12,_dimx13,_dimx20,_dimx21,_dimx22,_dimx23,_dimx30,_dimx31,_dimx32,_dimx33) \
1531 (p)->dimx00 = _dimx00, \
1532 (p)->dimx01 = _dimx01, \
1533 (p)->dimx02 = _dimx02, \
1534 (p)->dimx03 = _dimx03, \
1535 (p)->dimx10 = _dimx10, \
1536 (p)->dimx11 = _dimx11, \
1537 (p)->dimx12 = _dimx12, \
1538 (p)->dimx13 = _dimx13, \
1539 (p)->dimx20 = _dimx20, \
1540 (p)->dimx21 = _dimx21, \
1541 (p)->dimx22 = _dimx22, \
1542 (p)->dimx23 = _dimx23, \
1543 (p)->dimx30 = _dimx30, \
1544 (p)->dimx31 = _dimx31, \
1545 (p)->dimx32 = _dimx32, \
1546 (p)->dimx33 = _dimx33
1547
1548#define gs_setDTHE(p, _enable) \
1549 (p)->enable = _enable
1550
1551#define gs_setCOLCLAMP(p, _clamp) \
1552 (p)->clamp = _clamp
1553
1554#define gs_setTEST_1(p, _atest_enable, _atest_method, _atest_reference, _atest_fail_method, _datest_enable, _datest_mode, _ztest_enable, _ztest_method) \
1555 (p)->atest_enable = _atest_enable, \
1556 (p)->atest_method = _atest_method, \
1557 (p)->atest_reference = _atest_reference, \
1558 (p)->atest_fail_method = _atest_fail_method, \
1559 (p)->datest_enable = _datest_enable, \
1560 (p)->datest_mode = _datest_mode, \
1561 (p)->ztest_enable = _ztest_enable, \
1562 (p)->ztest_method = _ztest_method
1563
1564#define gs_setTEST_2 gs_setTEST_1
1565
1566#define gs_setPABE(p, _enable) \
1567 (p)->enable = _enable
1568
1569#define gs_setFBA(p, _alpha) \
1570 (p)->alpha = _alpha
1571
1572#define gs_setFRAME_1(p, _fb_addr,_fb_width,_psm,_draw_mask) \
1573 (p)->fb_addr = _fb_addr, \
1574 (p)->fb_width = _fb_width, \
1575 (p)->psm = _psm, \
1576 (p)->draw_mask = _draw_mask
1577
1578#define gs_setFRAME_2 gs_setFRAME_1
1579
1580#define gs_setZBUF_1(p, _fb_addr,_psm,_update_mask) \
1581 (p)->fb_addr = _fb_addr, \
1582 (p)->psm = _psm, \
1583 (p)->update_mask = _update_mask
1584
1585#define gs_setZBUF_2 gs_setZBUF_1
1586
1587#define gs_setBITBLTBUF(p, _src_addr,_src_width,_src_pixmode,_dest_addr,_dest_width,_dest_pixmode) \
1588 (p)->src_addr = _src_addr, \
1589 (p)->src_width = _src_width, \
1590 (p)->src_pixmode = _src_pixmode, \
1591 (p)->dest_addr = _dest_addr, \
1592 (p)->dest_width = _dest_width, \
1593 (p)->dest_pixmode = _dest_pixmode
1594
1595#define gs_setTRXPOS(p, _src_x,_src_y,_dest_x,_dest_y,_direction) \
1596 (p)->src_x = _src_x, \
1597 (p)->src_y = _src_y, \
1598 (p)->dest_x = _dest_x, \
1599 (p)->dest_y = _dest_y, \
1600 (p)->direction = _direction
1601
1602#define gs_setTRXREG(p, _trans_w,_trans_h) \
1603 (p)->trans_w = _trans_w, \
1604 (p)->trans_h = _trans_h
1605
1606#define gs_setTRXDIR(p, _trans_dir) \
1607 (p)->trans_dir = _trans_dir
1608
1609#define gs_setHWREG(p, _data) \
1610 (p)->data = _data
1611
1612#define gs_setSIGNAL(p, _signal_id,_update_mask) \
1613 (p)->signal_id = _signal_id, \
1614 (p)->update_mask= _update_mask
1615
1616#define gs_setFINISH(p) \
1617 (p)->pad0 = 0
1618
1619#define gs_setLABEL(p, _label_id,_update_mask) \
1620 (p)->label_id = _label_id, \
1621 (p)->update_mask= _update_mask
1622
1623#define gs_setNOP(p) \
1624 (p)->pad0 = 0
1625
1626/* 'SET' GENERAL PURPOSE REG STRUCTs & REGs */
1627
1628#define gs_setR_PRIM(p, _prim_type,_iip,_tme,_fge,_abe,_aa1,_fst,_ctxt,_fix)\
1629 gs_setPRIM(&p->data, _prim_type,_iip,_tme,_fge,_abe,_aa1,_fst,_ctxt,_fix),\
1630 p->reg = gs_g_prim
1631
1632#define gs_setR_RGBAQ(p, _r,_g,_b,_a,_q) \
1633 gs_setRGBAQ(&p->data, _r,_g,_b,_a,_q),\
1634 (p)->reg = gs_g_rgbaq
1635
1636#define gs_setR_ST(p, _s,_t) \
1637 gs_setST(&p->data, _s,_t),\
1638 (p)->reg = gs_g_st
1639
1640#define gs_setR_UV(p, _u,_v) \
1641 gs_setUV(&p->data, _u,_v),\
1642 (p)->reg = gs_g_uv
1643
1644#define gs_setR_XYZF2(p, _x,_y,_z,_f) \
1645 gs_setXYZF2(&p->data, _x,_y,_z,_f),\
1646 (p)->reg = gs_g_xyzf2
1647
1648#define gs_setR_XYZF3(p, _x,_y,_z,_f) \
1649 gs_setR_XYZF3(&p->data, _x,_y,_z,_f),\
1650 (p)->reg = gs_g_xyzf3
1651
1652#define gs_setR_XYZ2(p, _x,_y,_z) \
1653 gs_setXYZ2(&p->data, _x,_y,_z),\
1654 (p)->reg = gs_g_xyz2
1655
1656#define gs_setR_XYZ3(p, _x,_y,_z) \
1657 gs_setXYZ3(&p->data, _x,_y,_z),\
1658 (p)->reg = gs_g_xyz3
1659
1660#define gs_setR_TEX0_1(p, _fb_addr,_fb_width,_psm,_tex_width,_tex_height,_col_comp,_tex_cc,_clutb_addr,_clut_pixmode,_clut_smode,_clut_offset,_cld)\
1661 gs_setTEX0_1(&p->data, _fb_addr,_fb_width,_psm,_tex_width,_tex_height,_col_comp,_tex_cc,_clutb_addr,_clut_pixmode,_clut_smode,_clut_offset,_cld),\
1662 (p)->reg = gs_g_tex0_1
1663
1664#define gs_setR_TEX0_2(p, _fb_addr,_fb_width,_psm,_tex_width,_tex_height,_col_comp,_tex_cc,_clutb_addr,_clut_pixmode,_clut_smode,_clut_offset,_cld)\
1665 gs_setTEX0_2(&p->data, _fb_addr,_fb_width,_psm,_tex_width,_tex_height,_col_comp,_tex_cc,_clutb_addr,_clut_pixmode,_clut_smode,_clut_offset,_cld),\
1666 (p)->reg = gs_g_tex0_2
1667
1668#define gs_setR_CLAMP_1(p, wms,wmt,minu,maxu,minv,maxv) \
1669 gs_setCLAMP_1(&p->data, wms,wmt,minu,maxu,minv,maxv),\
1670 (p)->reg = gs_g_clamp_1
1671
1672#define gs_setR_CLAMP_2(p, wms,wmt,minu,maxu,minv,maxv) \
1673 gs_setCLAMP_2(&p->data, wms,wmt,minu,maxu,minv,maxv),\
1674 (p)->reg = gs_g_clamp_2
1675
1676#define gs_setR_FOG(p, _f) \
1677 gs_setFOG(&p->data, _f),\
1678 (p)->reg = gs_g_fog
1679
1680#define gs_setR_TEX1_1(p, _lcm,_mxl,_mmag,_mmin,_mtba,_l,_k) \
1681 gs_setTEX1_1(&p->data, _lcm,_mxl,_mmag,_mmin,_mtba,_l,_k),\
1682 (p)->reg = gs_g_tex1_1
1683
1684#define gs_setR_TEX1_2(p, _lcm,_mxl,_mmag,_mmin,_mtba,_l,_k) \
1685 gs_setTEX1_2(&p->data, _lcm,_mxl,_mmag,_mmin,_mtba,_l,_k),\
1686 (p)->reg = gs_g_tex1_2
1687
1688#define gs_setR_TEX2_1(p, _psm,_cbp,_cpsm,_csm,_csa,_cld) \
1689 gs_setTEX2_1(&p->data, _psm,_cbp,_cpsm,_csm,_csa,_cld),\
1690 (p)->reg = gs_g_tex2_1
1691
1692#define gs_setR_TEX2_2(p, _psm,_cbp,_cpsm,_csm,_csa,_cld) \
1693 gs_setTEX2_2(&p->data, _psm,_cbp,_cpsm,_csm,_csa,_cld),\
1694 (p)->reg = gs_g_tex2_2
1695
1696#define gs_setR_XYOFFSET_1(p, _offset_x,_offset_y) \
1697 gs_set_XYOFFSET_1(&p->data, _offset_x,_offset_y),\
1698 (p)->reg = gs_g_xyoffset_1
1699
1700#define gs_setR_XYOFFSET_2(p, _offset_x,_offset_y) \
1701 gs_set_XYOFFSET_2(&p->data, _offset_x,_offset_y),\
1702 (p)->reg = gs_g_xyoffset_2
1703
1704#define gs_setR_PRMODECONT(p, _control) \
1705 gs_set_PRMODECONT(&p->data, _control),\
1706 (p)->reg = gs_g_prmodecont
1707
1708#define gs_setR_PRMODE(p, _iip,_tme,_fge,_abe,_aa1,_fst,_ctxt,_fix) \
1709 gs_setPRMODE(&p->data, _iip,_tme,_fge,_abe,_aa1,_fst,_ctxt,_fix),\
1710 (p)->reg = gs_g_prmode
1711
1712#define gs_setR_TEXCLUT(p, _cbw,_cou,_cov) \
1713 gs_setTEXCLUT(&p->data, _cbw,_cou,_cov),\
1714 (p)->reg = gs_g_texclut
1715
1716#define gs_setR_SCANMSK(p, _msk) \
1717 gs_setSCANMSK(&p->data, _msk),\
1718 (p)->reg = gs_g_scanmsk
1719
1720#define gs_setR_MIPTBP1_1(p, _tbp1,_tbw1,_tbp2,_tbw2,_tbp3,_tbw3) \
1721 gs_setMIPTBP1_1(&p->data, _tbp1,_tbw1,_tbp2,_tbw2,_tbp3,_tbw3),\
1722 (p)->reg = gs_g_miptbp1_1
1723
1724#define gs_setR_MIPTBP1_2(p, _tbp1,_tbw1,_tbp2,_tbw2,_tbp3,_tbw3) \
1725 gs_setMIPTBP1_2(&p->data, _tbp1,_tbw1,_tbp2,_tbw2,_tbp3,_tbw3),\
1726 (p)->reg = gs_g_miptbp1_2
1727
1728#define gs_setR_MIPTBP2_1(p, _tbp4,_tbw4,_tbp5,_tbw5,_tbp6,_tbw6) \
1729 gs_setR_MIPTBP2_1(&p->data, _tbp4,_tbw4,_tbp5,_tbw5,_tbp6,_tbw6),\
1730 (p)->reg = gs_g_miptbp2_1
1731
1732#define gs_setR_MIPTBP2_2(p, _tbp4,_tbw4,_tbp5,_tbw5,_tbp6,_tbw6) \
1733 gs_setMIPTBP2_2(&p->data, _tbp4,_tbw4,_tbp5,_tbw5,_tbp6,_tbw6),\
1734 (p)->reg = gs_g_miptbp2_2
1735
1736#define gs_setR_TEXA(p, _ta0,_aem,_ta1) \
1737 gs_setTEXA(&p->data, _ta0,_aem,_ta1),\
1738 (p)->reg = gs_g_texa
1739
1740#define gs_setR_FOGCOLOR(p, _r,_g,_b) \
1741 gs_setFOGCOLOR(&p->data, _r,_g,_b),\
1742 (p)->reg = gs_g_fogcol
1743
1744#define gs_setR_TEXFLUSH(p)\
1745 (p)->reg = gs_g_texflush
1746
1747#define gs_setR_SCISSOR_1(p, _clip_x0,_clip_x1,_clip_y0,_clip_y1) \
1748 gs_setSCISSOR_1(&p->data, _clip_x0,_clip_x1,_clip_y0,_clip_y1),\
1749 (p)->reg = gs_g_scissor_1
1750
1751#define gs_setR_SCISSOR_2(p, _clip_x0,_clip_x1,_clip_y0,_clip_y1) \
1752 gs_setSCISSOR_2(&p->data, _clip_x0,_clip_x1,_clip_y0,_clip_y1),\
1753 (p)->reg = gs_g_scissor_2
1754
1755#define gs_setR_ALPHA_1(p, _a,_b,_c,_d,_fix) \
1756 gs_setALPHA_1(&p->data, _a,_b,_c,_d,_fix),\
1757 (p)->reg = gs_g_alpha_1
1758
1759#define gs_setR_ALPHA_2(p, _a,_b,_c,_d,_fix) \
1760 gs_setALPHA_2(&p->data, _a,_b,_c,_d,_fix),\
1761 (p)->reg = gs_g_alpha_2
1762
1763#define gs_setR_DIMX(p, _dimx00,_dimx01,_dimx02,_dimx03,_dimx10,_dimx11,_dimx12,_dimx13,_dimx20,_dimx21,_dimx22,_dimx23,_dimx30,_dimx31,_dimx32,_dimx33) \
1764 gs_setDIMX(&p->data, _dimx00,_dimx01,_dimx02,_dimx03,_dimx10,_dimx11,_dimx12,_dimx13,_dimx20,_dimx21,_dimx22,_dimx23,_dimx30,_dimx31,_dimx32,_dimx33),\
1765 (p)->reg = gs_g_dimx
1766
1767#define gs_setR_DTHE(p, _enable) \
1768 gs_setDTHE(&p->data, _enable),\
1769 (p)->reg = gs_g_dthe
1770
1771#define gs_setR_COLCLAMP(p, _clamp) \
1772 gs_setCOLCLAMP(&p->data, _clamp),\
1773 (p)->reg = gs_g_colclamp
1774
1775#define gs_setR_TEST_1(p, _ATE,_ATST,_AREF,_AFAIL,_DATE,_DATM,_ZTE,_ZTST) \
1776 gs_setTEST_1(&p->data, _ATE,_ATST,_AREF,_AFAIL,_DATE,_DATM,_ZTE,_ZTST),\
1777 (p)->reg = gs_g_test_1
1778
1779#define gs_setR_TEST_2(p, _ATE,_ATST,_AREF,_AFAIL,_DATE,_DATM,_ZTE,_ZTST) \
1780 gs_setTEST_2(&p->data, _ATE,_ATST,_AREF,_AFAIL,_DATE,_DATM,_ZTE,_ZTST),\
1781 (p)->reg = gs_g_test_2
1782
1783#define gs_setR_PABE(p, _enable) \
1784 gs_setPABE(&p->data, _enable),\
1785 (p)->reg = gs_g_pabe
1786
1787#define gs_setR_FBA_1(p, _alpha) \
1788 gs_setFBA(&p->data, _alpha),\
1789 (p)->reg = gs_g_fba_1
1790
1791#define gs_setR_FBA_2(p, _alpha) \
1792 gs_setFBA(&p->data, _alpha),\
1793 (p)->reg = gs_g_fba_2
1794
1795#define gs_setR_FRAME_1(p, _fb_addr,_fb_width,_psm,_draw_mask) \
1796 gs_setFRAME_1(&p->data, _fb_addr,_fb_width,_psm,_draw_mask),\
1797 (p)->reg = gs_g_frame_1
1798
1799#define gs_setR_FRAME_2(p, _fb_addr,_fb_width,_psm,_draw_mask) \
1800 gs_setFRAME_2(&p->data, _fb_addr,_fb_width,_psm,_draw_mask),\
1801 (p)->reg = gs_g_frame_2
1802
1803#define gs_setR_ZBUF_1(p, _fb_addr,_psm,_update_mask) \
1804 gs_setZBUF_1(&p->data, _fb_addr,_psm,_update_mask),\
1805 (p)->reg = gs_g_zbuf_1
1806
1807#define gs_setR_ZBUF_2(p, _fb_addr,_psm,_update_mask) \
1808 gs_setZBUF_2(&p->data, _fb_addr,_psm,_update_mask),\
1809 (p)->reg = gs_g_zbuf_2
1810
1811#define gs_setR_BITBLTBUF(p, _src_addr,_src_width,_src_pixmode,_dest_addr,_dest_width,_dest_pixmode) \
1812 gs_setBITBLTBUF(&p->data, _src_addr,_src_width,_src_pixmode,_dest_addr,_dest_width,_dest_pixmode),\
1813 (p)->reg = gs_g_bitbltbuf
1814
1815#define gs_setR_TRXPOS(p, _src_x,_src_y,_dest_x,_dest_y,_direction) \
1816 gs_setTRXPOS(&p->data, _src_x,_src_y,_dest_x,_dest_y,_direction),\
1817 (p)->reg = gs_g_trxpos
1818
1819#define gs_setR_TRXREG(p, _trans_w,_trans_h) \
1820 gs_setTRXREG(&p->data, _trans_w,_trans_h),\
1821 (p)->reg = gs_g_trxreg
1822
1823#define gs_setR_TRXDIR(p, _trans_dir) \
1824 gs_setTRXDIR(&p->data, _trans_dir),\
1825 (p)->reg = gs_g_trxdir
1826
1827#define gs_setR_HWREG(p, _data) \
1828 gs_setHWREG(&p->data, _data),\
1829 (p)->reg = gs_g_hwreg
1830
1831#define gs_setR_SIGNAL(p, _signal_id,_update_mask) \
1832 gs_setSIGNAL(&p->data, _signal_id,_update_mask),\
1833 (p)->reg = gs_g_signal
1834
1835#define gs_setR_FINISH(p)\
1836 (p)->reg = gs_g_finish
1837
1838#define gs_setR_LABEL(p, _label_id,_update_mask) \
1839 gs_setLABEL(&p->data, _label_id,_update_mask),\
1840 (p)->reg = gs_g_label
1841
1842#define gs_setR_NOP(p) \
1843 gs_setNOP(&p->data),\
1844 (p)->reg = gs_g_label
1845
1846/* MISC */
1847
1850 u64 qwc :16;
1851 u64 pad1 :10;
1852 u64 pce :2;
1853 u64 id :3;
1854 u64 irq :1;
1855 u64 addr :31;
1856 u64 spr :1;
1857 u64 pad2 :64;
1858}GS_GIF_DMACHAIN_TAG __attribute__ ((aligned(16)));/*aligned 128bits*/
1859
1860typedef struct {
1861 u64 nloop :15;
1862 u64 eop :1;
1863 u64 pad1 :30;
1864 u64 pre :1;
1865 u64 prim :11;
1866 u64 flg :2;
1867 u64 nreg :4;
1868 u64 reg :64;
1869}GS_GIF_TAG;
1870
1871#define gs_setGIF_TAG(p, _nloop,_eop,_pre,_prim,_flg,_nreg,_reg)\
1872 (p)->nloop = _nloop, \
1873 (p)->eop = _eop, \
1874 (p)->pre = _pre, \
1875 (p)->prim = _prim, \
1876 (p)->flg = _flg, \
1877 (p)->nreg = _nreg, \
1878 (p)->reg = _reg
1879
1880/* MID LEVEL DEFINES */
1881
1882/* settings for GsSetCRTCSettings() */
1883
1884/*A Default setting*/
1885#define CRTC_SETTINGS_DEFAULT1 CRTC_SETTINGS_EN1|CRTC_SETTINGS_BLENDVAL|CRTC_SETTINGS_OUTRC1|CRTC_SETTINGS_STYLERC1
1886#define CRTC_SETTINGS_DEFAULT2 CRTC_SETTINGS_EN2|CRTC_SETTINGS_BLENDVAL|CRTC_SETTINGS_OUTRC1|CRTC_SETTINGS_STYLERC1
1887
1889#define CRTC_SETTINGS_EN1 ((u64)(1)<<0)
1891#define CRTC_SETTINGS_EN2 ((u64)(1)<<1)
1893#define CRTC_SETTINGS_ENBOTH CRTC_SETTINGS_EN1|CRTC_SETTINGS_EN2
1895#define CRTC_SETTINGS_BLENDRC1 ((u64)(0)<<5)
1897#define CRTC_SETTINGS_BLENDVAL ((u64)(1)<<5)
1899#define CRTC_SETTINGS_OUTRC1 ((u64)(0)<<6)
1901#define CRTC_SETTINGS_OUTRC2 ((u64)(1)<<6)
1903#define CRTC_SETTINGS_STYLERC1 ((u64)(0)<<7)
1905#define CRTC_SETTINGS_STYLEBG ((u64)(1)<<7)
1906
1907typedef struct {
1908 short x;
1909 short y;
1910 short w;
1911 short h;
1912}GS_RECT;
1913
1914typedef struct {
1915 u16 x;
1916 u16 y;
1917 u16 w;
1918 u16 h;
1919}GS_URECT;
1920
1921typedef struct {
1922 int x;
1923 int y;
1924 int w;
1925 int h;
1926}GS_RECT32;
1927
1928typedef struct {
1929 short x;
1930 short y;
1931}GS_POS;
1932
1933typedef struct
1934{
1935 u16 vram_addr;
1936 u8 psm;
1937 u8 update_mask;
1938}GS_ZENV;
1939
1941typedef struct {
1942 /* Draw offset X */
1943 u16 offset_x;
1944 /* Draw offset Y */
1945 u16 offset_y;
1946 /* Draw Clip rect */
1947 GS_URECT clip;
1948 /* Vram Address in frame buffer */
1949 u16 vram_addr;
1950 /* Width of vram (1=64) */
1951 u8 fbw;
1952 /* Pixel Mode / PSM */
1953 u8 psm;
1954 /* X offset in vram; */
1955 u16 vram_x;
1956 /* Y offset in vram; */
1957 u16 vram_y;
1958 /* Draw Mask (0=draw, 1=no draw) */
1959 u32 draw_mask;
1960 /* Set To 1 If You Want The Draw Environment's Backgroud to Clear When GsPutDrawEnv() is called */
1961 u8 auto_clear;
1962 /* Color to use to clear backgroud */
1963 GS_RGBAQ bg_color;
1964
1965}GS_DRAWENV;
1966
1968typedef struct {
1969 GS_DISPLAY disp;
1970 GS_DISPFB dispfb;
1971}GS_DISPENV __attribute__ ((aligned(8)));/* Aligned, 64bits*/
1972
1974typedef struct
1975{
1982}GS_POINT_P; /*Size= 3 QWords*/
1983
1984typedef struct
1985{
1990}GS_POINT; /*Size= 2 QWords*/
1991
1993typedef struct
1994{
2003}GS_LINE_F1_P; /*Size = 4 QWords*/
2004
2005typedef struct
2006{
2013}GS_LINE_F1; /*Size = 3 QWords*/
2014
2029
2041
2056
2068
2088
2106
2126
2144
2163
2179
2203
2225
2238
2239typedef struct
2240{
2247}GS_SPRITE_F4; /*Size= 3 QWords*/
2248
2249/*A Textured Sprite*/
2265
2279
2280#define GS_PACKET_DATA_QWORD_MAX 32000
2281
2282typedef struct
2283{
2284 GS_GIF_DMACHAIN_TAG tag;
2285 QWORD data[GS_PACKET_DATA_QWORD_MAX];
2286}GS_GIF_PACKET __attribute__ ((aligned(16)));/* Aligned, 128bits*/
2287
2288typedef struct
2289{
2290 u32 packet_count;
2291 u32 packet_offset;
2292 u32 qword_offset;
2293 GS_GIF_PACKET *packets;
2295
2296typedef struct
2297{
2299 u16 x;
2301 u16 y;
2312}GS_IMAGE;
2313
2314#if 0
2315typedef struct
2316{
2317 u8 img_psm;
2318 u16 img_width;
2319 u16 img_height;
2320 u32 *img_addr;
2321
2322 u8 clt_psm;
2323 u16 clt_csm;
2324 u16 clt_width;
2325 u16 clt_height;
2326 u32 *clt_addr;
2327}GS_EE_IMAGE;
2328#endif
2329
2330#ifdef __cplusplus
2331extern "C" {
2332#endif
2333
2334/* COMMONLY UDED, LOW LEVEL FUNCTIONS */
2335
2336/* These Use Gif-Dma To Transfer*/
2337extern int GsSetXYOffset1(u16 x, u16 y);
2338extern int GsSetXYOffset2(u16 x, u16 y);
2339extern int GsSetScissor1(u16 upper_x, u16 upper_y, u16 lower_x, u16 lower_y);
2340extern int GsSetScissor2(u16 upper_x, u16 upper_y, u16 lower_x, u16 lower_y);
2341extern int GsSetFrame1(u16 framebuffer_addr, u8 framebuffer_width, u8 psm, u32 draw_mask);
2342extern int GsSetFrame2(u16 framebuffer_addr, u8 framebuffer_width, u8 psm, u32 draw_mask);
2343extern int GsTextureFlush(void);
2344extern int GsSetPixelTest1(u8 enable_alpha_test, u8 alpha_test_method, u8 alpha_reference, u8 alpha_fail_method, u8 enable_dest_alpha_test, u8 dest_alpha_test_mode, u8 enable_zbuff_test, u8 alpha_zbuff_method);
2345extern int GsSetPixelTest2(u8 enable_alpha_test, u8 alpha_test_method, u8 alpha_reference, u8 alpha_fail_method, u8 enable_dest_alpha_test, u8 dest_alpha_test_mode, u8 enable_zbuff_test, u8 alpha_zbuff_method);
2346extern int GsSelectTexure1(u16 tex_addr, u8 addr_width, u8 tex_pixmode, u16 tex_width, u16 tex_height, u16 clut_addr, u8 clut_pixmode, u8 clut_storagemode,u8 clut_offset);
2347extern int GsSelectTexure2(u16 tex_addr, u8 addr_width, u8 tex_pixmode, u16 tex_width, u16 tex_height, u16 clut_addr, u8 clut_pixmode, u8 clut_storagemode,u8 clut_offset);
2348extern void GsSetFogColor(u8 r, u8 g, u8 b);
2349extern void GsEnableColorClamp(u16 enable);
2350
2351/* NORMAL FUNCTIONS */
2352
2353extern GsGParam_t *GsGetGParam(void);
2354extern void GsResetGraph(short int mode, short int interlace, short int omode, short int ffmode);
2355extern void GsResetPath(void);
2356extern void GsSetCRTCSettings(u64 settings, u8 alpha_value);
2357
2358/* Initialise structs with defaults Based On Input*/
2359extern void GsSetDefaultDrawEnv(GS_DRAWENV *drawenv, u16 psm, u16 w, u16 h);
2360extern void GsSetDefaultDrawEnvAddress(GS_DRAWENV *drawenv, u16 vram_addr);
2361extern void GsSetDefaultDisplayEnv(GS_DISPENV *dispenv, u16 psm, u16 w, u16 h, u16 dx, u16 dy);
2362extern void GsSetDefaultDisplayEnvAddress(GS_DISPENV *dispenv, u16 vram_addr);
2363extern void GsSetDefaultZBufferEnv(GS_ZENV *zenv, u8 update_mask);
2364extern void GsSetDefaultZBufferEnvAddress(GS_ZENV *zenv, u16 vram_addr, u8 psm);
2365
2366/* Execute struct's data (Environments)*/
2367extern void GsPutDrawEnv1(GS_DRAWENV *drawenv);
2368extern void GsPutDrawEnv2(GS_DRAWENV *drawenv);
2369extern void GsPutDisplayEnv1(GS_DISPENV *dispenv);
2370extern void GsPutDisplayEnv2(GS_DISPENV *dispenv);
2371extern void GsPutZBufferEnv1(GS_ZENV *zenv);
2372extern void GsPutZBufferEnv2(GS_ZENV *zenv);
2374extern void GsClearDrawEnv1(GS_DRAWENV *drawenv);
2376extern void GsClearDrawEnv2(GS_DRAWENV *drawenv);
2377
2378/* Gif packet execution*/
2379extern QWORD *GsGifPacketsAlloc(GS_PACKET_TABLE *table, u32 num_qwords);
2380extern void GsGifPacketsClear(GS_PACKET_TABLE *table);
2381extern int GsGifPacketsExecute(GS_PACKET_TABLE *table, u16 wait);
2382
2383/* Texture/Image Funtions*/
2384extern int GsLoadImage(const void *source_addr, GS_IMAGE *dest);
2385
2386extern void GsOverridePrimAttributes(s8 override, s8 iip, s8 tme, s8 fge, s8 abe, s8 aa1, s8 fst, s8 ctxt, s8 fix);
2387extern void GsEnableDithering(u8 enable, int mode);
2388extern void GsEnableAlphaTransparency1(u16 enable,u16 method,u8 alpha_ref,u16 fail_method);
2389extern void GsEnableAlphaTransparency2(u16 enable,u16 method,u8 alpha_ref,u16 fail_method);
2390extern void GsEnableZbuffer1(u16 enable,u16 test_method);
2391extern void GsEnableZbuffer2(u16 enable,u16 test_method);
2392extern void GsEnableAlphaBlending1(u16 enable);
2393extern void GsEnableAlphaBlending2(u16 enable);
2394
2395extern void GsDrawSync(int mode);
2396extern void GsHSync(int mode);
2397extern void GsVSync(int mode);
2398
2399/* Vram Allocation */
2400extern int GsVramAllocFrameBuffer(s16 w, s16 h, s16 psm);
2401extern int GsVramAllocTextureBuffer(s16 w, s16 h, s16 psm);
2403extern void GsVramFreeAllTextureBuffer(void);
2404extern void GsVramFreeAll(void);
2405
2406/* Just used for buffer swapping*/
2407extern int GsDbGetDrawBuffer(void);
2408extern int GsDbGetDisplayBuffer(void);
2409extern void GsDbSwapBuffer(void);
2410
2411#ifdef __cplusplus
2412}
2413#endif
2414
2415#endif /* __LIBGS_H__ */
#define GS_PRIM_LINE
Definition gs_gp.h:154
#define GS_PRIM_LINE_STRIP
Definition gs_gp.h:156
#define GS_PRIM_SPRITE
Definition gs_gp.h:164
#define GS_PRIM_POINT
Definition gs_gp.h:152
GsATestFailedUpdateMethods
Definition libgs.h:118
@ GS_ALPHA_NO_UPDATE
Definition libgs.h:120
GsTexMipmaps
Definition libgs.h:140
@ GS_TEX_MIPMAP6
Definition libgs.h:154
@ GS_TEX_MIPMAP5
Definition libgs.h:152
@ GS_TEX_MIPMAP2
Definition libgs.h:146
@ GS_TEX_MIPMAP0
Definition libgs.h:142
@ GS_TEX_MIPMAP1
Definition libgs.h:144
@ GS_TEX_MIPMAP3
Definition libgs.h:148
@ GS_TEX_MIPMAP4
Definition libgs.h:150
GsZTestMethodTypes
Definition libgs.h:127
void GsClearDrawEnv2(GS_DRAWENV *drawenv)
Definition draw.c:198
GsTexFunctions
Definition libgs.h:174
@ GS_TEX_HIGHLIHGT1
Definition libgs.h:177
@ GS_TEX_DECAL
Definition libgs.h:176
@ GS_TEX_HIGHLIHGT2
Definition libgs.h:178
void GsVramFreeAllTextureBuffer(void)
Definition texture.c:206
GsTexFilterMethods
Definition libgs.h:157
@ GS_TEX_LINEAR
Definition libgs.h:161
@ GS_TEX_NEAREST
Definition libgs.h:159
GsGifDataFormat
Definition libgs.h:181
@ GS_GIF_DISABLE
Definition libgs.h:186
GsATestMethods
Definition libgs.h:106
void GsClearDrawEnv1(GS_DRAWENV *drawenv)
Definition draw.c:161
GsPrimitiveTypes
Definition libgs.h:67
float padq
Definition libgs.h:493
u8 pada
Definition libgs.h:491
u32 p0
Definition libgs.h:563
u32 direction
Definition libgs.h:561
u32 p1
Definition libgs.h:565
u32 flush
Definition libgs.h:514
u32 pad1
Definition libgs.h:512
u32 current_field
Definition libgs.h:524
u32 hsync_intrupt
Definition libgs.h:502
u32 exfield
Definition libgs.h:520
u32 gs_rev_number
Definition libgs.h:528
u32 nfield
Definition libgs.h:522
u32 exhsint
Definition libgs.h:508
u32 vsync_intrupt
Definition libgs.h:504
u32 fifo_status
Definition libgs.h:526
u32 reset
Definition libgs.h:516
u32 exverr
Definition libgs.h:518
u32 pad2
Definition libgs.h:532
u32 gs_id
Definition libgs.h:530
u32 finish_evnt
Definition libgs.h:500
u32 exvsint
Definition libgs.h:510
u32 signal_evnt
Definition libgs.h:498
u32 write_terminate
Definition libgs.h:506
u32 fbw
Definition libgs.h:410
u32 pad2
Definition libgs.h:420
u32 x
Definition libgs.h:416
u32 psm
Definition libgs.h:412
u32 y
Definition libgs.h:418
u32 address
Definition libgs.h:408
u32 pad1
Definition libgs.h:414
u32 display_w
Definition libgs.h:435
u32 display_x
Definition libgs.h:425
u32 pad2
Definition libgs.h:439
u32 pad1
Definition libgs.h:433
u32 display_y
Definition libgs.h:427
u32 magnify_h
Definition libgs.h:429
u32 display_h
Definition libgs.h:437
u32 magnify_v
Definition libgs.h:431
u32 x
Definition libgs.h:457
u32 pad1
Definition libgs.h:465
u32 y
Definition libgs.h:459
u32 write_w
Definition libgs.h:467
u32 write_h
Definition libgs.h:469
u32 pad2
Definition libgs.h:471
u32 sample_r_h
Definition libgs.h:461
u32 sample_r_v
Definition libgs.h:463
u32 pad1
Definition libgs.h:478
u32 write
Definition libgs.h:476
u32 pad2
Definition libgs.h:480
u16 width
Definition libgs.h:2303
u16 vram_addr
Definition libgs.h:2307
u8 psm
Definition libgs.h:2311
u16 y
Definition libgs.h:2301
u16 x
Definition libgs.h:2299
u8 vram_width
Definition libgs.h:2309
u16 height
Definition libgs.h:2305
u32 pad3
Definition libgs.h:556
u32 signal_mask
Definition libgs.h:540
u32 hsync_mask
Definition libgs.h:544
u32 pad1
Definition libgs.h:538
u32 vsync_mask
Definition libgs.h:546
u32 exvs_mask
Definition libgs.h:552
u32 exhs_mask
Definition libgs.h:550
u32 write_mask
Definition libgs.h:548
u32 finish_mask
Definition libgs.h:542
u32 pad2
Definition libgs.h:554
GS_R_RGBAQ rgbaq0
Definition libgs.h:1998
GS_R_XYZ xyz0
Definition libgs.h:2000
GS_R_PRIM prim
Definition libgs.h:1996
GS_R_XYZ xyz1
Definition libgs.h:2002
GS_R_RGBAQ rgbaq0
Definition libgs.h:2008
GS_R_XYZ xyz1
Definition libgs.h:2012
GS_R_XYZ xyz0
Definition libgs.h:2010
GS_R_XYZ xyz0
Definition libgs.h:2023
GS_R_RGBAQ rgbaq0
Definition libgs.h:2021
GS_R_XYZ xyz1
Definition libgs.h:2027
GS_R_PRIM prim
Definition libgs.h:2019
GS_R_RGBAQ rgbaq1
Definition libgs.h:2025
GS_R_RGBAQ rgbaq1
Definition libgs.h:2037
GS_R_RGBAQ rgbaq0
Definition libgs.h:2033
GS_R_XYZ xyz1
Definition libgs.h:2039
GS_R_XYZ xyz0
Definition libgs.h:2035
u32 amod
Definition libgs.h:355
u32 blend_value
Definition libgs.h:359
u32 exvwins
Definition libgs.h:365
u32 exsyncmd
Definition libgs.h:369
u32 enable_rc2
Definition libgs.h:349
u32 blend_style
Definition libgs.h:357
u32 pad2
Definition libgs.h:371
u32 pad1
Definition libgs.h:363
u32 crt_out
Definition libgs.h:351
u32 mmod
Definition libgs.h:353
u32 nfld
Definition libgs.h:361
u32 enable_rc1
Definition libgs.h:347
u32 exvwine
Definition libgs.h:367
GS_R_RGBAQ rgbaq0
Definition libgs.h:1979
GS_R_PRIM prim
Definition libgs.h:1977
GS_R_XYZ xyz0
Definition libgs.h:1981
GS_R_RGBAQ rgbaq0
Definition libgs.h:1987
GS_R_XYZ xyz0
Definition libgs.h:1989
GS_R_PRIM prim
Definition libgs.h:2230
GS_R_XYZ xyz0
Definition libgs.h:2234
GS_R_XYZ xyz1
Definition libgs.h:2236
GS_R_RGBAQ rgbaq0
Definition libgs.h:2232
GS_R_XYZ xyz0
Definition libgs.h:2244
GS_R_RGBAQ rgbaq0
Definition libgs.h:2242
GS_R_XYZ xyz1
Definition libgs.h:2246
GS_R_RGBAQ rgbaq0
Definition libgs.h:2255
GS_R_PRIM prim
Definition libgs.h:2253
GS_R_UV uv1
Definition libgs.h:2261
GS_R_XYZ xyz0
Definition libgs.h:2259
GS_R_UV uv0
Definition libgs.h:2257
GS_R_XYZ xyz1
Definition libgs.h:2263
GS_R_UV uv1
Definition libgs.h:2275
GS_R_UV uv0
Definition libgs.h:2271
GS_R_RGBAQ rgbaq0
Definition libgs.h:2269
GS_R_XYZ xyz1
Definition libgs.h:2277
GS_R_XYZ xyz0
Definition libgs.h:2273
Definition libgs.h:603
u64 pad1
Definition libgs.h:759
GS_R_RGBAQ rgbaq0
Definition libgs.h:2048
GS_R_XYZ xyz1
Definition libgs.h:2052
GS_R_PRIM prim
Definition libgs.h:2046
GS_R_XYZ xyz2
Definition libgs.h:2054
GS_R_XYZ xyz0
Definition libgs.h:2050
GS_R_RGBAQ rgbaq0
Definition libgs.h:2060
GS_R_XYZ xyz1
Definition libgs.h:2064
GS_R_XYZ xyz2
Definition libgs.h:2066
GS_R_XYZ xyz0
Definition libgs.h:2062
GS_R_PRIM prim
Definition libgs.h:2110
GS_R_RGBAQ rgbaq0
Definition libgs.h:2112
GS_R_XYZ xyz2
Definition libgs.h:2142
GS_R_RGBAQ rgbaq0
Definition libgs.h:2130
GS_R_XYZ xyz0
Definition libgs.h:2134
GS_R_XYZ xyz1
Definition libgs.h:2138
GS_R_PRIM prim
Definition libgs.h:2072
GS_R_RGBAQ rgbaq0
Definition libgs.h:2074
GS_R_XYZ xyz0
Definition libgs.h:2078
GS_R_XYZ xyz2
Definition libgs.h:2086
GS_R_XYZ xyz1
Definition libgs.h:2082
GS_R_XYZ xyz1
Definition libgs.h:2100
GS_R_UV uv1
Definition libgs.h:2098
GS_R_XYZ xyz2
Definition libgs.h:2104
GS_R_XYZ xyz0
Definition libgs.h:2096
GS_R_RGBAQ rgbaq0
Definition libgs.h:2092
GS_R_UV uv0
Definition libgs.h:2094
GS_R_UV uv2
Definition libgs.h:2102
GS_R_RGBAQ rgbaq1
Definition libgs.h:2155
GS_R_PRIM prim
Definition libgs.h:2149
GS_R_RGBAQ rgbaq0
Definition libgs.h:2151
GS_R_XYZ xyz1
Definition libgs.h:2157
GS_R_XYZ xyz0
Definition libgs.h:2153
GS_R_RGBAQ rgbaq2
Definition libgs.h:2159
GS_R_XYZ xyz2
Definition libgs.h:2161
GS_R_RGBAQ rgbaq2
Definition libgs.h:2175
GS_R_XYZ xyz0
Definition libgs.h:2169
GS_R_RGBAQ rgbaq1
Definition libgs.h:2171
GS_R_RGBAQ rgbaq0
Definition libgs.h:2167
GS_R_XYZ xyz2
Definition libgs.h:2177
GS_R_XYZ xyz1
Definition libgs.h:2173
GS_R_RGBAQ rgbaq2
Definition libgs.h:2197
GS_R_PRIM prim
Definition libgs.h:2183
GS_R_RGBAQ rgbaq0
Definition libgs.h:2185
GS_R_RGBAQ rgbaq1
Definition libgs.h:2191
GS_R_XYZ xyz0
Definition libgs.h:2211
GS_R_RGBAQ rgbaq0
Definition libgs.h:2207
GS_R_RGBAQ rgbaq2
Definition libgs.h:2219
GS_R_RGBAQ rgbaq1
Definition libgs.h:2213
GS_R_XYZ xyz2
Definition libgs.h:2223
GS_R_XYZ xyz1
Definition libgs.h:2217
Definition libgs.h:608
u8 version
Definition libgs.h:30
u8 interlace
Definition libgs.h:24
u8 ffmode
Definition libgs.h:28
u8 omode
Definition libgs.h:26
Definition libgs.h:334