Include memory used when rendering performance

This commit is contained in:
James Lambert 2023-11-29 19:43:00 -07:00
parent 09ca3b5385
commit 888dd96190
3 changed files with 16 additions and 2 deletions

View file

@ -86,4 +86,11 @@ void renderStateInlineBranch(struct RenderState* renderState, Gfx* dl) {
while (_SHIFTR(dl->words.w0, 24, 8) != G_ENDDL) { while (_SHIFTR(dl->words.w0, 24, 8) != G_ENDDL) {
*renderState->dl++ = *dl++; *renderState->dl++ = *dl++;
} }
}
float renderStateMemoryUsage(struct RenderState* renderState) {
int dlCount = renderState->dl - renderState->glist;
int memoryChunkCount = &renderState->glist[MAX_DL_LENGTH + MAX_RENDER_STATE_MEMORY_CHUNKS] - renderState->currentMemoryChunk;
return (float)(dlCount + memoryChunkCount) / (MAX_DL_LENGTH + MAX_RENDER_STATE_MEMORY_CHUNKS);
} }

View file

@ -32,4 +32,6 @@ int renderStateMaxDLCount(struct RenderState* renderState);
void renderStateInlineBranch(struct RenderState* renderState, Gfx* dl); void renderStateInlineBranch(struct RenderState* renderState, Gfx* dl);
float renderStateMemoryUsage(struct RenderState* renderState);
#endif #endif

View file

@ -273,15 +273,20 @@ void sceneRenderPerformanceMetrics(struct Scene* scene, struct RenderState* rend
return; return;
} }
float memoryUsage = renderStateMemoryUsage(renderState);
gDPSetCycleType(renderState->dl++, G_CYC_1CYCLE); gDPSetCycleType(renderState->dl++, G_CYC_1CYCLE);
gDPSetFillColor(renderState->dl++, (GPACK_RGBA5551(0, 0, 0, 1) << 16 | GPACK_RGBA5551(0, 0, 0, 1))); gDPSetFillColor(renderState->dl++, (GPACK_RGBA5551(0, 0, 0, 1) << 16 | GPACK_RGBA5551(0, 0, 0, 1)));
gDPSetCombineMode(renderState->dl++, SOLID_COLOR, SOLID_COLOR); gDPSetCombineMode(renderState->dl++, SOLID_COLOR, SOLID_COLOR);
gDPSetEnvColor(renderState->dl++, 32, 32, 32, 255); gDPSetEnvColor(renderState->dl++, 32, 32, 32, 255);
gSPTextureRectangle(renderState->dl++, 32 << 2, 32 << 2, (32 + 256) << 2, (32 + 16) << 2, 0, 0, 0, 1, 1); gSPTextureRectangle(renderState->dl++, 32 << 2, 32 << 2, (32 + 256) << 2, (32 + 8) << 2, 0, 0, 0, 1, 1);
gSPTextureRectangle(renderState->dl++, 32 << 2, 44 << 2, (32 + 256) << 2, (44 + 8) << 2, 0, 0, 0, 1, 1);
gDPPipeSync(renderState->dl++); gDPPipeSync(renderState->dl++);
gDPSetEnvColor(renderState->dl++, 32, 255, 32, 255); gDPSetEnvColor(renderState->dl++, 32, 255, 32, 255);
gSPTextureRectangle(renderState->dl++, 33 << 2, 33 << 2, (32 + 254 * scene->cpuTime / scene->lastFrameTime) << 2, (32 + 14) << 2, 0, 0, 0, 1, 1); gSPTextureRectangle(renderState->dl++, 33 << 2, 33 << 2, (32 + 254 * scene->cpuTime / scene->lastFrameTime) << 2, (32 + 6) << 2, 0, 0, 0, 1, 1);
gSPTextureRectangle(renderState->dl++, 33 << 2, 45 << 2, (int)(32 + 254 * memoryUsage * 4.0f), (44 + 6) << 2, 0, 0, 0, 1, 1);
gDPPipeSync(renderState->dl++); gDPPipeSync(renderState->dl++);
} }
LookAt gLookAt = gdSPDefLookAt(127, 0, 0, 0, 127, 0); LookAt gLookAt = gdSPDefLookAt(127, 0, 0, 0, 127, 0);