34#define GS_INIT_RESET 0
36#define GS_INIT_DRAW_RESET 1
38#define GS_NONINTERLACED 0x00
39#define GS_INTERLACED 0x01
42#define GS_FFMD_FIELD 0x00
44#define GS_FFMD_FRAME 0x01
60 GS_MODE_DTV_480P = 0x50,
78#define GS_PIXMODE_32 0
79#define GS_PIXMODE_24 1
80#define GS_PIXMODE_16 2
81#define GS_PIXMODE_16S 10
100#define GS_ZBUFF_32 48
101#define GS_ZBUFF_24 49
102#define GS_ZBUFF_16 50
103#define GS_ZBUFF_16S 58
138#define GS_TEX_FIXED 1
162 GS_TEX_NEAREST_MIPMAP_NEAREST,
163 GS_TEX_NEAREST_MIPMAP_LINEAR,
164 GS_TEX_LINEAR_MIPMAP_NEAREST,
165 GS_TEX_LINEAR_MIPMAP_LINEAR
169#define GS_TEX_MIPMAP_DEFINE 0
171#define GS_TEX_MIPMAP_AUTO 1
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
221#define gs_g_prim 0x00
223#define gs_g_rgbaq 0x01
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
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
327#define gif_rd_ad 0x0e
329#define gif_rd_nop 0x0f
640 u64 clut_loadmode :3;
681 u64 clut_loadmode :3;
712 u64 clut_voffset :10;
744 u64 alpha_method : 1;
834 u64 atest_reference :8;
835 u64 atest_fail_method :2;
836 u64 datest_enable :1;
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
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
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
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
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
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
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
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
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
1240#define GS_SET_EXTWRITE(write)\
1241 *(vu64 *)gs_p_extwrite = \
1242 (u64)((write) & 0x00000001)
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
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
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
1275#define GS_SET_BUSDIR(direction) \
1276 *(vu64 *)gs_p_busdir = \
1277 (u64)((direction) & 0x00000001)
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
1289#define GS_SET_CSR_signal_evnt(val) \
1290 GS_SET_CSR(val,0,0,0,0,0,0,0,0,0,0,0)
1292#define GS_SET_CSR_finish_evnt(val) \
1293 GS_SET_CSR(0,val,0,0,0,0,0,0,0,0,0,0)
1295#define GS_SET_CSR_hsync_intrupt(val) \
1296 GS_SET_CSR(0,0,val,0,0,0,0,0,0,0,0,0)
1298#define GS_SET_CSR_vsync_intrupt(val) \
1299 GS_SET_CSR(0,0,0,val,0,0,0,0,0,0,0,0)
1301#define GS_SET_CSR_write_terminate(val) \
1302 GS_SET_CSR(0,0,0,0,val,0,0,0,0,0,0,0)
1304#define GS_SET_CSR_flush(val) \
1305 GS_SET_CSR(0,0,0,0,0,val,0,0,0,0,0,0)
1307#define GS_SET_CSR_reset(val) \
1308 GS_SET_CSR(0,0,0,0,0,0,val,0,0,0,0,0)
1321#define GS_GET_CSR_signal_evnt \
1322 (*((vu64 *)(gs_p_csr)) & (0x00000001 << 0))
1324#define GS_GET_CSR_finish_evnt \
1325 (*((vu64 *)(gs_p_csr)) & (0x00000001 << 1))
1327#define GS_GET_CSR_hsync_intrupt \
1328 (*((vu64 *)(gs_p_csr)) & (0x00000001 << 2))
1330#define GS_GET_CSR_vsync_intrupt \
1331 (*((vu64 *)(gs_p_csr)) & (0x00000001 << 3))
1333#define GS_GET_CSR_write_terminate \
1334 (*((vu64 *)(gs_p_csr)) & (0x00000001 << 4))
1339#define GS_GET_CSR_write_nfield \
1340 (*((vu64 *)(gs_p_csr)) & (0x00000001 << 12))
1342#define GS_GET_CSR_current_field \
1343 (*((vu64 *)(gs_p_csr)) & (0x00000001 << 13))
1345#define GS_GET_CSR_fifo_status \
1346 (*((vu64 *)(gs_p_csr)) & (0x00000003 << 14))
1348#define GS_GET_CSR_gs_rev_number \
1349 (*((vu64 *)(gs_p_csr)) & (0x000000FF << 16))
1351#define GS_GET_CSR_gs_id \
1352 (*((vu64 *)(gs_p_csr)) & (0x000000FF << 24))
1356#define gs_setPRIM(p, _prim_type,_iip,_tme,_fge,_abe,_aa1,_fst,_ctxt,_fix)\
1357 (p)->prim_type = _prim_type, \
1364 (p)->ctxt = _ctxt, \
1367#define gs_setRGBAQ(p, _r,_g,_b,_a,_q) \
1374#define gs_setST(p, _s,_t) \
1378#define gs_setUV(p, _u,_v) \
1382#define gs_setXYZF2(p, _x,_y,_z,_f) \
1388#define gs_setXYZF3(p, _x,_y,_z,_f) \
1394#define gs_setXYZ2(p, _x,_y,_z) \
1399#define gs_setXYZ3(p, _x,_y,_z) \
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, \
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
1418#define gs_setTEX0_2 gs_setTEX0_1
1420#define gs_setCLAMP_1(p, wms,wmt,minu,maxu,minv,maxv) \
1428#define gs_setCLAMP_2 gs_setCLAMP_1
1430#define gs_setFOG(p, _f) \
1433#define gs_setTEX1_1(p, _lcm,_mxl,_mmag,_mmin,_mtba,_l,_k) \
1436 (p)->mmag = _mmag, \
1437 (p)->mmin = _mmin, \
1438 (p)->mtba = _mtba, \
1442#define gs_setTEX1_2 gs_setTEX1_1
1444#define gs_setTEX2_1(p, _psm,_cbp,_cpsm,_csm,_csa,_cld) \
1447 (p)->cpsm = _cpsm, \
1452#define gs_setTEX2_2 gs_setTEX2_1
1454#define gs_set_XYOFFSET_1(p, _offset_x,_offset_y) \
1455 (p)->offset_x = _offset_x, \
1456 (p)->offset_y = _offset_y
1458#define gs_set_XYOFFSET_2 gs_set_XYOFFSET_1
1460#define gs_set_PRMODECONT(p, _control) \
1461 (p)->control = _control
1463#define gs_setPRMODE(p, _iip,_tme,_fge,_abe,_aa1,_fst,_ctxt,_fix) \
1470 (p)->ctxt = _ctxt, \
1473#define gs_setTEXCLUT(p, _cbw,_cou,_cov) \
1478#define gs_setSCANMSK(p, _msk) \
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, \
1489#define gs_setMIPTBP1_2 gs_setMIPTBP1_1
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, \
1499#define gs_setMIPTBP2_2 gs_setMIPTBP2_1
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
1506#define gs_setFOGCOLOR(p, _r,_g,_b) \
1511#define gs_setTEXFLUSH(p)
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
1519#define gs_setSCISSOR_2 gs_setSCISSOR_1
1521#define gs_setALPHA_1(p, _a,_b,_c,_d,_alpha)\
1528#define gs_setALPHA_2 gs_setALPHA_1
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
1548#define gs_setDTHE(p, _enable) \
1549 (p)->enable = _enable
1551#define gs_setCOLCLAMP(p, _clamp) \
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
1564#define gs_setTEST_2 gs_setTEST_1
1566#define gs_setPABE(p, _enable) \
1567 (p)->enable = _enable
1569#define gs_setFBA(p, _alpha) \
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, \
1576 (p)->draw_mask = _draw_mask
1578#define gs_setFRAME_2 gs_setFRAME_1
1580#define gs_setZBUF_1(p, _fb_addr,_psm,_update_mask) \
1581 (p)->fb_addr = _fb_addr, \
1583 (p)->update_mask = _update_mask
1585#define gs_setZBUF_2 gs_setZBUF_1
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
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
1602#define gs_setTRXREG(p, _trans_w,_trans_h) \
1603 (p)->trans_w = _trans_w, \
1604 (p)->trans_h = _trans_h
1606#define gs_setTRXDIR(p, _trans_dir) \
1607 (p)->trans_dir = _trans_dir
1609#define gs_setHWREG(p, _data) \
1612#define gs_setSIGNAL(p, _signal_id,_update_mask) \
1613 (p)->signal_id = _signal_id, \
1614 (p)->update_mask= _update_mask
1616#define gs_setFINISH(p) \
1619#define gs_setLABEL(p, _label_id,_update_mask) \
1620 (p)->label_id = _label_id, \
1621 (p)->update_mask= _update_mask
1623#define gs_setNOP(p) \
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),\
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
1636#define gs_setR_ST(p, _s,_t) \
1637 gs_setST(&p->data, _s,_t),\
1640#define gs_setR_UV(p, _u,_v) \
1641 gs_setUV(&p->data, _u,_v),\
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
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
1652#define gs_setR_XYZ2(p, _x,_y,_z) \
1653 gs_setXYZ2(&p->data, _x,_y,_z),\
1654 (p)->reg = gs_g_xyz2
1656#define gs_setR_XYZ3(p, _x,_y,_z) \
1657 gs_setXYZ3(&p->data, _x,_y,_z),\
1658 (p)->reg = gs_g_xyz3
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
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
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
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
1676#define gs_setR_FOG(p, _f) \
1677 gs_setFOG(&p->data, _f),\
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
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
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
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
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
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
1704#define gs_setR_PRMODECONT(p, _control) \
1705 gs_set_PRMODECONT(&p->data, _control),\
1706 (p)->reg = gs_g_prmodecont
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
1712#define gs_setR_TEXCLUT(p, _cbw,_cou,_cov) \
1713 gs_setTEXCLUT(&p->data, _cbw,_cou,_cov),\
1714 (p)->reg = gs_g_texclut
1716#define gs_setR_SCANMSK(p, _msk) \
1717 gs_setSCANMSK(&p->data, _msk),\
1718 (p)->reg = gs_g_scanmsk
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
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
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
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
1736#define gs_setR_TEXA(p, _ta0,_aem,_ta1) \
1737 gs_setTEXA(&p->data, _ta0,_aem,_ta1),\
1738 (p)->reg = gs_g_texa
1740#define gs_setR_FOGCOLOR(p, _r,_g,_b) \
1741 gs_setFOGCOLOR(&p->data, _r,_g,_b),\
1742 (p)->reg = gs_g_fogcol
1744#define gs_setR_TEXFLUSH(p)\
1745 (p)->reg = gs_g_texflush
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
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
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
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
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
1767#define gs_setR_DTHE(p, _enable) \
1768 gs_setDTHE(&p->data, _enable),\
1769 (p)->reg = gs_g_dthe
1771#define gs_setR_COLCLAMP(p, _clamp) \
1772 gs_setCOLCLAMP(&p->data, _clamp),\
1773 (p)->reg = gs_g_colclamp
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
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
1783#define gs_setR_PABE(p, _enable) \
1784 gs_setPABE(&p->data, _enable),\
1785 (p)->reg = gs_g_pabe
1787#define gs_setR_FBA_1(p, _alpha) \
1788 gs_setFBA(&p->data, _alpha),\
1789 (p)->reg = gs_g_fba_1
1791#define gs_setR_FBA_2(p, _alpha) \
1792 gs_setFBA(&p->data, _alpha),\
1793 (p)->reg = gs_g_fba_2
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
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
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
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
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
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
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
1823#define gs_setR_TRXDIR(p, _trans_dir) \
1824 gs_setTRXDIR(&p->data, _trans_dir),\
1825 (p)->reg = gs_g_trxdir
1827#define gs_setR_HWREG(p, _data) \
1828 gs_setHWREG(&p->data, _data),\
1829 (p)->reg = gs_g_hwreg
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
1835#define gs_setR_FINISH(p)\
1836 (p)->reg = gs_g_finish
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
1842#define gs_setR_NOP(p) \
1843 gs_setNOP(&p->data),\
1844 (p)->reg = gs_g_label
1871#define gs_setGIF_TAG(p, _nloop,_eop,_pre,_prim,_flg,_nreg,_reg)\
1872 (p)->nloop = _nloop, \
1875 (p)->prim = _prim, \
1877 (p)->nreg = _nreg, \
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
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)
2280#define GS_PACKET_DATA_QWORD_MAX 32000
2284 GS_GIF_DMACHAIN_TAG tag;
2285 QWORD data[GS_PACKET_DATA_QWORD_MAX];
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);
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);
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);
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);
2384extern int GsLoadImage(
const void *source_addr,
GS_IMAGE *dest);
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);
2395extern void GsDrawSync(
int mode);
2396extern void GsHSync(
int mode);
2397extern void GsVSync(
int mode);
2400extern int GsVramAllocFrameBuffer(s16 w, s16 h, s16 psm);
2401extern int GsVramAllocTextureBuffer(s16 w, s16 h, s16 psm);
2404extern void GsVramFreeAll(
void);
2407extern int GsDbGetDrawBuffer(
void);
2408extern int GsDbGetDisplayBuffer(
void);
2409extern void GsDbSwapBuffer(
void);
#define GS_PRIM_LINE_STRIP
GsATestFailedUpdateMethods
void GsClearDrawEnv2(GS_DRAWENV *drawenv)
void GsVramFreeAllTextureBuffer(void)
void GsClearDrawEnv1(GS_DRAWENV *drawenv)