From 184fad06231d50eb1c250e5b8774cefef9cfcc32 Mon Sep 17 00:00:00 2001 From: fincs Date: Tue, 19 Jan 2016 22:32:55 +0100 Subject: [PATCH] Add C3D_GetCmdBufUsage --- include/c3d/base.h | 2 ++ source/base.c | 7 +++++++ source/context.h | 1 + 3 files changed, 10 insertions(+) diff --git a/include/c3d/base.h b/include/c3d/base.h index 5a33d8c..b6e5798 100644 --- a/include/c3d/base.h +++ b/include/c3d/base.h @@ -13,6 +13,8 @@ bool C3D_Init(size_t cmdBufSize); void C3D_FlushAsync(void); void C3D_Fini(void); +float C3D_GetCmdBufUsage(void); + void C3D_BindProgram(shaderProgram_s* program); void C3D_SetViewport(u32 x, u32 y, u32 w, u32 h); diff --git a/source/base.c b/source/base.c index 9d400f0..9db1a55 100644 --- a/source/base.c +++ b/source/base.c @@ -75,6 +75,7 @@ bool C3D_Init(size_t cmdBufSize) ctx->cmdBufSize = cmdBufSize/8; // Half of the size of the cmdbuf, in words ctx->cmdBuf = (u32*)linearAlloc(cmdBufSize); + ctx->cmdBufUsage = 0; if (!ctx->cmdBuf) return false; GPUCMD_SetBuffer(ctx->cmdBuf, ctx->cmdBufSize, 0); @@ -267,6 +268,7 @@ void C3Di_FinalizeFrame(u32** pBuf, u32* pSize) GPUCMD_Finalize(); GPUCMD_GetBuffer(pBuf, NULL, pSize); + ctx->cmdBufUsage = (float)(*pSize) / ctx->cmdBufSize; *pSize *= 4; ctx->flags ^= C3DiF_CmdBuffer; @@ -292,6 +294,11 @@ void C3D_FlushAsync(void) GX_ProcessCommandList(cmdBuf, cmdBufSize, 0x0); } +float C3D_GetCmdBufUsage(void) +{ + return C3Di_GetContext()->cmdBufUsage; +} + void C3D_Fini(void) { C3D_Context* ctx = C3Di_GetContext(); diff --git a/source/context.h b/source/context.h index d1270e2..97bc3b1 100644 --- a/source/context.h +++ b/source/context.h @@ -28,6 +28,7 @@ typedef struct { u32* cmdBuf; size_t cmdBufSize; + float cmdBufUsage; u32 flags; shaderProgram_s* program;