Fix some profiler issues
This commit is contained in:
parent
d775df6b22
commit
39a1ec576d
6
Makefile
6
Makefile
|
@ -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)
|
||||
|
|
|
@ -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];
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in a new issue