Age | Commit message (Collapse) | Author |
|
|
|
Adds detection of additional CPU flags to cpu_detect and additions to telemetry output.
This is not exhaustive but guided by features that [dynarmic utilizes](https://github.com/merryhime/dynarmic/blob/bcfe377aaa5138af740e90af5be7a7dff7b62a52/src/dynarmic/backend/x64/host_feature.h#L12-L33) as well as features that are currently utilized but not reported to telemetry(invariant_tsc). This is intended to guide future optimizations.
AVX512 in particular is broken up into its individual subsets and some other processor features such as [sha](https://en.wikipedia.org/wiki/Intel_SHA_extensions) and [gfni](https://en.wikipedia.org/wiki/AVX-512#GFNI) are added to have some forward-facing data-points.
What used to be a single `CPU_Extension_x64_AVX512` telemetry field
is also broken up into individual `CPU_Extension_x64_AVX512{F,VL,CD,...}` fields.
|
|
Restores compatibility with MSVC's `__cpuid` intrinsic.
|
|
|
|
Set the zero-enum value to Unknown
Move the Manufacterer enum into the CPUCaps structure namespace
Add "ParseManufacturer" utility-function
Fix cpu/brand string buffer sizes(!)
|
|
Update some uses of `int` into some more explicitly sized types as well
|
|
|
|
As this structure gets more explicit, bools can be bitfields and
small enums can use smaller types for their span of values.
|
|
|
|
This allows us to eliminate any static constructors that would have been
emitted due to the function not being constexpr.
|
|
We currently do not make use of these fields, remove them for now.
|
|
In my testing, waiting for 200ms provided the same level of precision as the previous implementation when estimating the RDTSC frequency.
This significantly improves the yuzu executable launch times since we reduced the wait time from 3 seconds to 200 milliseconds.
|
|
On some OSes, high_resolution_clock is an alias to system_clock and is not monotonic in nature. Replace this with steady_clock.
|
|
|
|
|
|
|
|
|
|
Makes for less reading.
|
|
|
|
Moves the audio code closer to enabling warnings as errors in general.
|
|
Cleans up common so that we can enable warnings as errors.
|
|
From -fsanitize=address, this code wasn't calling the proper destructor.
Adding virtual destructors for each inherited class and the base class
fixes this bug.
While we are at it, mark the functions as final.
|
|
I made a request on the Xbyak issue tracker to allow some constructors
to be constexpr in order to avoid static constructors from needing to
execute for some of our register constants.
This request was implemented, so this updates Xbyak so that we can make
use of it.
|
|
|
|
|
|
|
|
|
|
Implement SpinLocks, Fibers and a Host Timer
|
|
|
|
|
|
|
|
ABI_CalculateFrameSize
|
|
|
|
|
|
Pushing GPRs twice.
|
|
|
|
The information is duplicated in the brand string and the telemetry field is unused
|
|
Xbyak is currently entirely unused. Rather than carting it along, remove
it and get rid of a dependency. If it's ever needed in the future, then
it can be re-added (and likely be more up to date at that point in
time).
|
|
|
|
Avoids potential One Definition Rule violations when these are used in
the future.
|
|
|
|
where applicable
Uses the C++17 inline variable variants
|
|
|
|
|
|
|
|
|
|
These are not used any more since we moved shader JIT to xbyak.
|
|
|
|
|
|
In file included from src/common/x64/cpu_detect.cpp:16:
/usr/include/machine/cpufunc.h:66:17: error: unknown type name 'u_int'
static __inline u_int
^
/usr/include/machine/cpufunc.h:67:6: error: unknown type name 'u_int'
bsfl(u_int mask)
^
/usr/include/machine/cpufunc.h:69:2: error: unknown type name 'u_int'
u_int result;
^
/usr/include/machine/cpufunc.h:75:17: error: unknown type name 'u_long'; did you mean 'long'?
static __inline u_long
^
/usr/include/machine/cpufunc.h:76:6: error: unknown type name 'u_long'; did you mean 'long'?
bsfq(u_long mask)
^
/usr/include/machine/cpufunc.h:78:2: error: use of undeclared identifier 'u_long'; did you mean
'long'?
u_long result;
^
[...]
|