GPU Timing at Game Scale: Difference between revisions
| Revision as of 04:48, 23 October 2026 RemmyLee (Main page: drop the Hardware Tests lede) | Revision as of 05:11, 23 October 2026 RemmyLee (Hardware tests: 72 more test pages, listed on the main page by area; RUN.toml no longer published) | ||
| Line 1: | Line 1: | ||
| + | --- | ||
| + | title: GPU Timing at Game Scale | ||
| + | type: test | ||
| + | summary: Measures GPU drawing time for screen-sized fills and draws and the time the display fetch takes from drawing in each video mode. | ||
| + | category: Hardware tests | ||
| + | info: Machine = SCPH-5501 (NTSC) | ||
| + | info: Program = gputiming2 | ||
| + | --- | ||
| + | |||
| + | ## Overview | ||
| + | |||
| + | The program times the commands a game sends at full scale: screen-sized fills, copies and uploads, polygons by area and shape, ordering-table lists and a frame-like list. Root counter 2 counts system clock cycles from just before the first GP0 word, and the program polls [GPUSTAT](/hardware/gpu/gpustat/) until bits 26 and 28 are both set. Interrupts are off, and each row prints four samples.[^src] | ||
| + | |||
| + | Every group starts with the display collapsed by GP1(07h), which keeps the [GPU](/hardware/gpu/) in vertical blank. One group (HDM) repeats four draws under each display mode to show how much time the display fetch takes from drawing.[^src] | ||
| + | |||
| + | ## Results | ||
| + | |||
| + | With the display collapsed, the time of a GP0(02h) fill grows with its width. A 640 x 240 fill took about 1.8 times as long as a 320 x 240 one.[^hfl] | ||
| + | |||
| + | Table: Screen-sized fills | ||
| + | |||
| + | | Size | Cycles (median of four) | | ||
| + | | --- | --- | | ||
| + | | 320 x 240 | 6,232 | | ||
| + | | 368 x 240 | 6,937 | | ||
| + | | 512 x 240 | 9,144 | | ||
| + | | 640 x 240 | 11,088 | | ||
| + | | 1008 x 248 | 17,213 | | ||
| + | |||
| + | Fills written back to back add up: one 64 x 64 fill took about 718 cycles, and five in a row took about 3,053. The display mode made no difference to a 320 x 240 fill. It took about 6,232 cycles with the display live at 320 x 240 and also at 640 x 480 interlaced and in 24-bit colour.[^hfl] | ||
| + | |||
| + | The display fetch slows the other commands. A 15-bit sprite of 256 x 128 took 93,489 cycles with the display collapsed and grew with the width and depth of the live display:[^hdm] | ||
| + | |||
| + | Table: 256 x 128 sprite under each display mode | ||
| + | |||
| + | | Display | Cycles (median of four) | | ||
| + | | --- | --- | | ||
| + | | Collapsed | 93,489 | | ||
| + | | 256 x 240 | 93,494 | | ||
| + | | 320 x 240 | 99,110 | | ||
| + | | 512 x 240 | 101,325 | | ||
| + | | 640 x 240 | 103,049 | | ||
| + | | 640 x 480 interlaced | 102,288 | | ||
| + | | 640 x 480 interlaced, 24-bit | 108,664 | | ||
| + | |||
| + | A 128 x 128 copy grew from about 20,977 cycles collapsed to about 23,010 at 640 x 480 interlaced in 24-bit colour. A Gouraud-shaded triangle of size 200 took about 20,830 to 21,070 cycles in every mode.[^hdm] | ||
| + | |||
| + | Turning the display off with GP1(03h) did not remove the cost. At 320 x 240 with the display off the sprite took 99,565 cycles. With the display on it took 99,110.[^hdm] | ||
| + | |||
| + | ## Runs | ||
| + | |||
| + | ### 28 September 2026 | ||
| + | |||
| + | [gputiming2/00RUN.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/00RUN.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 00 RUN | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | 14 tests | ||
| + | A chain program, linked at 80100000 | ||
| + | Saved on the card in slot 2, from image 1 | ||
| + | COP0 at start: BPC 00000000 BDA 80024F50 TAR 8001D3F0 DCIC 00000000 BadVaddr 1F801DAA BDAM FFFFFFFF | ||
| + | BPCM 00000000 SR 70000000 Cause 00000020 EPC 8001DF5C PRId 00000002 | ||
| + | ``` | ||
| + | |||
| + | [gputiming2/01HFL.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/01HFL.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 01 HFL GPU FILLS BY SIZE | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 1F801DAA | ||
| + | Fills (GP0 02h) by size with the display collapsed; back-to-back fills of 64x64; | ||
| + | the 320x240 fill with the display live at 320x240 and at 640x480 interlaced. | ||
| + | Fill 16x1: 176 176 181 176 | ||
| + | Fill 16x16: 294 293 295 294 | ||
| + | Fill 32x32: 354 350 356 354 | ||
| + | Fill 64x64: 721 716 719 720 | ||
| + | Fill 128x128: 1812 1818 1803 1817 | ||
| + | Fill 256x248: 5383 5395 5389 5448 | ||
| + | Fill 320x240: 6240 6232 6231 6233 | ||
| + | Fill 368x240: 6971 6968 6903 6906 | ||
| + | Fill 512x240: 9141 9084 9147 9148 | ||
| + | Fill 640x240: 11088 11088 11092 11082 | ||
| + | Fill 1008x248: 17210 17216 17204 17216 | ||
| + | Fill 16x248: 1627 1622 1636 1644 | ||
| + | Fill 256x16: 473 481 475 476 | ||
| + | Fill 1008x1: 294 305 291 296 | ||
| + | 2 fills of 64x64 written back to back: 1261 1268 1316 1317 | ||
| + | 3 fills of 64x64 written back to back: 1915 1860 1916 1855 | ||
| + | 4 fills of 64x64 written back to back: 2454 2458 2470 2457 | ||
| + | 5 fills of 64x64 written back to back: 3052 3050 3054 3056 | ||
| + | Fill 320x240, display live 320x240: 6180 6230 6184 6242 | ||
| + | Fill 320x240, display live 640x480i: 6230 6239 6244 6192 | ||
| + | Fill 320x240, display live 320x240 24-bit: 6237 6229 6234 6241 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [gputiming2/02HXD.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/02HXD.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 02 HXD GPU CPU TO VRAM | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 1F801DAA | ||
| + | CPU to VRAM: GP0(A0h) data by DMA2 (SyncMode 1, 16-word blocks, direction 2) and by | ||
| + | CPU stores, 16x16 to 256x128, read back by the CPU and compared, display collapsed and | ||
| + | live at 320x240 (psx-spx gpu.txt:698-702: DMA to VRAM may skip words outside vblank). | ||
| + | Collapsed, A0h 16x16 DMA block 16: channel done 300 265 259 252, idle 411 319 313 306, wrong words 0 | ||
| + | Collapsed, A0h 32x32 DMA block 16: channel done 981 972 956 956, idle 1097 1026 1010 1010, wrong words 0 | ||
| + | Collapsed, A0h 64x64 DMA block 16: channel done 3700 3676 3678 3660, idle 3811 3730 3732 3714, wrong words 0 | ||
| + | Collapsed, A0h 128x64 DMA block 16: channel done 7311 7308 7313 7332, idle 7422 7372 7367 7386, wrong words 0 | ||
| + | Collapsed, A0h 128x128 DMA block 16: channel done 14596 14589 14584 14584, idle 14707 14643 14638 14638, wrong words 0 | ||
| + | Collapsed, A0h 256x128 DMA block 16: channel done 29037 29011 29029 29019, idle 29148 29065 29083 29078, wrong words 0 | ||
| + | Collapsed, A0h 128x128 CPU stores: idle 34476 34447 34451 34444, wrong words 0 | ||
| + | Collapsed, A0h 256x128 CPU stores: idle 3239 3242 3237 3244, wrong words 0 | ||
| + | Live 320x240, A0h 16x16 DMA block 16: channel done 271 252 248 252, idle 387 306 302 306, wrong words 0 | ||
| + | Live 320x240, A0h 32x32 DMA block 16: channel done 977 971 956 956, idle 1097 1025 1010 1010, wrong words 0 | ||
| + | Live 320x240, A0h 64x64 DMA block 16: channel done 3703 3678 3663 3660, idle 3814 3732 3717 3714, wrong words 0 | ||
| + | Live 320x240, A0h 128x64 DMA block 16: channel done 7345 7362 7379 7327, idle 7461 7416 7433 7381, wrong words 0 | ||
| + | Live 320x240, A0h 128x128 DMA block 16: channel done 14720 14736 14658 14720, idle 14831 14790 14717 14774, wrong words 0 | ||
| + | Live 320x240, A0h 256x128 DMA block 16: channel done 29116 29119 29101 29075, idle 29232 29173 29155 29129, wrong words 0 | ||
| + | Live 320x240, A0h 128x128 CPU stores: idle 34450 34447 34447 34451, wrong words 0 | ||
| + | Live 320x240, A0h 256x128 CPU stores: idle 3236 3236 3239 3238, wrong words 0 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [gputiming2/03HRD.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/03HRD.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 03 HRD GPU VRAM TO CPU | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 1F801DAA | ||
| + | VRAM to CPU: GP0(C0h) data by DMA2 (SyncMode 1, 16-word blocks, direction 3) and by | ||
| + | CPU loads, 16x16 to 256x128, against the words written first, display collapsed and | ||
| + | live at 320x240. | ||
| + | Collapsed, C0h 16x16 DMA block 16: bit 27 at 41 66 66 71, channel done 298 247 247 292, idle 352 301 301 346, wrong words 0 | ||
| + | Collapsed, C0h 32x32 DMA block 16: bit 27 at 41 71 66 66, channel done 1072 1098 1092 1098, idle 1126 1152 1152 1152, wrong words 0 | ||
| + | Collapsed, C0h 64x64 DMA block 16: bit 27 at 41 76 66 68, channel done 4459 4438 4425 4431, idle 4513 4492 4479 4485, wrong words 0 | ||
| + | Collapsed, C0h 128x64 DMA block 16: bit 27 at 41 71 66 66, channel done 8933 8930 8915 8907, idle 8987 8984 8979 8961, wrong words 0 | ||
| + | Collapsed, C0h 128x128 DMA block 16: bit 27 at 41 70 70 70, channel done 17842 17833 17833 17833, idle 17896 17887 17887 17887, wrong words 0 | ||
| + | Collapsed, C0h 256x128 DMA block 16: bit 27 at 41 66 68 71, channel done 35722 35703 35708 35711, idle 35779 35757 35762 35765, wrong words 0 | ||
| + | Collapsed, C0h 128x128 CPU loads: reads end 9666 9630 9637 9635, wrong words 0 | ||
| + | Collapsed, C0h 256x128 CPU loads: reads end 18988 18983 18996 18996, wrong words 0 | ||
| + | Live 320x240, C0h 16x16 DMA block 16: bit 27 at 41 68 66 66, channel done 269 289 247 247, idle 323 343 301 301, wrong words 0 | ||
| + | Live 320x240, C0h 32x32 DMA block 16: bit 27 at 124 71 66 66, channel done 1080 1109 1109 1111, idle 1134 1163 1163 1165, wrong words 0 | ||
| + | Live 320x240, C0h 64x64 DMA block 16: bit 27 at 41 76 66 68, channel done 4459 4438 4425 4431, idle 4513 4492 4479 4485, wrong words 0 | ||
| + | Live 320x240, C0h 128x64 DMA block 16: bit 27 at 40 71 66 66, channel done 8938 8958 8957 8968, idle 8992 9013 9011 9022, wrong words 0 | ||
| + | Live 320x240, C0h 128x128 DMA block 16: bit 27 at 41 66 66 156, channel done 17958 17892 17856 17915, idle 18012 17946 17910 17969, wrong words 0 | ||
| + | Live 320x240, C0h 256x128 DMA block 16: bit 27 at 124 91 66 66, channel done 35953 35721 35859 35896, idle 36007 35784 35913 35950, wrong words 0 | ||
| + | Live 320x240, C0h 128x128 CPU loads: reads end 9624 9629 9632 9632, wrong words 0 | ||
| + | Live 320x240, C0h 256x128 CPU loads: reads end 18987 18994 18994 18994, wrong words 0 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [gputiming2/04HCP.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/04HCP.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 04 HCP GPU SCREEN COPIES | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 1F801DAA | ||
| + | VRAM to VRAM copies (GP0 80h) of screen size: whole buffers side by side, shifted by | ||
| + | one pixel and one row (overlapping), and 16 copies of 16x16 back to back. | ||
| + | Copy 320x240 from 0,256 to 320,256: 101445 101395 101402 101401 | ||
| + | Copy 256x240 from 0,256 to 256,256: 78725 78788 78784 78776 | ||
| + | Copy 128x240 to x 512: 39239 39165 39167 39231 | ||
| + | Copy 64x240 to x 512: 22379 22378 22310 22375 | ||
| + | Copy 320x120 down 120 rows: 50869 50818 50753 50747 | ||
| + | Copy 320x240 to x+1 (overlapping): 101880 101950 101884 102071 | ||
| + | Copy 320x240 to x-1 (overlapping): 102187 102186 102189 102190 | ||
| + | Copy 320x240 to y+1 (overlapping): 101531 101396 101397 101401 | ||
| + | Copy 320x240 to y-1 (overlapping): 101404 101522 101392 101403 | ||
| + | Copy 368x240 to x 640: 113644 113640 113773 113598 | ||
| + | 4 copies of 16x16 back to back: 2683 2632 2643 2673 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [gputiming2/05HTF.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/05HTF.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 05 HTF GPU FLAT TRI AREA | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 1F801DAA | ||
| + | Flat triangles (GP0 20h) by area and shape: right triangles of legs 0 to 240, wide | ||
| + | and tall ones of equal area, turned, flat top, flat bottom, general, a sliver. | ||
| + | Flat right triangle legs 0: 192 194 188 194 | ||
| + | Flat right triangle legs 1: 193 188 194 193 | ||
| + | Flat right triangle legs 8: 192 188 305 193 | ||
| + | Flat right triangle legs 16: 305 302 305 312 | ||
| + | Flat right triangle legs 32: 492 488 488 492 | ||
| + | Flat right triangle legs 64: 1333 1338 1346 1334 | ||
| + | Flat right triangle legs 128: 4558 4551 4546 4551 | ||
| + | Flat right triangle legs 240: 15107 15098 15098 15100 | ||
| + | Flat 512 wide 32 tall: 4487 4493 4496 4487 | ||
| + | Flat 32 wide 240 tall: 2669 2670 2670 2670 | ||
| + | Flat 256 wide 64 tall: 4483 4491 4492 4491 | ||
| + | Flat 64 wide 240 tall: 4555 4551 4546 4551 | ||
| + | Flat turned 45 degrees, 128 across: 3581 3524 3581 3580 | ||
| + | Flat flat top 128: 4610 4731 4613 4607 | ||
| + | Flat flat bottom 128: 4550 4551 4547 4546 | ||
| + | Flat general 128: 3879 3884 3881 3886 | ||
| + | Flat sliver 200 long: 433 432 427 485 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [gputiming2/06HTG.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/06HTG.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 06 HTG GPU GOURAUD TRI AREA | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 1F801DAA | ||
| + | Gouraud triangles (GP0 30h), the same shapes, dither off; then dither on. | ||
| + | Gouraud right triangle legs 0: 386 387 386 384 | ||
| + | Gouraud right triangle legs 1: 328 323 324 324 | ||
| + | Gouraud right triangle legs 8: 395 398 399 397 | ||
| + | Gouraud right triangle legs 16: 516 519 513 520 | ||
| + | Gouraud right triangle legs 32: 950 944 945 938 | ||
| + | Gouraud right triangle legs 64: 2570 2518 2524 2520 | ||
| + | Gouraud right triangle legs 128: 8878 8875 8826 8826 | ||
| + | Gouraud right triangle legs 240: 29748 29752 29744 29744 | ||
| + | Gouraud 512 wide 32 tall: 8893 8827 8827 8827 | ||
| + | Gouraud 32 wide 240 tall: 4823 4823 4829 4823 | ||
| + | Gouraud 256 wide 64 tall: 8765 8764 8758 8762 | ||
| + | Gouraud 64 wide 240 tall: 8630 8641 8640 8636 | ||
| + | Gouraud turned 45 degrees, 128 across: 6761 6766 6765 6765 | ||
| + | Gouraud flat top 128: 8890 8888 8946 8935 | ||
| + | Gouraud flat bottom 128: 8809 8770 8815 8815 | ||
| + | Gouraud general 128: 7486 7487 7494 7499 | ||
| + | Gouraud sliver 200 long: 759 763 758 767 | ||
| + | Gouraud dithered right triangle legs 0: 385 385 386 385 | ||
| + | Gouraud dithered right triangle legs 1: 324 322 322 324 | ||
| + | Gouraud dithered right triangle legs 8: 396 400 400 391 | ||
| + | Gouraud dithered right triangle legs 16: 522 515 523 518 | ||
| + | Gouraud dithered right triangle legs 32: 948 936 948 943 | ||
| + | Gouraud dithered right triangle legs 64: 2523 2576 2579 2574 | ||
| + | Gouraud dithered right triangle legs 128: 8832 8887 8878 8832 | ||
| + | Gouraud dithered right triangle legs 240: 29745 29728 29745 29744 | ||
| + | Gouraud dithered 512 wide 32 tall: 8884 8827 8827 8827 | ||
| + | Gouraud dithered 32 wide 240 tall: 4826 4827 4817 4825 | ||
| + | Gouraud dithered 256 wide 64 tall: 8764 8770 8815 8815 | ||
| + | Gouraud dithered 64 wide 240 tall: 8643 8640 8641 8647 | ||
| + | Gouraud dithered turned 45 degrees, 128 across: 6761 6768 6768 6768 | ||
| + | Gouraud dithered flat top 128: 8938 8942 8946 8935 | ||
| + | Gouraud dithered flat bottom 128: 8825 8772 8815 8815 | ||
| + | Gouraud dithered general 128: 7499 7493 7494 7544 | ||
| + | Gouraud dithered sliver 200 long: 817 817 761 762 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [gputiming2/07HTT.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/07HTT.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 07 HTT GPU TEXTURED TRIS | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 1F801DAA | ||
| + | Textured triangles (GP0 24h) at 4, 8 and 15 bits: legs 16 to 240 at texture 1:1 | ||
| + | (cold: another page named first, so the cache starts empty; warm: repeated), 128 at | ||
| + | texture 64 (magnified) and 255 (minified), and 128 with u running down the screen. | ||
| + | Depth 0 legs 16 texture 1:1, cold: 574 568 569 576 | ||
| + | Depth 0 legs 16 texture 1:1, warm: 470 469 473 468 | ||
| + | Depth 0 legs 64 texture 1:1, cold: 3839 3850 3902 3847 | ||
| + | Depth 0 legs 64 texture 1:1, warm: 2527 2530 2541 2536 | ||
| + | Depth 0 legs 128 texture 1:1, cold: 13781 13791 13789 13852 | ||
| + | Depth 0 legs 128 texture 1:1, warm: 13020 13021 13079 13021 | ||
| + | Depth 0 legs 240 texture 1:1, cold: 46351 46410 46402 46602 | ||
| + | Depth 0 legs 240 texture 1:1, warm: 46423 46425 46426 46375 | ||
| + | Depth 0 legs 128 texture 64: 10291 8830 8837 8847 | ||
| + | Depth 0 legs 128 texture 255: 17333 17998 17982 17991 | ||
| + | Depth 0 legs 128, u down the screen: 45824 44968 45154 44970 | ||
| + | Depth 0 gouraud-textured legs 128: 13103 13160 13102 13108 | ||
| + | Depth 0 raw legs 128: 12961 12960 12958 12962 | ||
| + | Depth 1 legs 16 texture 1:1, cold: 875 624 629 630 | ||
| + | Depth 1 legs 16 texture 1:1, warm: 468 468 469 468 | ||
| + | Depth 1 legs 64 texture 1:1, cold: 4990 4999 4999 5010 | ||
| + | Depth 1 legs 64 texture 1:1, warm: 3925 3918 3923 3920 | ||
| + | Depth 1 legs 128 texture 1:1, cold: 18578 18519 18519 18519 | ||
| + | Depth 1 legs 128 texture 1:1, warm: 18538 18541 18542 18526 | ||
| + | Depth 1 legs 240 texture 1:1, cold: 63271 63258 63320 63260 | ||
| + | Depth 1 legs 240 texture 1:1, warm: 63277 63342 63278 63288 | ||
| + | Depth 1 legs 128 texture 64: 11443 10296 10346 10352 | ||
| + | Depth 1 legs 128 texture 255: 27095 27629 27633 27629 | ||
| + | Depth 1 legs 128, u down the screen: 70640 70700 70699 70709 | ||
| + | Depth 1 gouraud-textured legs 128: 18498 18692 18562 18509 | ||
| + | Depth 1 raw legs 128: 18357 18358 18353 18355 | ||
| + | Depth 2 legs 16 texture 1:1, cold: 747 752 747 809 | ||
| + | Depth 2 legs 16 texture 1:1, warm: 474 468 472 476 | ||
| + | Depth 2 legs 64 texture 1:1, cold: 7366 7306 7305 7358 | ||
| + | Depth 2 legs 64 texture 1:1, warm: 6471 6411 6473 6411 | ||
| + | Depth 2 legs 128 texture 1:1, cold: 27794 27797 27795 27795 | ||
| + | Depth 2 legs 128 texture 1:1, warm: 27816 27818 28059 27874 | ||
| + | Depth 2 legs 240 texture 1:1, cold: 95973 95948 95963 95956 | ||
| + | Depth 2 legs 240 texture 1:1, warm: 95997 95978 95992 96001 | ||
| + | Depth 2 legs 128 texture 64: 17079 16109 16113 16109 | ||
| + | Depth 2 legs 128 texture 255: 44307 44668 44673 44916 | ||
| + | Depth 2 legs 128, u down the screen: 71725 71731 71671 71683 | ||
| + | Depth 2 gouraud-textured legs 128: 27785 27838 27841 27794 | ||
| + | Depth 2 raw legs 128: 27625 27628 27814 27636 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [gputiming2/08HMX.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/08HMX.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 08 HMX GPU MODE COSTS | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 1F801DAA | ||
| + | Drawing modes on five shapes: plain; semi-transparent in modes 0-3 (the command's | ||
| + | semi bit, mode from E1h or the texpage attribute); dither; E6h 1 (set mask), 2 (check | ||
| + | mask, over pixels with bit 15 clear) and 3. | ||
| + | Plain: flat tri 128: 4547 4552 4547 4555 | ||
| + | Plain: gouraud tri 128: 8822 8821 8821 8821 | ||
| + | Plain: textured tri 128: 27632 27635 27633 27689 | ||
| + | Plain: rect 128x128: 8595 8593 8604 8595 | ||
| + | Plain: textured rect 128x128: 47047 46997 47061 47177 | ||
| + | Semi mode 0: flat tri 128: 6857 6851 6859 6855 | ||
| + | Semi mode 0: gouraud tri 128: 8887 8946 8935 8946 | ||
| + | Semi mode 0: textured tri 128: 31087 31098 31027 31088 | ||
| + | Semi mode 0: rect 128x128: 12956 12977 12970 12969 | ||
| + | Semi mode 0: textured rect 128x128: 54692 54696 54688 54882 | ||
| + | Semi mode 1: flat tri 128: 6852 6860 6855 6847 | ||
| + | Semi mode 1: gouraud tri 128: 8929 8946 8935 8946 | ||
| + | Semi mode 1: textured tri 128: 31092 31038 31022 31092 | ||
| + | Semi mode 1: rect 128x128: 12974 12973 12966 12956 | ||
| + | Semi mode 1: textured rect 128x128: 54684 54700 54865 54696 | ||
| + | Semi mode 2: flat tri 128: 6857 6850 6847 6860 | ||
| + | Semi mode 2: gouraud tri 128: 8941 8935 8946 8935 | ||
| + | Semi mode 2: textured tri 128: 31025 31082 31089 31086 | ||
| + | Semi mode 2: rect 128x128: 12970 12966 12973 12966 | ||
| + | Semi mode 2: textured rect 128x128: 54696 54692 54879 54694 | ||
| + | Semi mode 3: flat tri 128: 6851 6847 6856 6859 | ||
| + | Semi mode 3: gouraud tri 128: 8887 8876 8882 8935 | ||
| + | Semi mode 3: textured tri 128: 31025 31082 31089 31086 | ||
| + | Semi mode 3: rect 128x128: 12970 12966 12973 12966 | ||
| + | Semi mode 3: textured rect 128x128: 54696 54873 54683 54689 | ||
| + | Dither: flat tri 128: 4554 4553 4546 4551 | ||
| + | Dither: gouraud tri 128: 8833 8830 8832 8832 | ||
| + | Dither: textured tri 128: 27686 27696 27629 27695 | ||
| + | Dither: rect 128x128: 8610 8604 8609 8595 | ||
| + | Dither: textured rect 128x128: 47048 47060 47232 46995 | ||
| + | E6h 1: flat tri 128: 4546 4546 4551 4547 | ||
| + | E6h 1: gouraud tri 128: 8881 8832 8832 8832 | ||
| + | E6h 1: textured tri 128: 27685 27632 27631 27629 | ||
| + | E6h 1: rect 128x128: 8602 8602 8598 8598 | ||
| + | E6h 1: textured rect 128x128: 47048 47058 47058 47239 | ||
| + | E6h 2: flat tri 128: 6852 6862 6855 6847 | ||
| + | E6h 2: gouraud tri 128: 8887 8888 8946 8935 | ||
| + | E6h 2: textured tri 128: 31034 31090 31029 31026 | ||
| + | E6h 2: rect 128x128: 12970 12973 12966 12956 | ||
| + | E6h 2: textured rect 128x128: 54694 54700 54685 54869 | ||
| + | E6h 3: flat tri 128: 6857 6858 6859 6851 | ||
| + | E6h 3: gouraud tri 128: 8893 8887 8949 8892 | ||
| + | E6h 3: textured tri 128: 31085 31083 31089 31084 | ||
| + | E6h 3: rect 128x128: 12970 12961 12973 12966 | ||
| + | E6h 3: textured rect 128x128: 54688 54697 54872 54696 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [gputiming2/09HQD.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/09HQD.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 09 HQD GPU QUADS BY SIDE | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 1F801DAA | ||
| + | Quads by side 16 to 240: flat (28h), gouraud (38h), textured 15-bit 1:1 (2Ch), | ||
| + | gouraud-textured (3Ch), and a square of 128 turned 45 degrees. | ||
| + | Flat quad 16: 383 385 394 380 | ||
| + | Gouraud quad 16: 667 669 672 667 | ||
| + | Textured quad 16: 1165 613 620 620 | ||
| + | Gouraud-textured quad 16: 906 900 904 904 | ||
| + | Flat quad 64: 2548 2544 2539 2542 | ||
| + | Gouraud quad 64: 4737 4737 4731 4782 | ||
| + | Textured quad 64: 13543 14175 14168 14160 | ||
| + | Gouraud-textured quad 64: 14328 14337 14280 14342 | ||
| + | Flat quad 128: 9002 8997 9006 9001 | ||
| + | Gouraud quad 128: 17361 17367 17364 17360 | ||
| + | Textured quad 128: 55248 55064 55076 55065 | ||
| + | Gouraud-textured quad 128: 55232 55172 55232 55244 | ||
| + | Flat quad 240: 30134 30194 30248 30121 | ||
| + | Gouraud quad 240: 59172 59132 59171 59125 | ||
| + | Textured quad 240: 191326 191464 191287 191282 | ||
| + | Gouraud-textured quad 240: 191628 191454 191498 191635 | ||
| + | Flat quad 128 turned 45 degrees: 8769 8767 8764 8758 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [gputiming2/10HRA.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/10HRA.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 10 HRA GPU RECTS BY SIDE | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 1F801DAA | ||
| + | Rectangles by side 8 to 240: flat (60h), textured at 4, 8, 15 bits (64h) with the | ||
| + | texture cold and warm; a 320x240 flat rect; a 256x240 15-bit sprite (a background). | ||
| + | Flat rect 8: 181 176 179 176 | ||
| + | Textured rect 8 depth 0, cold: 285 284 288 287 | ||
| + | Textured rect 8 depth 0, warm: 190 188 188 191 | ||
| + | Textured rect 8 depth 1, cold: 476 288 284 288 | ||
| + | Textured rect 8 depth 1, warm: 190 193 194 193 | ||
| + | Textured rect 8 depth 2, cold: 348 343 348 348 | ||
| + | Textured rect 8 depth 2, warm: 193 188 194 188 | ||
| + | Flat rect 16: 296 294 299 299 | ||
| + | Textured rect 16 depth 0, cold: 411 411 407 408 | ||
| + | Textured rect 16 depth 0, warm: 305 305 302 307 | ||
| + | Textured rect 16 depth 1, cold: 598 593 593 598 | ||
| + | Textured rect 16 depth 1, warm: 306 305 310 312 | ||
| + | Textured rect 16 depth 2, cold: 894 894 893 893 | ||
| + | Textured rect 16 depth 2, warm: 306 305 310 312 | ||
| + | Flat rect 32: 725 717 721 724 | ||
| + | Textured rect 32 depth 0, cold: 1321 1310 1311 1311 | ||
| + | Textured rect 32 depth 0, warm: 733 727 726 727 | ||
| + | Textured rect 32 depth 1, cold: 1990 1986 1986 1989 | ||
| + | Textured rect 32 depth 1, warm: 729 733 731 728 | ||
| + | Textured rect 32 depth 2, cold: 3138 3143 3138 3136 | ||
| + | Textured rect 32 depth 2, warm: 728 733 736 733 | ||
| + | Flat rect 64: 2356 2352 2303 2353 | ||
| + | Textured rect 64 depth 0, cold: 4843 4843 4836 4833 | ||
| + | Textured rect 64 depth 0, warm: 2369 2370 2365 2312 | ||
| + | Textured rect 64 depth 1, cold: 7441 7441 7441 7392 | ||
| + | Textured rect 64 depth 1, warm: 7456 7465 7403 7460 | ||
| + | Textured rect 64 depth 2, cold: 11927 11927 11927 11926 | ||
| + | Textured rect 64 depth 2, warm: 11944 11944 11939 11946 | ||
| + | Flat rect 128: 8606 8593 8604 8595 | ||
| + | Textured rect 128 depth 0, cold: 18787 18899 18839 18778 | ||
| + | Textured rect 128 depth 0, warm: 18860 18859 18858 18857 | ||
| + | Textured rect 128 depth 1, cold: 29146 29141 29151 29143 | ||
| + | Textured rect 128 depth 1, warm: 29165 29164 29165 29176 | ||
| + | Textured rect 128 depth 2, cold: 47036 47033 47206 46974 | ||
| + | Textured rect 128 depth 2, warm: 47054 46992 47052 46993 | ||
| + | Flat rect 240: 29519 29520 29521 29522 | ||
| + | Textured rect 240 depth 0, cold: 65228 65403 65224 65228 | ||
| + | Textured rect 240 depth 0, warm: 65241 65299 65237 65302 | ||
| + | Textured rect 240 depth 1, cold: 102291 102050 102114 102113 | ||
| + | Textured rect 240 depth 1, warm: 102122 102250 102130 102071 | ||
| + | Textured rect 240 depth 2, cold: 164159 164145 164154 164154 | ||
| + | Textured rect 240 depth 2, warm: 164172 164410 164175 164176 | ||
| + | Flat rect 320x240: 39158 39164 39288 39156 | ||
| + | 15-bit sprite 256x240: 175213 175206 175394 175275 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [gputiming2/11HOT.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/11HOT.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 11 HOT GPU ORDERING TABLES | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 1F801DAA | ||
| + | Linked lists by DMA2 (direction 2), one primitive a node, spread over a 16-wide grid: | ||
| + | 16x16 4-bit sprites (7Ch), 32-pixel gouraud triangles, 32x32 8-bit textured quads, for | ||
| + | 1 to 256 nodes; 64 sprites with the CLUT the same or alternating; 64 sprites with an | ||
| + | E1h node before each, the page the same or alternating. | ||
| + | 1 sprites 16x16 4-bit: channel done 61 83 75 76, idle 420 268 260 266 | ||
| + | 8 sprites 16x16 4-bit: channel done 1153 1134 1124 1123, idle 1489 1453 1436 1497 | ||
| + | 32 sprites 16x16 4-bit: channel done 5330 5313 5325 5306, idle 5666 5628 5642 5676 | ||
| + | 128 sprites 16x16 4-bit: channel done 22059 22016 22049 22049, idle 22389 22391 22364 22365 | ||
| + | 256 sprites 16x16 4-bit: channel done 44321 44311 44375 44307, idle 44711 44684 44686 44635 | ||
| + | 1 gouraud triangles 32: channel done 50 86 78 78, idle 831 820 819 819 | ||
| + | 8 gouraud triangles 32: channel done 3863 3863 3863 3879, idle 5065 5040 5041 5065 | ||
| + | 32 gouraud triangles 32: channel done 18301 18327 18290 18306, idle 19497 19509 19518 19481 | ||
| + | 128 gouraud triangles 32: channel done 76126 76120 76096 76117, idle 77325 77295 77278 77288 | ||
| + | 256 gouraud triangles 32: channel done 153124 153171 153129 153117, idle 154318 154340 154306 154297 | ||
| + | 1 textured quads 32 8-bit: channel done 53 89 87 81, idle 2757 1379 1386 1384 | ||
| + | 8 textured quads 32 8-bit: channel done 8044 8043 8045 8049, idle 9862 9838 9847 9853 | ||
| + | 32 textured quads 32 8-bit: channel done 37036 37016 37008 37011, idle 38842 38808 38806 38812 | ||
| + | 128 textured quads 32 8-bit: channel done 152872 152896 152866 152865, idle 154694 154696 154689 154659 | ||
| + | 256 textured quads 32 8-bit: channel done 306875 306918 306868 306940, idle 308635 308656 308604 308683 | ||
| + | 64 sprites, CLUT the same: channel done 11018 10858 10894 10875, idle 11408 11232 11204 11251 | ||
| + | 64 sprites, CLUT alternating: channel done 12621 12650 12603 12598, idle 12954 12965 12975 12977 | ||
| + | 64 E1h and sprite nodes, page the same: channel done 11141 11134 11153 11134, idle 11483 11454 11469 11455 | ||
| + | 64 E1h and sprite nodes, page alternating: channel done 19127 19228 19411 19204, idle 19707 19855 20028 19840 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [gputiming2/12HFR.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/12HFR.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 12 HFR GPU FRAME LIST | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 1F801DAA | ||
| + | A frame-like list by DMA2: fill 320x240, then N gouraud-textured 8-bit triangles of | ||
| + | about 24-40 by 20-36 pixels, an E1h node, then M 16x16 4-bit sprites; display collapsed, | ||
| + | live at 320x240, and live at 640x480 interlaced. | ||
| + | Collapsed, fill only: channel done 162 85 85 85, idle 6193 6159 6155 6155 | ||
| + | Collapsed, 100 triangles 30 sprites: channel done 66086 65848 65786 65808, idle 66426 66163 66096 66122 | ||
| + | Collapsed, 200 triangles 60 sprites: channel done 125154 125192 125146 125217, idle 125494 125505 125520 125533 | ||
| + | Live 320x240, fill only: channel done 132 85 85 91, idle 6158 6159 6143 6155 | ||
| + | Live 320x240, 100 triangles 30 sprites: channel done 65777 65821 65812 65771, idle 66112 66135 66127 66141 | ||
| + | Live 320x240, 200 triangles 60 sprites: channel done 127703 127640 126749 127712, idle 128033 127955 127065 128100 | ||
| + | Live 640x480i, 200 triangles 60 sprites: channel done 128202 127494 128175 128202, idle 128543 127869 128502 128572 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [gputiming2/13HDM.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/13HDM.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 13 HDM GPU DISPLAY SHARE | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 1F801DAA | ||
| + | Four draws under each display mode, fullscreen NTSC ranges: collapsed, 240 lines at | ||
| + | each width, 640x480 interlaced, 320 and 640x480i in 24-bit, and 320x240 with the | ||
| + | display off (GP1 03h 1). | ||
| + | Collapsed, fill 256x248: 5381 5394 5454 5448 | ||
| + | Collapsed, 15-bit sprite 256x128: 93489 93489 93498 93561 | ||
| + | Collapsed, gouraud tri 200: 20827 20830 20840 20834 | ||
| + | Collapsed, copy 128x128: 20977 20916 20979 20980 | ||
| + | 256x240, fill 256x248: 5445 5391 5380 5384 | ||
| + | 256x240, 15-bit sprite 256x128: 93489 93489 93498 96110 | ||
| + | 256x240, gouraud tri 200: 21013 21018 21016 21013 | ||
| + | 256x240, copy 128x128: 21342 21283 21342 21412 | ||
| + | 320x240, fill 256x248: 5818 5749 5814 5881 | ||
| + | 320x240, 15-bit sprite 256x128: 99745 98035 98538 99682 | ||
| + | 320x240, gouraud tri 200: 21004 21011 21002 21013 | ||
| + | 320x240, copy 128x128: 21402 21287 21347 21402 | ||
| + | 368x240, fill 256x248: 5871 5804 5870 5874 | ||
| + | 368x240, 15-bit sprite 256x128: 96355 99683 99691 99685 | ||
| + | 368x240, gouraud tri 200: 21073 21011 21062 21011 | ||
| + | 368x240, copy 128x128: 21888 21832 21890 21102 | ||
| + | 512x240, fill 256x248: 5394 5564 5993 5933 | ||
| + | 512x240, 15-bit sprite 256x128: 101319 101444 101328 101322 | ||
| + | 512x240, gouraud tri 200: 21014 21071 20835 20835 | ||
| + | 512x240, copy 128x128: 22188 22196 22136 22138 | ||
| + | 640x240, fill 256x248: 6052 6054 6054 6054 | ||
| + | 640x240, 15-bit sprite 256x128: 103088 103013 103085 97931 | ||
| + | 640x240, gouraud tri 200: 21073 21138 21018 21071 | ||
| + | 640x240, copy 128x128: 21352 21416 21278 21344 | ||
| + | 640x480i, fill 256x248: 5993 6112 6001 6061 | ||
| + | 640x480i, 15-bit sprite 256x128: 103075 101504 100276 103072 | ||
| + | 640x480i, gouraud tri 200: 21069 21071 21006 21125 | ||
| + | 640x480i, copy 128x128: 21409 21296 21462 21286 | ||
| + | 320x240 24-bit, fill 256x248: 5932 5993 5993 5993 | ||
| + | 320x240 24-bit, 15-bit sprite 256x128: 97255 101321 101322 101389 | ||
| + | 320x240 24-bit, gouraud tri 200: 21069 21011 21078 21011 | ||
| + | 320x240 24-bit, copy 128x128: 21897 21944 21586 20982 | ||
| + | 640x480i 24-bit, fill 256x248: 6467 6419 6474 6479 | ||
| + | 640x480i 24-bit, 15-bit sprite 256x128: 108658 108667 108661 108668 | ||
| + | 640x480i 24-bit, gouraud tri 200: 20831 20890 21131 21071 | ||
| + | 640x480i 24-bit, copy 128x128: 22984 22976 23039 23047 | ||
| + | 320x240 display off, fill 256x248: 5818 5875 5869 5752 | ||
| + | 320x240 display off, 15-bit sprite 256x128: 99690 99683 97137 99447 | ||
| + | 320x240 display off, gouraud tri 200: 21013 21005 21066 21018 | ||
| + | 320x240 display off, copy 128x128: 21409 21462 21476 21469 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [gputiming2/14HPL.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/14HPL.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 14 HPL GPU DRAWSYNC POLL | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 1F801DAA | ||
| + | What a DrawSync-style poll sees: during a DMA2 list, how many times GPUSTAT.26 rose | ||
| + | before the channel ended and after, when bits 26 and 28 were set for good (64 reads | ||
| + | in a row), and the last change (gpu.txt:1023-1026). | ||
| + | 8 gouraud triangles 64: [26 rose 0 then 1, first at 17995, channel done 13601, idle for good 17995, last change 17995] [26 rose 0 then 1, first at 18009, channel done 13549, idle for good 18009, last change 18009] [26 rose 0 then 1, first at 18006, channel done 13549, idle for good 18006, last change 18006] [26 rose 0 then 1, first at 17995, channel done 13607, idle for good 17995, last change 17995] | ||
| + | 32 sprites 16x16: [26 rose 0 then 1, first at 5813, channel done 5470, idle for good 5813, last change 5813] [26 rose 0 then 1, first at 5635, channel done 5358, idle for good 5635, last change 5635] [26 rose 0 then 1, first at 5641, channel done 5358, idle for good 5641, last change 5641] [26 rose 0 then 1, first at 5667, channel done 5320, idle for good 5667, last change 5667] | ||
| + | fill 256x248 then a flat tri 16: [26 rose 0 then 1, first at 5492, channel done 174, idle for good 5492, last change 5492] [26 rose 0 then 1, first at 5493, channel done 175, idle for good 5493, last change 5493] [26 rose 0 then 1, first at 5491, channel done 174, idle for good 5491, last change 5491] [26 rose 0 then 1, first at 5491, channel done 174, idle for good 5491, last change 5491] | ||
| + | tri, copy 128x128, tri: [26 rose 0 then 1, first at 21168, channel done 251, idle for good 21168, last change 21168] [26 rose 0 then 1, first at 21175, channel done 256, idle for good 21175, last change 21175] [26 rose 0 then 1, first at 21164, channel done 251, idle for good 21164, last change 21164] [26 rose 0 then 1, first at 21164, channel done 251, idle for good 21164, last change 21164] | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | ## References | ||
| + | |||
| + | [^src]: Console test suite (PsyQ build), programs/gpu/gputiming2.c and gputiming2.md. | ||
| + | [^hfl]: Hardware test run 20260928T0000Z-5501a-card-h: [gputiming2/01HFL.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/01HFL.txt). | ||
| + | [^hdm]: Hardware test run 20260928T0000Z-5501a-card-h: [gputiming2/13HDM.txt](/tests/raw/20260928T0000Z-5501a-card-h/gputiming2/13HDM.txt). | ||