50static void drawGC1(
void) {
52 rasterClearTestRegion(0, 0, 16, 16);
56 rasterFlushPrimitive();
59static void drawGC2(
void) {
61 rasterClearTestRegion(0, 0, 48, 48);
65 rasterFlushPrimitive();
68static void drawGC3(
void) {
71 rasterClearTestRegion(0, 0, 144, 144);
75 rasterFlushPrimitive();
85static void drawGV(
int n) {
88 rasterClearTestRegion(0, 0, 32, 32);
92 rasterFlushPrimitive();
100static void drawGH(
int n) {
102 rasterClearTestRegion(0, 0, 32, 32);
106 rasterFlushPrimitive();
113static void drawGSNearMax(
void) {
116 rasterClearTestRegion(0, 0, 32, 32);
117 rasterGouraudTri(rasterCmdColor(31, 0, 0), 0, 0,
118 rasterCmdColor(30, 0, 0), 16, 0,
119 rasterCmdColor(30, 0, 0), 0, 16);
120 rasterFlushPrimitive();
123static void drawGSNearMin(
void) {
126 rasterClearTestRegion(0, 0, 32, 32);
127 rasterGouraudTri(rasterCmdColor(0, 0, 0), 0, 0,
128 rasterCmdColor(1, 0, 0), 16, 0,
129 rasterCmdColor(1, 0, 0), 0, 16);
130 rasterFlushPrimitive();
133static void drawGSHalfOfLSB(
void) {
138 rasterClearTestRegion(0, 0, 16, 16);
139 rasterGouraudTri(rasterCmdColor(1, 0, 0), 0, 0,
140 rasterCmdColor(0, 0, 0), 8, 0,
141 rasterCmdColor(0, 0, 0), 0, 8);
142 rasterFlushPrimitive();
149static void drawGD(
void) {
151 rasterClearTestRegion(0, 0, 48, 48);
156 rasterFlushPrimitive();
165#define GO_TRI_R_FIRST_GB() \
166 rasterGouraudTri(RASTER_CMD_RED, 0, 0, RASTER_CMD_GREEN, 7, 0, RASTER_CMD_BLUE, 0, 7)
167#define GO_TRI_R_FIRST_BG() \
168 rasterGouraudTri(RASTER_CMD_RED, 0, 0, RASTER_CMD_BLUE, 0, 7, RASTER_CMD_GREEN, 7, 0)
169#define GO_TRI_G_FIRST_RB() \
170 rasterGouraudTri(RASTER_CMD_GREEN, 7, 0, RASTER_CMD_RED, 0, 0, RASTER_CMD_BLUE, 0, 7)
171#define GO_TRI_G_FIRST_BR() \
172 rasterGouraudTri(RASTER_CMD_GREEN, 7, 0, RASTER_CMD_BLUE, 0, 7, RASTER_CMD_RED, 0, 0)
173#define GO_TRI_B_FIRST_RG() \
174 rasterGouraudTri(RASTER_CMD_BLUE, 0, 7, RASTER_CMD_RED, 0, 0, RASTER_CMD_GREEN, 7, 0)
175#define GO_TRI_B_FIRST_GR() \
176 rasterGouraudTri(RASTER_CMD_BLUE, 0, 7, RASTER_CMD_GREEN, 7, 0, RASTER_CMD_RED, 0, 0)
178static void drawGOPerm(
int perm) {
180 rasterClearTestRegion(0, 0, 16, 16);
189 rasterFlushPrimitive();
424CESTER_TEST(gs_near_max_interior, gpu_raster_phase7,
435CESTER_TEST(gs_near_min_interior, gpu_raster_phase7,
CESTER_BODY(static int s_got40;static int s_got80;static uint32_t s_cause;static uint32_t s_epc;static uint32_t s_from;static uint32_t *s_resume;static uint32_t *s_regs;static uint32_t(*s_customhandler)()=NULL;static uint32_t s_oldIMASK;static uint32_t s_oldDPCR;static uint32_t s_oldDICR;uint32_t handler(uint32_t *regs, uint32_t from) { if(from==0x40) s_got40=1;if(from==0x80) s_got80=1;uint32_t cause;uint32_t epc;s_from=from;asm("mfc0 %0, $13\nnop\nmfc0 %1, $14\nnop" :"=r"(cause), "=r"(epc));s_cause=cause;s_epc=epc;if(s_customhandler) { return s_customhandler();} else { return s_resume ?((uint32_t) s_resume) :(epc+4);} } void installExceptionHandlers(uint32_t(*handler)(uint32_t *regs, uint32_t from));void uninstallExceptionHandlers();uint32_t branchbranch1();uint32_t branchbranch2();uint32_t jumpjump1();uint32_t jumpjump2();uint32_t cpu_LWR_LWL_half(uint32_t buff[], uint32_t initial);uint32_t cpu_LWR_LWL_nodelay(uint32_t buff[], uint32_t initial);uint32_t cpu_LWR_LWL_delayed(uint32_t buff[], uint32_t initial);uint32_t cpu_LWR_LWL_load_different(uint32_t buff[], uint32_t initial);uint32_t cpu_LW_LWR(uint32_t buff[], uint32_t initial);uint32_t cpu_delayed_load(uint32_t buff[], uint32_t override);uint32_t cpu_delayed_load_cancelled(uint32_t buff[], uint32_t override);uint64_t cpu_delayed_load_load(uint32_t buff[], uint32_t override);uint32_t linkandload();uint32_t lwandlink();uint32_t nolink();static int s_interruptsWereEnabled;) CESTER_BEFORE_EACH(cpu_tests
CESTER_TEST(cpu_cop0_basic_write_bp, cpu_tests, uint32_t expectedEPC;uint32_t t;volatile uint32_t *ptr=(volatile uint32_t *) 0x58; *ptr=1;__asm__ volatile("" " lui %0, 0b1100101010000000\n" " mtc0 %0, $7\n" " li %0, 0x58\n" " mtc0 %0, $5\n" " li %0, 0xfffffff0\n" " mtc0 %0, $9\n" :"=r"(t));cester_assert_uint_eq(1, *ptr);__asm__ volatile("la %0, 1f\n1:\nsw $0, 0x58($0)" :"=r"(expectedEPC));__asm__ volatile("mtc0 $0, $7\n");cester_assert_uint_eq(0, *ptr);cester_assert_uint_eq(1, s_got40);cester_assert_uint_eq(0, s_got80);cester_assert_uint_eq(0x40, s_from);cester_assert_uint_eq(expectedEPC, s_epc);) CESTER_TEST(cpu_cop0_kseg_write_bp
#define GO_TRI_G_FIRST_BR()
#define GO_TRI_B_FIRST_RG()
#define GO_TRI_G_FIRST_RB()
#define GO_TRI_R_FIRST_BG()
#define GO_TRI_B_FIRST_GR()
#define GO_TRI_R_FIRST_GB()
#define GC3_TOP_X64
Definition raster-expected-phase7.h:112
#define GV3_X0_Y1
Definition raster-expected-phase7.h:129
#define GV5_X0_Y3
Definition raster-expected-phase7.h:136
#define GC2_INTERIOR_1_1
Definition raster-expected-phase7.h:107
#define GC3_INTERIOR_32_64
Definition raster-expected-phase7.h:117
#define GC2_INTERIOR_8_8
Definition raster-expected-phase7.h:104
#define GC1_INTERIOR_2_2
Definition raster-expected-phase7.h:95
#define GS_NEAR_MIN_INTERIOR
Definition raster-expected-phase7.h:217
#define GH7_Y0_X5
Definition raster-expected-phase7.h:185
#define GD_10_11
Definition raster-expected-phase7.h:247
#define GV11_X0_Y10
Definition raster-expected-phase7.h:157
#define GS_NEAR_MIN_APEX
Definition raster-expected-phase7.h:216
#define GD_8_10
Definition raster-expected-phase7.h:241
#define GC1_LEFT_Y4
Definition raster-expected-phase7.h:93
#define GD_11_10
Definition raster-expected-phase7.h:244
#define GV5_X0_Y4
Definition raster-expected-phase7.h:137
#define GS_HALF_OF_LSB_Y4
Definition raster-expected-phase7.h:220
#define GH11_Y0_X10
Definition raster-expected-phase7.h:194
#define GV7_X0_Y4
Definition raster-expected-phase7.h:147
#define GV7_X0_Y1
Definition raster-expected-phase7.h:144
#define GD_11_11
Definition raster-expected-phase7.h:248
#define GV3_X0_Y0
Definition raster-expected-phase7.h:128
#define GV7_X0_Y2
Definition raster-expected-phase7.h:145
#define GC2_INTERIOR_16_8
Definition raster-expected-phase7.h:105
#define GH7_Y0_X6
Definition raster-expected-phase7.h:186
#define GV7_X0_Y3
Definition raster-expected-phase7.h:146
#define GC2_V0_R
Definition raster-expected-phase7.h:101
#define GS_HALF_OF_LSB_Y6
Definition raster-expected-phase7.h:221
#define GV7_X0_Y5
Definition raster-expected-phase7.h:148
#define GV11_X0_Y0
Definition raster-expected-phase7.h:152
#define GV11_X0_Y8
Definition raster-expected-phase7.h:156
#define GH3_Y0_X0
Definition raster-expected-phase7.h:168
#define GC2_INTERIOR_8_16
Definition raster-expected-phase7.h:106
#define GC3_INTERIOR_1_1
Definition raster-expected-phase7.h:115
#define GD_9_11
Definition raster-expected-phase7.h:246
#define GC3_INTERIOR_96_16
Definition raster-expected-phase7.h:118
#define GH5_Y0_X0
Definition raster-expected-phase7.h:173
#define GH11_Y0_X2
Definition raster-expected-phase7.h:190
#define GV11_X0_Y4
Definition raster-expected-phase7.h:154
#define GH5_Y0_X2
Definition raster-expected-phase7.h:175
#define GD_8_9
Definition raster-expected-phase7.h:237
#define GS_HALF_OF_LSB_Y2
Definition raster-expected-phase7.h:219
#define GD_8_11
Definition raster-expected-phase7.h:245
#define GH5_Y0_X4
Definition raster-expected-phase7.h:177
#define GH7_Y0_X2
Definition raster-expected-phase7.h:182
#define GC2_TOP_X16
Definition raster-expected-phase7.h:102
#define GS_NEAR_MAX_INTERIOR
Definition raster-expected-phase7.h:215
#define GV5_X0_Y1
Definition raster-expected-phase7.h:134
#define GO_PERM_INTERIOR_2_2
Definition raster-expected-phase7.h:256
#define GC3_INTERIOR_32_32
Definition raster-expected-phase7.h:114
#define GD_10_8
Definition raster-expected-phase7.h:235
#define GV7_X0_Y6
Definition raster-expected-phase7.h:149
#define GV11_X0_Y6
Definition raster-expected-phase7.h:155
#define GH7_Y0_X0
Definition raster-expected-phase7.h:180
#define GS_HALF_OF_LSB_APEX
Definition raster-expected-phase7.h:218
#define GD_10_10
Definition raster-expected-phase7.h:243
#define GD_10_9
Definition raster-expected-phase7.h:239
#define GC1_INTERIOR_1_1
Definition raster-expected-phase7.h:94
#define GH5_Y0_X1
Definition raster-expected-phase7.h:174
#define GH11_Y0_X6
Definition raster-expected-phase7.h:192
#define GC3_LEFT_Y64
Definition raster-expected-phase7.h:113
#define GV7_X0_Y0
Definition raster-expected-phase7.h:143
#define GV11_X0_Y2
Definition raster-expected-phase7.h:153
#define GV5_X0_Y2
Definition raster-expected-phase7.h:135
#define GC1_INTERIOR_3_1
Definition raster-expected-phase7.h:98
#define GD_11_9
Definition raster-expected-phase7.h:240
#define GV3_X0_Y2
Definition raster-expected-phase7.h:130
#define GC2_INTERIOR_30_0
Definition raster-expected-phase7.h:108
#define GD_11_8
Definition raster-expected-phase7.h:236
#define GC1_INTERIOR_3_3
Definition raster-expected-phase7.h:96
#define GC2_LEFT_Y16
Definition raster-expected-phase7.h:103
#define GC1_V0_R
Definition raster-expected-phase7.h:91
#define GH7_Y0_X1
Definition raster-expected-phase7.h:181
#define GC3_INTERIOR_64_32
Definition raster-expected-phase7.h:116
#define GH11_Y0_X4
Definition raster-expected-phase7.h:191
#define GD_9_10
Definition raster-expected-phase7.h:242
#define GH5_Y0_X3
Definition raster-expected-phase7.h:176
#define GD_9_8
Definition raster-expected-phase7.h:234
#define GH7_Y0_X4
Definition raster-expected-phase7.h:184
#define GH7_Y0_X3
Definition raster-expected-phase7.h:183
#define GH11_Y0_X0
Definition raster-expected-phase7.h:189
#define GS_NEAR_MAX_APEX
Definition raster-expected-phase7.h:214
#define GC1_TOP_X4
Definition raster-expected-phase7.h:92
#define GO_PERM_INTERIOR_1_3
Definition raster-expected-phase7.h:257
#define GH11_Y0_X8
Definition raster-expected-phase7.h:193
#define GH3_Y0_X2
Definition raster-expected-phase7.h:170
#define GC1_INTERIOR_1_3
Definition raster-expected-phase7.h:97
#define GH3_Y0_X1
Definition raster-expected-phase7.h:169
#define GV5_X0_Y0
Definition raster-expected-phase7.h:133
#define GD_9_9
Definition raster-expected-phase7.h:238
#define GD_8_8
Definition raster-expected-phase7.h:233
#define GC3_V0_R
Definition raster-expected-phase7.h:111
#define RASTER_CMD_BLUE
Definition raster-helpers.h:127
#define RASTER_CMD_RED
Definition raster-helpers.h:123
#define RASTER_CMD_GREEN
Definition raster-helpers.h:125
#define ASSERT_PIXEL_EQ(expected, x_, y_)
Definition raster-helpers.h:472