907507886d
(wall, native)_clock: Add GetGPUTick
...
Allows us to directly calculate the GPU tick without double conversion to and from the host clock tick.
2023-06-07 21:44:42 -04:00
8e56a84566
core_timing: Use CNTPCT as the guest CPU tick
...
Previously, we were mixing the raw CPU frequency and CNTFRQ.
The raw CPU frequency (1020 MHz) should've never been used as CNTPCT (whose frequency is CNTFRQ) is the only counter available.
2023-06-07 21:44:42 -04:00
e1bce50d8b
core_timing: Make use of MicroSleep for x64 CPUs
...
For CPUs that support tpause, this should result in significant CPU power savings over thread yield in this spin wait.
2023-03-27 17:45:22 -04:00
3053a62375
core: Promote CPU/GPU threads to time critical
...
And also demote Audren and CoreTiming to High thread priority.
2023-03-07 21:17:46 -05:00
bff1453282
core_timing: Use higher precision sleeps on Windows
...
The precision of sleep_for and wait_for is limited to 1-1.5ms on Windows.
Using SleepForOneTick() allows us to sleep for exactly one interval of the current timer resolution.
This allows us to take advantage of systems that have a timer resolution of 0.5ms to reduce CPU overhead in the event loop.
2023-03-05 02:36:31 -05:00
683019878f
remove static from pointer sized or smaller types for aesthetics, change constexpr static to static constexpr for consistency
...
Signed-off-by: arades79 <scravers@protonmail.com >
2023-02-14 12:35:39 -05:00
45e13b03f3
add static lifetime to constexpr values to force compile time evaluation where possible
...
Signed-off-by: arades79 <scravers@protonmail.com >
2023-02-14 12:33:11 -05:00
0953cdd271
timing: wait for completion on unregister
2023-01-14 15:48:01 -05:00
638fa6170a
core: core_timing: Re-initialize if single/multicore state changes.
2022-10-18 19:13:35 -07:00
a4d11f4427
core: Partially persist emulation state across game boots.
2022-10-18 19:13:35 -07:00
9632434243
core_timing: use high-precision sleeps on non-Windows targets
2022-10-08 18:27:40 -04:00
35d3e7db2a
common: remove "yuzu:" prefix from thread names
2022-10-03 18:43:56 -04:00
9c32f29af1
Merge pull request #8650 from Kelebek1/vsync
...
[Coretiming/NVNFlinger] Improve multi-core vsync timing, and core timing accuracy
2022-09-17 11:10:54 -07:00
e93e898df5
Remove pause callbacks from coretiming
2022-09-13 13:20:35 +01:00
606cdb17d3
core_timing: Sleep in discrete intervals, yield during spin
2022-08-02 01:01:54 -04:00
658e1ee426
Add missing looping event schedule signal
2022-08-02 01:01:54 -04:00
83a24ad638
Make coretiming waiting more accurate
2022-08-02 01:01:54 -04:00
2e46110379
Revert Coretiming PRs 8531 and 7454 ( #8591 )
2022-07-27 19:47:06 -04:00
240650f6a6
Rework CoreTiming
2022-07-10 06:59:40 +01:00
d3cb9201f1
Core timing: use only one thread.
2022-07-02 23:02:16 +02:00
3196d957b0
Adress Feedback.
2022-06-30 10:18:56 +02:00
86ccce3721
Address feedback.
2022-06-28 01:19:30 +02:00
38e4a144a1
Core: Protect each event from race conditions within it.
2022-06-28 01:10:55 +02:00
a2d29412cb
Core/Common: Corrections to core timing and add critical priority.
2022-06-28 01:10:55 +02:00
846c994cc9
Core: Reimplement Core Timing.
2022-06-28 01:10:50 +02:00
99ceb03a1c
general: Convert source file copyright comments over to SPDX
...
This formats all copyright comments according to SPDX formatting guidelines.
Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-04-23 05:55:32 -04:00
ebb64d5bf4
core: Resolve misc cases of variable shadowing
...
Resolves shadowing warnings that aren't in a particularly large
subsection of core. Brings us closer to turning -Wshadow into an error.
All that remains now is for cases in the kernel (left untouched for now
since a big change by bunnei is pending), and a few left over in the
service code (will be tackled next).
2021-05-03 01:19:13 -04:00
82f6037ec2
core: hle: Add missing calls to MicroProfileOnThreadExit.
2021-01-11 14:23:16 -08:00
3d592972dc
Revert "core: Fix clang build"
2020-10-20 19:07:39 -07:00
be1954e04c
core: Fix clang build
...
Recent changes to the build system that made more warnings be flagged as
errors caused building via clang to break.
Fixes #4795
2020-10-17 19:50:39 -04:00
79504f1a39
core_timing: Remove unused header
2020-08-22 22:12:37 -04:00
25cd5d9dda
core_timing: Move clock initializer into constructor initializer list
...
Same behavior, minus unnecessary zeroing out of the pointer.
2020-08-22 20:26:48 -04:00
2624b1eae6
core_timing: Resolve sign conversion warning
...
This constant is only ever assigned to downcount, which is a s64, not a
u64.
2020-08-22 20:26:45 -04:00
a7af349dae
core_timing: Make use of uintptr_t to represent user_data
...
Makes the interface future-proofed for supporting other platforms in the event we ever support platforms with differing pointer sizes. This way, we have a type in place that is always guaranteed to be able to represent a pointer exactly.
2020-07-27 21:21:01 -04:00
bef1844a51
core_timing: Make TimedCallback take std::chrono::nanoseconds
...
Enforces our desired time units directly with a concrete type.
2020-07-15 19:41:22 -04:00
8b50c660df
core_timing: Make use of std::chrono with ScheduleEvent
2020-07-15 18:54:15 -04:00
8562b516c0
core_timing,scheduler: Use std::scoped_lock when possible
...
Simplifies the cognitive load of procedures using locks and makes locks
safe against exceptions.
2020-06-28 21:42:57 -03:00
2f8947583f
Core/Common: Address Feedback.
2020-06-27 18:20:06 -04:00
71f1c0f9f9
CoreTiming: Correct rebase bugs and other miscellaneous things.
2020-06-27 11:36:11 -04:00
528b19a842
General: Tune the priority of main emulation threads so they have higher priority than less important helper threads.
2020-06-27 11:36:09 -04:00
bfb5244cf8
CoreTiming/CycleTimer: Correct Idling.
2020-06-27 11:36:07 -04:00
f5e32935ca
SingleCore: Use Cycle Timing instead of Host Timing.
2020-06-27 11:36:01 -04:00
f2ade343e2
SingleCore: Move Host Timing from a sepparate thread to main cpu thread.
2020-06-27 11:35:52 -04:00
e6f8bde74b
General: Fix Stop function
2020-06-27 11:35:47 -04:00
07993ac8c8
Kernel: Corrections to Scheduling.
2020-06-27 11:35:23 -04:00
18dcb09342
HostTiming: Pause the hardware clock on pause.
2020-06-27 11:35:10 -04:00
dc58058203
General: Setup yuzu threads' microprofile, naming and registry.
2020-06-27 11:35:09 -04:00
e31425df38
General: Recover Prometheus project from harddrive failure
...
This commit: Implements CPU Interrupts, Replaces Cycle Timing for Host
Timing, Reworks the Kernel's Scheduler, Introduce Idle State and
Suspended State, Recreates the bootmanager, Initializes Multicore
system.
2020-06-27 11:35:06 -04:00
1e6f8aba04
Core: Set all hardware emulation constants in a single file.
2020-02-11 20:19:11 -04:00
ec0ce96c56
core_timing: Use better reference tracking for EventType. ( #3159 )
...
* core_timing: Use better reference tracking for EventType.
- Moves ownership of the event to the caller, ensuring we don't fire events for destroyed objects.
- Removes need for unique names - we won't be using this for save states anyways.
2019-11-26 21:48:56 -05:00