Repository navigation
Gran Turismo 7 (PPSA01317) #4697
Replies: 6 comments 1 reply
Update: Garage car and World Map now render properlyBig visual jump today on the same local branch (still not stock main, still no races tried). Garage car view. The car used to show as a flat grey silhouette or go completely black a few seconds after entering the Garage. Three things were behind it:
Car interior. Interior shots were blown out to white by the same exposure problem; they now look normal. World Map: terrain, forests and lighting. Many of the game's pixel shaders were receiving blank interpolation data, so every triangle was shaded with a single colour: faceted terrain, flat mountains, faceted car paint, and alpha-tested foliage disappearing entirely (no forests). With that fixed, the World Map now matches a PS5 capture: smooth terrain, full forests, textured mountains and the sunset lighting. Also:
Next: a pull request for the interpolation fix (upstream main has the same issue), background shader pre-compiling to cut the pop-in, and performance. |
Update: Music Rally reaches a race and runs to the endFirst race on the same local branch (still not stock main). Path: title screen > Music Rally > first song > Start. What got it there:
Result: the race loads with HUD and Auto Drive, the song plays out, and it ends on the "TRY AGAIN" screen. Offline networking stays on throughout. Still wrong:
|
Update: faster menu loading (PR #2589 reworked)Not a visual change this time, so no screenshots. While the menu loads, the game asks for several hundred shaders in a row from its loading thread. The emulator used to compile each one right there, one after another, so nothing new appeared on screen for a while. #2589 hands those compiles to the background shader threads, so the loading thread can carry on. Earlier measurements on the same machine, from my local branch: the stretch with no new frames during menu load went from about 20 s to about 3 s, and the menu reached its normal frame rate roughly 10 s sooner. Today I reworked the PR after review:
The PR is waiting for another review. |
Update: race frame rate roughly doubled (write tracking)Not a visual change this time, so no screenshots. Before the GPU uses guest memory, the emulator asks Windows which pages the game's CPU has written since it last checked ( What I found today (local branch, still not stock main):
Result in the race (same song, the emulator's profiling on):
Why it still swings between 0.6 and 1.2 FPS. When the game frees memory or changes page protection early in the race (one to three times a second), the emulator rebuilds its table of GPU-visible guest memory, and every cached draw setup has to be rebuilt with it. In the slow runs that costs the draw recording thread 5–7 s of every 10 s. That's what I'm working on next. |
Update: race frame rate up again, and the menu is near 15 FPSSame local branch as before (still not stock main). Today was about finding where the emulator waits instead of works. What the measurements showed. In the Music Rally race the GPU was idle for a large part of every frame, and the emulator's own threads were mostly waiting too. Almost all GPU work goes through one global lock, which was held about 88% of the time. The thread that records the game's draws often waited for the GPU while holding it, so every other queue waited behind it. What changed (local branch):
Result, same race and song, profiling on, car standing at the start (so runs compare):
Playing it, profiling off:
Still wrong:
|
Update: garage ~17 FPS with the car fully painted, HDR output, and what limits the raceSame local branch as before (not stock main). This session continued from the previous update. Frame rate across the game (profiling off unless noted):
Gran.Turismo.7._.FPS_.17.65.11799.2026-10-14.01-19-45.mp4The garage gain mostly comes from the race work in the previous update: fairer GPU lock hand-off, draw preparation moved off the locked thread, a per-draw shader scan cached, fast-clear kernels recognised, and a warm shader cache. With those on, the car keeps its paint and detail. New: HDR output.
What limits the race. One async compute queue rebuilds the ray-tracing structures every frame: about 1,000 small dispatches per frame, each costing about 350 µs of emulator CPU time.
Things tried against it this session, measured in the race:
Main map profile, for anyone looking at the same scene:
Other findings:
Still wrong:
|






Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Current status (updated 2026-10-13)
Content version tested: 01.710.000
AnyPS5 commit: a local integration branch, not stock
main:mainat 6741e90 plus local driver and recompiler work. Most of it is not upstreamed (see the pull requests below).Code: the work-in-progress branch is shared on my fork at gjonn/AnyPS5 · ppsa01317-music-rally-wip. It is one run-tree snapshot, not split into upstreamable changes.
System tested: Windows 11 Pro (build 26220), NVIDIA GeForce RTX 5090 Laptop GPU (driver 616.92), MinGW GCC 15.2, Release build.
Furthest point: In race (Music Rally)
What is shown
Current blockers
refit_leaf_count == refit_leaf_index).Open pull requests
How it was run
--windows --to-intel.APS5_NET_OFFLINE=1. Without it, network retries add minutes to boot. The test runs also use the branch's opt-in speed settings (profiling/best-run.ps1on the fork branch).All reactions