Scheduler and file I/O fixes from upstream Xenia Edge: file reads and writes finish the way they do on the console, and kernel timers and DPCs behave like the console's.
- Reads take about as long as they would on real storage, which some games need in order to load properly. A few games can take some seconds longer to start.
Full Changelog: XenDroid-v144-a107faa9...XenDroid-v146-d6dfac08
What's new
🛠️ Fixed
- Asynchronous reads no longer hold up a game's render thread, which upstream reports fixes frame drops during races in Project Gotham Racing 3.
- Opening, querying and renaming files no longer stalls the other game threads on that CPU.
- Cancelling a file request no longer lets it write into a buffer the game has reused.
Other changes
- Botão Sponsor do GitHub (#112)
🇧🇷 Em português
Correções do scheduler e da E/S de arquivo do Xenia Edge: leituras e escritas de arquivo terminam como no console, e os timers e DPCs do kernel se comportam como os do console.
- As leituras levam um tempo parecido com o de um disco real, o que alguns jogos precisam para carregar direito. Alguns jogos podem levar alguns segundos a mais para abrir.
🛠️ Corrigido
- Leituras assíncronas não seguram mais a thread de render do jogo, o que, segundo o Xenia Edge, corrige quedas de quadros durante as corridas em Project Gotham Racing 3.
- Abrir, consultar e renomear arquivos não para mais as outras threads do jogo naquela CPU.
- Cancelar um pedido de arquivo não deixa mais que ele escreva num buffer que o jogo já reutilizou.
Outras mudanças
- Botão Sponsor do GitHub (#112)
📜 Every change since build 144 · 2 pull requests, 30 commits
- #112 Botão Sponsor do GitHub · @phforner0
- Show the sponsor button on GitHub [skip ci] ·
d5e19a88
- Show the sponsor button on GitHub [skip ci] ·
- #110 Upstream: scheduler de fibras e E/S de arquivo · @phforner0
- [Kernel] Drop the unreachable sole-waiter wake path ·
4e108295 - [Kernel] Boost a thread woken by completed file I/O ·
ce32dca5 - [Kernel] Report guest scheduler ready-wait and background counters ·
08feaa6e - [Kernel] Add an opt-in guest scheduler starvation hack ·
accda1e0 - [Kernel/VFS] Guest scheduler pool I/O on concurrency safe devices ·
39803b97 - [Kernel] Guest scheduler to wake only waiting CPU ·
1830fbfd - [Kernel] Complete async NtReadFile on the I/O pool ·
0bdc88e9 - [Kernel] Wait for synchronous file I/O on a dispatcher object ·
2250ebd8 - [Kernel/VFS] Model storage request timing ·
3b5a4d17 - [VFS] Charge a storage seek only when a read does not continue ·
73d78ea4 - [Kernel] Boost cooperative waiters only when they blocked ·
9893f8d1 - [Kernel] Fix async NtReadFile regressions ·
80543975 - [Kernel] Make the file wait event manual reset ·
fe5fe60b - [Kernel] Complete posted NtReadFile requests like NT ·
3ebf6d52 - [Kernel] Implement KeSetTimerEx and KeCancelTimer ·
52f4a1ee - [Kernel] Run DPCs queued by a DPC after it returns ·
9a9ddced - [Kernel] Run a DPC targeted at another processor on that processor ·
1cfbb49d - [Kernel] Defer guest thread switches at DISPATCH_LEVEL ·
1af63edf - [Kernel] Run file operations off the dispatch thread ·
b6c14317 - [Kernel] Keep RunBlockingIo's failed-poll park from ending on terminate ·
5cdef0ae - [Kernel] Pend async reads by file system and buffering ·
ed67bed3 - [Kernel] Post completion packets only for requests that ask for one ·
2fbe2509 - [Kernel] Complete async writes by file system and buffering ·
2ddd41c0 - [Kernel] Cancel queued file requests in NtCancelIoFile ·
4e4f9490 - [Kernel] Validate file offsets and scatter handles ·
792f3516 - Kernel: a pending file request no longer keeps its own file alive ·
f9e70412 - Kernel: report storage waits, file requests, I/O parks and thread placement ·
39fe902e
- [Kernel] Drop the unreachable sole-waiter wake path ·
Built by Xendroid+ #146 from d6dfac08, signed with the release key.
| File | Size | SHA-256 |
|---|---|---|
XenDroid_Release_d6dfac08.apk
| 40.6 MiB | 8285b792822863e8ea2a00082614969349d6fba30a6ff7b0423119557d3e6764
|