Replies: 1 comment 3 replies
-
|
That's 2.24ms vs 2.17ms. Can you compare with the F1 profiler and check the average FPS instead? |
Beta Was this translation helpful? Give feedback.
3 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Just a random idea, if games typically follow the PPC ABI, why not passing function parameters in x64 registers, because even
PPCContextshould always be cached, read/write CPU registers should still be faster.So I tried this:
XenonRecomp.diff
UnleashedRecomp.diff
Basically I'm using System V AMD64 ABI (even on Windows) to pass 6 (
ctx,baseand 4 PPC GP argument registers) and 2 PPC GP return value registers in x64 registers. The remaining 4 PPC GP argument registers are still inctx.This generates 4 more
movinstructions to prepare the arguments for eachcall, but thesemovs should do nothing thanks to register renaming.The result is a 4.9% increase in file size (75,298,304 bytes to 79,029,760 bytes), and around 3.3% increase in performance (445FPS to 460FPS, lowest graphic settings, Windows 11, AMD 5600X CPU and 7900 GRE GPU).
Maybe reducing the number of arguments passed in registers to 2 or 3 will reduce the file size back down without affecting performance too much, because most function don't have that many of parameters.
Beta Was this translation helpful? Give feedback.
All reactions