41static void drawTriOk(
void) {
43 rasterClearTestRegion(0, 0, 32, 32);
46 rasterFlushPrimitive();
49static void drawTriEdgeDx(int16_t dx) {
51 rasterClearTestRegion(0, 0, 32, 32);
54 rasterFlushPrimitive();
57static void drawTriEdgeDy(int16_t dy) {
59 rasterClearTestRegion(0, 0, 32, 32);
62 rasterFlushPrimitive();
67static void drawGTriOk(
void) {
69 rasterClearTestRegion(0, 0, 32, 32);
73 rasterFlushPrimitive();
76static void drawGTriEdgeDx(int16_t dx) {
78 rasterClearTestRegion(0, 0, 32, 32);
82 rasterFlushPrimitive();
87static void drawTexTriOk(
void) {
89 rasterClearTestRegion(0, 0, 32, 32);
91 setTextureWindow(0, 0, 0, 0);
97 rasterFlushPrimitive();
100static void drawTexTriEdgeDx(int16_t dx) {
102 rasterClearTestRegion(0, 0, 32, 32);
104 setTextureWindow(0, 0, 0, 0);
110 rasterFlushPrimitive();
115static void drawQuadOk(
void) {
117 rasterClearTestRegion(0, 0, 32, 32);
119 rasterFlushPrimitive();
122static void drawQuadEdgeDx(int16_t dx) {
124 rasterClearTestRegion(0, 0, 32, 32);
127 rasterFlushPrimitive();
130static void drawQuadEdgeDy(int16_t dy) {
132 rasterClearTestRegion(0, 0, 32, 32);
134 rasterFlushPrimitive();
139static void drawTexQuadOk(
void) {
141 rasterClearTestRegion(0, 0, 32, 32);
143 setTextureWindow(0, 0, 0, 0);
150 rasterFlushPrimitive();
153static void drawTexQuadEdgeDx(int16_t dx) {
155 rasterClearTestRegion(0, 0, 32, 32);
157 setTextureWindow(0, 0, 0, 0);
164 rasterFlushPrimitive();
169static void drawLineEdgeDx(int16_t dx) {
171 rasterClearTestRegion(0, 0, 32, 32);
175 rasterFlushPrimitive();
180static void drawRectSize(int16_t w, int16_t h) {
182 rasterClearTestRegion(0, 0, 32, 32);
184 rasterFlushPrimitive();
195static void drawDropMechProbe(
void) {
197 rasterClearTestRegion(0, 0, 32, 32);
202 rasterFlushPrimitive();
224CESTER_TEST(ct_tri_dx_1024_drop, gpu_raster_phase14,
230CESTER_TEST(ct_tri_dx_1025_drop, gpu_raster_phase14,
235CESTER_TEST(ct_tri_dx_2047_drop, gpu_raster_phase14,
256CESTER_TEST(ct_tri_dy_1023_drop, gpu_raster_phase14,
269 drawGTriEdgeDx(1023);
273CESTER_TEST(ct_gtri_dx_1024_drop, gpu_raster_phase14,
274 drawGTriEdgeDx(1024);
278CESTER_TEST(ct_gtri_dx_2047_drop, gpu_raster_phase14,
279 drawGTriEdgeDx(2047);
295CESTER_TEST(ct_textri_dx_1023_ok, gpu_raster_phase14,
296 drawTexTriEdgeDx(1023);
303CESTER_TEST(ct_textri_dx_1024_drop, gpu_raster_phase14,
304 drawTexTriEdgeDx(1024);
308CESTER_TEST(ct_textri_dx_2047_drop, gpu_raster_phase14,
309 drawTexTriEdgeDx(2047);
321 drawQuadEdgeDx(1023);
325CESTER_TEST(ct_quad_dx_1024_drop, gpu_raster_phase14,
326 drawQuadEdgeDx(1024);
330CESTER_TEST(ct_quad_dx_2047_drop, gpu_raster_phase14,
331 drawQuadEdgeDx(2047);
340CESTER_TEST(ct_quad_dy_512_drop, gpu_raster_phase14,
347CESTER_TEST(ct_texquad_baseline, gpu_raster_phase14,
355CESTER_TEST(ct_texquad_dx_1023_ok, gpu_raster_phase14,
356 drawTexQuadEdgeDx(1023);
363CESTER_TEST(ct_texquad_dx_1024_drop, gpu_raster_phase14,
364 drawTexQuadEdgeDx(1024);
368CESTER_TEST(ct_texquad_dx_2047_drop, gpu_raster_phase14,
369 drawTexQuadEdgeDx(2047);
380CESTER_TEST(ct_line_dx_100_baseline, gpu_raster_phase14,
387 drawLineEdgeDx(1023);
391CESTER_TEST(ct_line_dx_1024_drop, gpu_raster_phase14,
392 drawLineEdgeDx(1024);
396CESTER_TEST(ct_line_dx_2047_drop, gpu_raster_phase14,
397 drawLineEdgeDx(2047);
407CESTER_TEST(ct_rect_w16_baseline, gpu_raster_phase14,
408 drawRectSize(16, 16);
413 drawRectSize(1023, 16);
419 drawRectSize(1024, 16);
425 drawRectSize(1025, 16);
432 drawRectSize(16, 511);
437 drawRectSize(16, 512);
443 drawRectSize(16, 513);
451CESTER_TEST(ct_drop_mech_second_renders, gpu_raster_phase14,
459CESTER_TEST(ct_drop_mech_oversized_not_rendered, gpu_raster_phase14,
473CESTER_TEST(ct_tri_vertex_abs_just_low_edges, gpu_raster_phase14,
475 rasterClearTestRegion(0, 0, 32, 32);
484 rasterFlushPrimitive();
499CESTER_TEST(ct_tri_pretrunc_baseline, gpu_raster_phase14,
501 rasterClearTestRegion(0, 0, 32, 32);
504 rasterFlushPrimitive();
507CESTER_TEST(ct_tri_pretrunc_bit11, gpu_raster_phase14,
509 rasterClearTestRegion(0, 0, 32, 32);
516 rasterFlushPrimitive();
519CESTER_TEST(ct_tri_pretrunc_bit15, gpu_raster_phase14,
521 rasterClearTestRegion(0, 0, 32, 32);
527 rasterFlushPrimitive();
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
cester_assert_uint_eq(1, *ptr)
cester_assert_uint_ne(0, r)
ramsyscall_printf("=== e01_kseg1_reads_no_fill ===\n")
#define CT_TEXTRI_DX_1023
Definition raster-expected-phase14.h:55
#define CT_RECT_H_512
Definition raster-expected-phase14.h:94
#define CT_TRI_VERTEX_ABS_OVER
Definition raster-expected-phase14.h:98
#define CT_TEXTRI_DX_1024
Definition raster-expected-phase14.h:56
#define CT_TEXTRI_DX_2047
Definition raster-expected-phase14.h:57
#define CT_QUAD_DY_512
Definition raster-expected-phase14.h:64
#define CT_TRI_DX_2047
Definition raster-expected-phase14.h:41
#define CT_TRI_DX_1025
Definition raster-expected-phase14.h:40
#define CT_TRI_DY_513
Definition raster-expected-phase14.h:44
#define CT_RECT_W_1025
Definition raster-expected-phase14.h:92
#define CT_TRI_DX_1023
Definition raster-expected-phase14.h:38
#define CT_RECT_W_1024
Definition raster-expected-phase14.h:91
#define CT_LINE_DX_2047
Definition raster-expected-phase14.h:75
#define CT_TEXQUAD_DX_1023
Definition raster-expected-phase14.h:68
#define CT_TRI_DX_1024
Definition raster-expected-phase14.h:39
#define CT_GTRI_DX_2047
Definition raster-expected-phase14.h:50
#define CT_TRI_PRETRUNC_BIT15
Definition raster-expected-phase14.h:107
#define CT_TRI_PRETRUNC_BIT11
Definition raster-expected-phase14.h:106
#define CT_RECT_H_511
Definition raster-expected-phase14.h:93
#define CT_LINE_DX_1023
Definition raster-expected-phase14.h:73
#define CT_RECT_W_1023
Definition raster-expected-phase14.h:90
#define CT_GTRI_DX_1023
Definition raster-expected-phase14.h:48
#define CT_TRI_DY_512
Definition raster-expected-phase14.h:43
#define CT_TRI_DY_1023
Definition raster-expected-phase14.h:45
#define CT_RECT_H_513
Definition raster-expected-phase14.h:95
#define CT_GTRI_DX_1024
Definition raster-expected-phase14.h:49
#define CT_TEXQUAD_DX_2047
Definition raster-expected-phase14.h:70
#define CT_TEXQUAD_DX_1024
Definition raster-expected-phase14.h:69
#define CT_QUAD_DY_511
Definition raster-expected-phase14.h:63
#define CT_QUAD_DX_2047
Definition raster-expected-phase14.h:62
#define CT_QUAD_DX_1023
Definition raster-expected-phase14.h:60
#define CT_LINE_DX_1024
Definition raster-expected-phase14.h:74
#define CT_TRI_DY_511
Definition raster-expected-phase14.h:42
#define CT_QUAD_DX_1024
Definition raster-expected-phase14.h:61
#define RASTER_VRAM_GREEN
Definition raster-helpers.h:126
#define RASTER_VRAM_BLUE
Definition raster-helpers.h:128
#define RASTER_VRAM_WHITE
Definition raster-helpers.h:130
#define ASSERT_PIXEL_UNTOUCHED(x_, y_)
Definition raster-helpers.h:485
#define RASTER_VRAM_RED
Definition raster-helpers.h:124
#define RASTER_CMD_BLUE
Definition raster-helpers.h:127
#define RASTER_CMD_RED
Definition raster-helpers.h:123
#define RASTER_CMD_WHITE
Definition raster-helpers.h:129
#define RASTER_CMD_GREEN
Definition raster-helpers.h:125
#define ASSERT_PIXEL_EQ(expected, x_, y_)
Definition raster-helpers.h:472
#define RASTER_SENTINEL
Definition raster-helpers.h:94
#define TEX15_TY
Definition texture-fixtures.h:66
#define TEX15_TPAGE
Definition texture-fixtures.h:104
#define CLUT15_FIELD
Definition texture-fixtures.h:85
#define TEX15_TX
Definition texture-fixtures.h:65
#define TEX_MOD_NEUTRAL
Definition texture-fixtures.h:328