Fix some profiler issues

This commit is contained in:
James Lambert 2023-12-12 20:35:00 -07:00
parent d775df6b22
commit 39a1ec576d
4 changed files with 13 additions and 6 deletions

View file

@ -24,6 +24,10 @@ ifeq ($(PORTAL64_WITH_DEBUGGER),1)
LCDEFS += -DPORTAL64_WITH_DEBUGGER
endif
ifeq ($(PORTAL64_WITH_RSP_PROFILER),1)
LCDEFS += -DPORTAL64_WITH_RSP_PROFILER
endif
BASE_TARGET_NAME = build/portal
LD_SCRIPT = portal.ld
@ -536,7 +540,7 @@ CODEOBJECTS_NO_DEBUG = $(CODEOBJECTS)
DATA_OBJECTS = build/assets/materials/images_mat.o
ifeq ($(PORTAL64_WITH_DEBUGGER),1)
CODEOBJECTS_NO_DEBUG += build/debugger/debugger_stub.o build/debugger/serial.o
CODEOBJECTS_NO_DEBUG += build/debugger/debugger_stub.o build/debugger/serial_stub.o
endif
$(CODESEGMENT)_no_debug.o: $(CODEOBJECTS_NO_DEBUG)

View file

@ -8,6 +8,8 @@
#endif
#include <string.h>
#include "../graphics/graphics.h"
#include "../util/memory.h"
#define VIDEO_MSG 666
#define RSP_DONE_MSG 667
@ -49,7 +51,7 @@ void printDisplayList(Gfx* dl, int depth, int* segments) {
if (command == G_DL) {
int address = dl->words.w1;
int segment = _SHIFTR(address, 24, 4);
printDisplayList((Gfx*)(segments[segment] + (address & 0xFFFFFF)), depth + 1, segments);
printDisplayList((Gfx*)PHYS_TO_K0((segments[segment] + (address & 0xFFFFFF))), depth + 1, segments);
}
if (command == G_MOVEWORD) {
@ -71,7 +73,7 @@ void printDisplayList(Gfx* dl, int depth, int* segments) {
#endif
}
void profileTask(OSSched* scheduler, OSThread* currentThread, OSTask* task) {
void profileTask(OSSched* scheduler, OSThread* currentThread, OSTask* task, u16* framebuffer) {
// block scheduler thread
osSetThreadPri(currentThread, RSP_PROFILE_PRIORITY);
@ -86,6 +88,8 @@ void profileTask(OSSched* scheduler, OSThread* currentThread, OSTask* task) {
// wait for DP to be available
while (IO_READ(DPC_STATUS_REG) & (DPC_STATUS_DMA_BUSY | DPC_STATUS_END_VALID | DPC_STATUS_START_VALID));
zeroMemory(framebuffer, sizeof(u16) * SCREEN_WD * SCREEN_HT);
OSMesgQueue messageQueue;
OSMesg messages[4];

View file

@ -4,7 +4,7 @@
#include <ultra64.h>
#include <sched.h>
void profileTask(OSSched* scheduler, OSThread* currentThread, OSTask* task);
void profileTask(OSSched* scheduler, OSThread* currentThread, OSTask* task, u16* framebuffer);
void profileMapAddress(void* ramAddress, const char* name);
void profileClearAddressMap();

View file

@ -333,8 +333,7 @@ static void gameProc(void* arg) {
#if PORTAL64_WITH_RSP_PROFILER
if (controllerGetButtonDown(2, START_BUTTON)) {
struct GraphicsTask* task = &gGraphicsTasks[drawBufferIndex];
zeroMemory(task->framebuffer, sizeof(u16) * SCREEN_WD * SCREEN_HT);
profileTask(&scheduler, &gameThread, &task->task.list);
profileTask(&scheduler, &gameThread, &task->task.list, task->framebuffer);
}
#endif
timeUpdateDelta();