void GPUCMD_SetBuffer(u32* adr, u32 size, u32 offset);
void GPUCMD_Run(u32* gxbuf);
+void GPUCMD_FlushAndRun(u32* gxbuf);
void GPUCMD_Add(u32 cmd, u32* param, u32 paramlength);
void GPUCMD_AddSingleParam(u32 cmd, u32 param);
void GPUCMD_Finalize();
void GPUCMD_Run(u32* gxbuf)
{
- //should wait for some event here
GX_SetCommandList_First(gxbuf, gpuCmdBuf, gpuCmdBufOffset*4, NULL, 0, NULL, 0);
GX_SetCommandList_Last(gxbuf, gpuCmdBuf, gpuCmdBufOffset*4, 0x0);
}
+extern u32 __linear_heap_size;
+extern u32* __linear_heap;
+
+void GPUCMD_FlushAndRun(u32* gxbuf)
+{
+ //take advantage of GX_SetCommandList_First to flush gsp heap
+ GX_SetCommandList_First(gxbuf, gpuCmdBuf, gpuCmdBufOffset*4, __linear_heap, __linear_heap_size, NULL, 0);
+ GX_SetCommandList_Last(gxbuf, gpuCmdBuf, gpuCmdBufOffset*4, 0x0);
+}
+
void GPUCMD_Add(u32 cmd, u32* param, u32 paramlength)
{
u32 zero=0x0;