psx.wiki

GPU Polyline Over DMA

Sends polylines with missing or misplaced end words through DMA2 in list mode and records what the GPU draws and where DMA stops.

GPU Polyline Over DMA
MachineSCPH-5501
ProgramSXPRING and SXPRING2

Overview

A polyline command ends at the end word 55555555h. The probes send polylines through DMA2 in list mode with that word missing, misplaced or in a colour slot. An 8 x 4 tile follows in a later node. Each case reports which points were drawn, whether two test pixels at (51,30) and (58,30) and the tile were drawn, and GPUSTAT, CHCR and MADR when DMA hung.1

The flat polyline is GP0(48h) with 18 white points. Point i has x equal to i. Its y is 2 for even i and 10 for odd i. SXPRING runs cases 1 and 2, and SXPRING2 runs all four.1 The GP0 drawing commands page describes the command and the DMA page describes list mode.

Results

Table 1: Polyline cases
Case Node contents Points drawn Tile drawn DMA
1 20 words; word 20 is a vertex in place of the end word; next node 55555555h 0, 1 and 3 to 17 No Hung at node 2
2 20 words; word 20 is 55555555h 0 and 1 No Hung at the tile node
3 GP0(48h) with 2 points and no end word; next node 55555555h 0 and 1 No Hung at node 2
4 Gouraud GP0(58h) with 55555555h in two colour slots 0 to 2 Yes Completed

In case 1 point 2 was not drawn, and both test pixels (51,30) and (58,30) were lit.21

A flat polyline node that ends with no end word leaves GPUSTAT bits 25 to 28 at 0, and DMA2 waits at the next node. GPUSTAT read 40802400h in every hung case.1 In a Gouraud polyline, 55555555h in a colour slot is taken as a colour and does not end the line, so case 4 drew its three points and the tile.1

Runs

Raw output: SXPRING.txt

SXPRING.txt:

SXDEV I_MASK at init 3C040100
SXPRING start
SXPRING 1 mask 0003FFFB p51_30 1 p58_30 1 tile 0 sync -1 hangs 1 stat 40802400 chcr 01000401 madr 000124E0 node1 000124E8 node2 000124E0 tilep 000124D0
SXPRING 2 mask 00000003 p51_30 0 p58_30 0 tile 0 sync -1 hangs 1 stat 40802400 chcr 01000401 madr 000124D0 node1 000124E8 node2 000124E0 tilep 000124D0
SXPRING END

Raw output: SXPRING2.txt

SXPRING2.txt:

SXDEV I_MASK at init AC400100
SXPRING2 start
SXPRING2 1 mask 0003FFFB p51_30 1 p58_30 1 tile 0 sync -1 hangs 1 stat 40802400 chcr 01000401 madr 000125B0 node1 000125B8 node2 000125B0 tilep 00012570
SXPRING2 2 mask 00000003 p51_30 0 p58_30 0 tile 0 sync -1 hangs 1 stat 40802400 chcr 01000401 madr 00012570 node1 000125B8 node2 000125B0 tilep 00012570
SXPRING2 3 mask 00000003 p51_30 0 p58_30 0 tile 0 sync -1 hangs 1 stat 40802400 chcr 01000401 madr 000125B0 node1 000125A0 node2 000125B0 tilep 00012570
SXPRING2 4 mask 00000007 p51_30 0 p58_30 0 tile 1 sync 0 hangs 0 stat 40802400 chcr 01000401 madr 000125B0 node1 00012580 node2 000125B0 tilep 00012570
SXPRING2 END

References


  1. ^ a b c d e Hardware test run 20261015T1600Z-5501a-link on the SCPH-5501: SXPRING2.txt.

  2. ^ Hardware test run 20261015T1437Z-5501a-link on the SCPH-5501: SXPRING.txt.

Categories: Hardware tests