[PATCH v2 1/5] winevulkan: Support prefixing function parameters.
Paul Gofman
pgofman at codeweavers.com
Fri Dec 10 08:43:26 CST 2021
On 12/10/21 17:36, Rémi Bernon wrote:
>
> Well as far as I could see, in all the measurements I've made for a
> long while xsavec64 / xrstor64 were the highest hitters, and something
> like 10% to 30% CPU time spent on these two instructions.
>
> I don't know if that should be part of the "optimized vast majority of
> cases", but it's the same with Proton or with current upstream Wine.
> In any case it's way worse and nowhere near the overhead we had a year
> ago with SSE XMM register spilling from the ABI transitions generated
> by the compiler.
It is strange. Unlike the current Proton, xrstor64 should not appear at
all with upstream Wine (unless the app is setting the context for
threads constantly). Are you sure that is the case with upstream? In
that case maybe there is some genuine bug or easy optimization
opportunity involved.
Then, for xsavec64, it is doing saves in one instruction which otherwise
split in many with compiler generated registers saves. Can it be it
affects its place in perf top? Overall I don't think perf can show
anything meaningful on such a fine measurement level due to sampling
measurements specifics and CPU instruction flow specifics. A good and
simple way would be to measure the time over a large amount of calls
with rdtsc with and without xsavec, in the real game by instrumenting
the syscall dispatcher with that measurement (fwiw I have such an
instrumentation for relay stubs locally but not for syscall dispatcher atm).
More information about the wine-devel
mailing list