25.2 RSP to RDP Command Passing

All types of RSP microcode generate commands for the RDP. The method used to pass the commands from the RSP to the RDP determines the suffix used to name the microcode object. In the "regular" method the commands are written to a buffer in DMEM, which can hold up to six RDP commands. If the buffer fills, the next time the RSP tries to write a command it will stall until there is space in the buffer. Microcode versions that use this type of command passing have no special suffix, just a .o appended to their name.

Alternatively, the RSP can write all the commands to a larger FIFO buffer in RDRAM. This helps to prevent the RSP from stalling when the RDP gets bound by processing large triangles. Microcode that uses this method has the .fifo.o suffix appended to its name.

When using the FIFO version of a microcode, the application must pass a pointer to a buffer to be used as the FIFO buffer, in the task output_buff field. The size of the FIFO buffer can be set in output_buff_size field. The buffer size should be above 1K byte so that FIFO can significantly increase its performance.

The microcode also provides another option for the RSP to write all of the RSP commands to an RDRAM buffer. In this case the application must start the RDP task separately with a call to osDpSetNextBuffer(). (This form of command passing is very useful for debugging in conjunction with the tool dlprint which can print display lists in a human readable form.) Microcode designed to use this method has the .dram.o suffix appended to its name.

Tasks using the .dram microcode need a pointer to a buffer in the output_buff field of the task structure, and a size in the output_buff_size. Because RSP commands usually expand when converted into RDP commands, this buffer needs to be larger than the size of the RSP display list.

UP