Function
nuGfxTaskStart
Syntax
void nuGfxTaskStart(Gfx *gfxList_ptr, u32 gfxListSize, u32 ucode, u32 flag)
Arguments
*gfxList_ptr pointer to the display list buffer
gfxListSize display list size
ucode microcode to be used
flag specifies flags for task manager and flags to be handed over to tasks
Flags specified for the task manager:
NU_SC_SWAPBUFFER Switching of the frame buffer
NU_SC_NOSWAPBUFFER No switching of the frame buffer
NU_SC_NORDP Process only for RSP
NU_SC_UCODE_XBUS XBUS microcode
Flags handed over to tasks (or when specifying multiple flags)
NU_SC_TASK_YIELDED
NU_SC_TASK_DP_WAIT
NU_SC_TASK_LODABLE
NU_SC_TASK_SP_ONLY
Return Value
None
Description
Starts the graphics task
When this function is called, the graphics task structure is created and the task message is sent to the graphics task thread. The ucode is the microcode to be used.
When the microcode registered by the nuGfxInit function is used, the following macros are specified.
Macro Microcode
NU_GFX_UCODE_F3DEX gspF3DEX.fifo
NU_GFX_UCODE_F3DEX_NON gspF3DEX.NoN.fifo
NU_GFX_UCODE_F3DLX gspF3DLX.fifo
NU_GFX_UCODE_F3DLX_NON gspF3DLXNoN.fifo
NU_GFX_UCODE_F3DLX_REJ gspF3DLX.Rej.fifo
NU_GFX_UCODE_L3DLP_REJ gspL3DLP.Rej.fifo
NU_GFX_UCODE_S2DEX gspS2DEX.fifo
NU_GFX_UCODE_S2DEX_D gspS2DEX.fifo_d
When using a microcode registered by the nuGfxInitEX2 function or when F3DEX_GBI_2 is defined, specify one of the following macros.
Macro Microcode NU_GFX_UCODE_F3DEX2 gspF3DEX2.fifo NU_GFX_UCODE_F3DEX2_NON gspF3DEX2.NoN.fifo NU_GFX_UCODE_F3DEX2_REJ gspF3DEX2.Rej.fifo NU_GFX_UCODE_F3DLX2_REJ gspF3DLX2.ReJ NU_GFX_UCODE_L3DEX2 gspL3DEX2.fifo NU_GFX_UCODE_S2DEX2 gspS2DEX2.fifo
When the microcode table is registered using the nuGfxSetUcode function, the table number is specified.
It is possible to specify whether or not the frame buffer is to be transferred to the VI when completing the task using the flag. The call back function which is registered by the nuGfxSwapCfbFuncSet function is executed when NU_SC_SWAPBUFFER is specified. Normally, as the nuGfxSwapCfb function is registered by the nuGfxInit function, the frame buffer will be displayed on the screen at the next retrace. Therefore, when the multiple graphics tasks are to be started against one frame buffer, specify NU_SC_SWAPBUFFER for the last task.
The call back function which is registered by the nuGfxTaskEndFuncSet function is executed when NU_SC_NOSWAPBUFFER is specified. Normally, nothing is registered.
NU_SC_NORDP is specified for microcode such as ZSort, which only uses the RSP. In this case, it does not wait for the completion of the RDP event. NU_SC_NORDP can be specified at the same time as NU_SC_NOSWAPBUFFER or NU_SC_SWAPBUFFER.
The flag which is to be handed over, when the graphics task has been executed, can be specified in the most significant 16 bits of the flag. Depending upon the type of microcode used and the microcode execution sequence, there are cases where flags are necessary. Normally, there is no need to specify flags when executing a task.
ExampleGfx gfxList[0x100]; /* display list buffer */ Gfx* gfxList_ptr; /* pointer to display list buffer */ gfxList_ptr = gfxList; gSPDisplayList(gfxList_ptr++, OS_K0_TO_PHYSICAL(rdpstateinit_dl)); gDPFullSync(gfxList_ptr++); gSPEndDisplayList(gfxList_ptr++); nuGfxTaskStart(gfxList, (s32)(gfxList_ptr - gfxList) * sizeof (Gfx), NU_GFX_UCODE_F3DEX , NU_SC_NOSWAPBUFFER);
See Also
nuGfxInit, nuGfxSetUcode, nuGfxSwapCfbFuncSet, nuGfxSwapCfb, and nuGfxTaskEndFuncSet
Revision History
2/1/99 Added text regarding F3DEX2. Added text regarding flag.