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
|
LCDEFS += -DPORTAL64_WITH_DEBUGGER
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(PORTAL64_WITH_RSP_PROFILER),1)
|
||||||
|
LCDEFS += -DPORTAL64_WITH_RSP_PROFILER
|
||||||
|
endif
|
||||||
|
|
||||||
BASE_TARGET_NAME = build/portal
|
BASE_TARGET_NAME = build/portal
|
||||||
|
|
||||||
LD_SCRIPT = portal.ld
|
LD_SCRIPT = portal.ld
|
||||||
|
@ -536,7 +540,7 @@ CODEOBJECTS_NO_DEBUG = $(CODEOBJECTS)
|
||||||
DATA_OBJECTS = build/assets/materials/images_mat.o
|
DATA_OBJECTS = build/assets/materials/images_mat.o
|
||||||
|
|
||||||
ifeq ($(PORTAL64_WITH_DEBUGGER),1)
|
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
|
endif
|
||||||
|
|
||||||
$(CODESEGMENT)_no_debug.o: $(CODEOBJECTS_NO_DEBUG)
|
$(CODESEGMENT)_no_debug.o: $(CODEOBJECTS_NO_DEBUG)
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include "../graphics/graphics.h"
|
||||||
|
#include "../util/memory.h"
|
||||||
|
|
||||||
#define VIDEO_MSG 666
|
#define VIDEO_MSG 666
|
||||||
#define RSP_DONE_MSG 667
|
#define RSP_DONE_MSG 667
|
||||||
|
@ -49,7 +51,7 @@ void printDisplayList(Gfx* dl, int depth, int* segments) {
|
||||||
if (command == G_DL) {
|
if (command == G_DL) {
|
||||||
int address = dl->words.w1;
|
int address = dl->words.w1;
|
||||||
int segment = _SHIFTR(address, 24, 4);
|
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) {
|
if (command == G_MOVEWORD) {
|
||||||
|
@ -71,7 +73,7 @@ void printDisplayList(Gfx* dl, int depth, int* segments) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void profileTask(OSSched* scheduler, OSThread* currentThread, OSTask* task) {
|
void profileTask(OSSched* scheduler, OSThread* currentThread, OSTask* task, u16* framebuffer) {
|
||||||
// block scheduler thread
|
// block scheduler thread
|
||||||
osSetThreadPri(currentThread, RSP_PROFILE_PRIORITY);
|
osSetThreadPri(currentThread, RSP_PROFILE_PRIORITY);
|
||||||
|
|
||||||
|
@ -86,6 +88,8 @@ void profileTask(OSSched* scheduler, OSThread* currentThread, OSTask* task) {
|
||||||
// wait for DP to be available
|
// wait for DP to be available
|
||||||
while (IO_READ(DPC_STATUS_REG) & (DPC_STATUS_DMA_BUSY | DPC_STATUS_END_VALID | DPC_STATUS_START_VALID));
|
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;
|
OSMesgQueue messageQueue;
|
||||||
OSMesg messages[4];
|
OSMesg messages[4];
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#include <ultra64.h>
|
#include <ultra64.h>
|
||||||
#include <sched.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 profileMapAddress(void* ramAddress, const char* name);
|
||||||
void profileClearAddressMap();
|
void profileClearAddressMap();
|
||||||
|
|
||||||
|
|
|
@ -333,8 +333,7 @@ static void gameProc(void* arg) {
|
||||||
#if PORTAL64_WITH_RSP_PROFILER
|
#if PORTAL64_WITH_RSP_PROFILER
|
||||||
if (controllerGetButtonDown(2, START_BUTTON)) {
|
if (controllerGetButtonDown(2, START_BUTTON)) {
|
||||||
struct GraphicsTask* task = &gGraphicsTasks[drawBufferIndex];
|
struct GraphicsTask* task = &gGraphicsTasks[drawBufferIndex];
|
||||||
zeroMemory(task->framebuffer, sizeof(u16) * SCREEN_WD * SCREEN_HT);
|
profileTask(&scheduler, &gameThread, &task->task.list, task->framebuffer);
|
||||||
profileTask(&scheduler, &gameThread, &task->task.list);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
timeUpdateDelta();
|
timeUpdateDelta();
|
||||||
|
|
Loading…
Reference in a new issue