summaryrefslogtreecommitdiffstats
path: root/src/core/hardware_interrupt_manager.cpp
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2019-06-12 13:52:49 +0200
committerFernandoS27 <fsahmkow27@gmail.com>2019-07-05 21:49:26 +0200
commit7d1b974bcaf72c32910dcf4ff2d435f91cf40609 (patch)
tree64c69a14a9135b0027dea0d7e832e52710d7d8a8 /src/core/hardware_interrupt_manager.cpp
parentnvflinger: Make the force 30 fps still force 30 fps (diff)
downloadyuzu-7d1b974bcaf72c32910dcf4ff2d435f91cf40609.tar
yuzu-7d1b974bcaf72c32910dcf4ff2d435f91cf40609.tar.gz
yuzu-7d1b974bcaf72c32910dcf4ff2d435f91cf40609.tar.bz2
yuzu-7d1b974bcaf72c32910dcf4ff2d435f91cf40609.tar.lz
yuzu-7d1b974bcaf72c32910dcf4ff2d435f91cf40609.tar.xz
yuzu-7d1b974bcaf72c32910dcf4ff2d435f91cf40609.tar.zst
yuzu-7d1b974bcaf72c32910dcf4ff2d435f91cf40609.zip
Diffstat (limited to '')
-rw-r--r--src/core/hardware_interrupt_manager.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/core/hardware_interrupt_manager.cpp b/src/core/hardware_interrupt_manager.cpp
index 463d2916c..c3fffa894 100644
--- a/src/core/hardware_interrupt_manager.cpp
+++ b/src/core/hardware_interrupt_manager.cpp
@@ -8,14 +8,17 @@ namespace Core::Hardware {
InterruptManager::InterruptManager(Core::System& system_in) : system(system_in) {
gpu_interrupt_event =
- system.CoreTiming().RegisterEvent("GPUInterrupt", [this](u64 event_index, s64) {
+ system.CoreTiming().RegisterEvent("GPUInterrupt", [this](u64 message, s64) {
auto nvdrv = system.ServiceManager().GetService<Service::Nvidia::NVDRV>("nvdrv");
- nvdrv->SignalGPUInterrupt(static_cast<u32>(event_index));
+ const u32 syncpt = static_cast<u32>(message >> 32);
+ const u32 value = static_cast<u32>(message & 0x00000000FFFFFFFFULL);
+ nvdrv->SignalGPUInterruptSyncpt(syncpt, value);
});
}
-void InterruptManager::InterruptGPU(const u32 event_index) {
- system.CoreTiming().ScheduleEvent(10, gpu_interrupt_event, static_cast<u64>(event_index));
+void InterruptManager::GPUInterruptSyncpt(const u32 syncpoint_id, const u32 value) {
+ const u64 msg = (static_cast<u64>(syncpoint_id) << 32ULL) | value;
+ system.CoreTiming().ScheduleEvent(10, gpu_interrupt_event, msg);
}
} // namespace Core::Hardware