mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-15 23:40:29 +02:00
Reschedule on IO completion, drop the reschedule in time queries
The time queries rescheduled since 2013, so that a game spinning on the clock would let a thread that a timing event had woken run (it fixed audio in Crimson Gem Saga and Where Is My Heart?). In 2014 audio and delay wakeups started rescheduling themselves, but IO completion never did, and a movie reader thread in Driver 76 was only getting in through the time queries. Now IO completion dispatches like any other wakeup. The PSP doesn't dispatch in a time query, and doing so let a thread that a terminate woke run too early. threads/threads/terminate now passes. Checked by booting 75 games against master: the same in all of them, with Asphalt Urban GT2 getting further in the same time. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
638da935ea
commit
436db85cf5
3 files changed
+6
-7
No files matched your search
@@ -74,7 +74,6 @@ int sceKernelGetSystemTime(u32 sysclockPtr)
|
||||
}
|
||||
VERBOSE_LOG(Log::sceKernel, "sceKernelGetSystemTime(out:%16llx)", t);
|
||||
hleEatCycles(265);
|
||||
hleReSchedule("system time");
|
||||
return hleNoLog(0);
|
||||
}
|
||||
|
||||
@@ -87,7 +86,6 @@ u32 sceKernelGetSystemTimeLow()
|
||||
if (PSP_CoreParameter().compat.flags().KernelGetSystemTimeLowEatMoreCycles) {
|
||||
hleEatCycles(70000);
|
||||
}
|
||||
hleReSchedule("system time");
|
||||
return hleNoLog((u32)t);
|
||||
}
|
||||
|
||||
@@ -96,7 +94,6 @@ u64 sceKernelGetSystemTimeWide()
|
||||
u64 t = CoreTiming::GetGlobalTimeUsScaled();
|
||||
VERBOSE_LOG(Log::sceKernel,"%i=sceKernelGetSystemTimeWide()",(u32)t);
|
||||
hleEatCycles(250);
|
||||
hleReSchedule("system time");
|
||||
return hleNoLog(t);
|
||||
}
|
||||
|
||||
@@ -153,7 +150,6 @@ u32 sceKernelLibcClock()
|
||||
{
|
||||
u32 retVal = (u32) CoreTiming::GetGlobalTimeUs();
|
||||
hleEatCycles(330);
|
||||
hleReSchedule("libc clock");
|
||||
return hleLogDebug(Log::sceKernel, retVal);
|
||||
}
|
||||
|
||||
@@ -169,7 +165,6 @@ u32 sceKernelLibcTime(u32 outPtr)
|
||||
else if (outPtr != 0)
|
||||
return 0;
|
||||
|
||||
hleReSchedule("libc time");
|
||||
return hleLogDebug(Log::sceKernel, t);
|
||||
}
|
||||
|
||||
@@ -185,7 +180,6 @@ u32 sceKernelLibcGettimeofday(u32 timeAddr, u32 tzAddr)
|
||||
DEBUG_LOG(Log::sceKernel,"sceKernelLibcGettimeofday(%08x, %08x)", timeAddr, tzAddr);
|
||||
hleEatCycles(1885);
|
||||
|
||||
hleReSchedule("libc timeofday");
|
||||
return hleNoLog(0);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user