]> Chaos Git - corbenik/ctrulib.git/commitdiff
GPUCMD_FlushAndRun
authorsmea <smealum@gmail.com>
Mon, 3 Nov 2014 05:10:56 +0000 (21:10 -0800)
committersmea <smealum@gmail.com>
Mon, 3 Nov 2014 05:10:56 +0000 (21:10 -0800)
libctru/include/3ds/gpu/gpu.h
libctru/source/gpu/gpu.c

index 16f5b8f8cea0ff28bce3362a7c740da3a52dfeca..ef32e4653e4bc20ae6c6fd83e800e346b0e2d21e 100644 (file)
@@ -5,6 +5,7 @@ void GPU_Reset(u32* gxbuf, u32* gpuBuf, u32 gpuBufSize);
 
 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();
index 96ad76e67a86c482ef78d1340e99798287141ba8..8f1b7bc951e14968219ce1fa89f18863894a9ffa 100644 (file)
@@ -28,11 +28,20 @@ void GPUCMD_SetBuffer(u32* adr, u32 size, u32 offset)
 
 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;