A lighter render thread: cached vertices are served with less checking work
Most of what the game draws reuses vertices the port has already converted for the GPU. Serving those from the cache still cost the render thread a lot of bookkeeping per draw. Two changes cut that:
- A draw whose exact vertex range is already cached now uses it straight away, without first counting its indices.
- A cached range is now proven unchanged once per stretch of commands instead of once per draw: in a typical frame about two thirds of these checks were repeats of a check made moments earlier. The check runs again after anything that could change memory (a CPU or SPU sync point, a copy, a jump in the command stream).
The picture is the same: in testing, 2.5 million served draws were compared with a fresh conversion, with no difference.
Measured in the first big fight (the gate), frame time:
| CPU threads | v0.1.33 | Now |
|---|---|---|
| 4 | 28.5 ms | 28.1 ms (+2%) |
| 6 | 21.1 ms | 20.5 ms (+4%) |
Press Update now in the launcher, then Build/Play. Or download inFamous2Recomp-v0.1.34-windows.zip / inFamous2Launcher.exe below.
If you see stretched or flickering geometry anywhere, please send a Save report from the launcher with a note of where it was.