mirror of
https://github.com/zeldaret/oot.git
synced 2025-07-12 10:54:44 +00:00
Doc speed_meter timers and misc. low-ish level stuff (#1364)
* Misc docs (somewhat lower level) * Run formatter * Simplify comment * `a = a +` -> `a +=` with pad removal Co-authored-by: Roman971 <32455037+Roman971@users.noreply.github.com> * `isPreNMIStateRunning` -> `inPreNMIState` * line breaks Co-authored-by: Roman971 <32455037+Roman971@users.noreply.github.com> Co-authored-by: fig02 <fig02srl@gmail.com>
This commit is contained in:
parent
c0a0688dc5
commit
7453709cc1
8 changed files with 148 additions and 88 deletions
|
@ -47,10 +47,10 @@
|
|||
|
||||
vs32 sLogScheduler = false;
|
||||
|
||||
OSTime sRSPGFXStartTime;
|
||||
OSTime sRSPAudioStartTime;
|
||||
OSTime sRSPOtherStartTime;
|
||||
OSTime sRDPStartTime;
|
||||
OSTime sRSPGfxTimeStart;
|
||||
OSTime sRSPAudioTimeStart;
|
||||
OSTime sRSPOtherTimeStart;
|
||||
OSTime sRDPTimeStart;
|
||||
|
||||
/**
|
||||
* Set the current framebuffer to the swapbuffer pointed to by the provided cfb
|
||||
|
@ -120,20 +120,20 @@ void Sched_HandlePreNMI(Scheduler* sc) {
|
|||
if (sc->curRSPTask->framebuffer == NULL) {
|
||||
// audio and jpeg tasks end up in here
|
||||
LOG_TIME("(((u64)(now - audio_rsp_start_time)*(1000000LL/15625LL))/((62500000LL*3/4)/15625LL))",
|
||||
OS_CYCLES_TO_USEC(now - sRSPAudioStartTime), "../sched.c", 421);
|
||||
} else if (OS_CYCLES_TO_USEC(now - sRSPGFXStartTime) > 1000000 ||
|
||||
OS_CYCLES_TO_USEC(now - sRDPStartTime) > 1000000) {
|
||||
OS_CYCLES_TO_USEC(now - sRSPAudioTimeStart), "../sched.c", 421);
|
||||
} else if (OS_CYCLES_TO_USEC(now - sRSPGfxTimeStart) > 1000000 ||
|
||||
OS_CYCLES_TO_USEC(now - sRDPTimeStart) > 1000000) {
|
||||
// More than 1 second since the RSP or RDP tasks began, halt the RSP and RDP
|
||||
RcpUtils_Reset();
|
||||
// Manually send RSP/RDP done messages to the scheduler interrupt queue if appropriate
|
||||
if (sc->curRSPTask != NULL) {
|
||||
LOG_TIME("(((u64)(now - graph_rsp_start_time)*(1000000LL/15625LL))/((62500000LL*3/4)/15625LL))",
|
||||
OS_CYCLES_TO_USEC(now - sRSPGFXStartTime), "../sched.c", 427);
|
||||
OS_CYCLES_TO_USEC(now - sRSPGfxTimeStart), "../sched.c", 427);
|
||||
osSendMesg(&sc->interruptQueue, (OSMesg)RSP_DONE_MSG, OS_MESG_NOBLOCK);
|
||||
}
|
||||
if (sc->curRDPTask != NULL) {
|
||||
LOG_TIME("(((u64)(now - rdp_start_time)*(1000000LL/15625LL))/((62500000LL*3/4)/15625LL))",
|
||||
OS_CYCLES_TO_USEC(now - sRDPStartTime), "../sched.c", 431);
|
||||
OS_CYCLES_TO_USEC(now - sRDPTimeStart), "../sched.c", 431);
|
||||
osSendMesg(&sc->interruptQueue, (OSMesg)RDP_DONE_MSG, OS_MESG_NOBLOCK);
|
||||
}
|
||||
}
|
||||
|
@ -390,11 +390,11 @@ void Sched_RunTask(Scheduler* sc, OSScTask* spTask, OSScTask* dpTask) {
|
|||
|
||||
// Begin profiling timers
|
||||
if (spTask->list.t.type == M_AUDTASK) {
|
||||
sRSPAudioStartTime = osGetTime();
|
||||
sRSPAudioTimeStart = osGetTime();
|
||||
} else if (spTask->list.t.type == M_GFXTASK) {
|
||||
sRSPGFXStartTime = osGetTime();
|
||||
sRSPGfxTimeStart = osGetTime();
|
||||
} else {
|
||||
sRSPOtherStartTime = osGetTime();
|
||||
sRSPOtherTimeStart = osGetTime();
|
||||
}
|
||||
|
||||
// Run RSP
|
||||
|
@ -412,7 +412,7 @@ void Sched_RunTask(Scheduler* sc, OSScTask* spTask, OSScTask* dpTask) {
|
|||
// If the task also uses the RDP, set current running RDP task
|
||||
if (spTask == dpTask && sc->curRDPTask == NULL) {
|
||||
sc->curRDPTask = dpTask;
|
||||
sRDPStartTime = sRSPGFXStartTime;
|
||||
sRDPTimeStart = sRSPGfxTimeStart;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -508,11 +508,11 @@ void Sched_HandleRSPDone(Scheduler* sc) {
|
|||
|
||||
// Task profiling
|
||||
if (sc->curRSPTask->list.t.type == M_AUDTASK) {
|
||||
gRSPAudioTotalTime += osGetTime() - sRSPAudioStartTime;
|
||||
gRSPAudioTimeAcc += osGetTime() - sRSPAudioTimeStart;
|
||||
} else if (sc->curRSPTask->list.t.type == M_GFXTASK) {
|
||||
gRSPGFXTotalTime += osGetTime() - sRSPGFXStartTime;
|
||||
gRSPGfxTimeAcc += osGetTime() - sRSPGfxTimeStart;
|
||||
} else {
|
||||
gRSPOtherTotalTime += osGetTime() - sRSPOtherStartTime;
|
||||
gRSPOtherTimeAcc += osGetTime() - sRSPOtherTimeStart;
|
||||
}
|
||||
|
||||
// Clear current RSP task
|
||||
|
@ -564,7 +564,7 @@ void Sched_HandleRDPDone(Scheduler* sc) {
|
|||
s32 state;
|
||||
|
||||
// Task profiling
|
||||
gRDPTotalTime = osGetTime() - sRDPStartTime;
|
||||
gRDPTimeAcc = osGetTime() - sRDPTimeStart;
|
||||
|
||||
// Sanity check
|
||||
ASSERT(sc->curRDPTask != NULL, "sc->curRDPTask", "../sched.c", 878);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue