1
0
Fork 0
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:
Dragorn421 2022-10-29 22:44:27 +02:00 committed by GitHub
parent c0a0688dc5
commit 7453709cc1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 148 additions and 88 deletions

View file

@ -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);