summaryrefslogtreecommitdiffstats
path: root/src/video_core
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2021-11-07 14:17:32 +0100
committerFernando Sahmkow <fsahmkow27@gmail.com>2022-10-06 21:00:51 +0200
commit2c62563ab58a70236a39571149f8370f3fdfb2a3 (patch)
tree02cfe114d95ca19d1b35cbdd659d8ca8f27fb501 /src/video_core
parentVideoCore: implement channels on gpu caches. (diff)
downloadyuzu-2c62563ab58a70236a39571149f8370f3fdfb2a3.tar
yuzu-2c62563ab58a70236a39571149f8370f3fdfb2a3.tar.gz
yuzu-2c62563ab58a70236a39571149f8370f3fdfb2a3.tar.bz2
yuzu-2c62563ab58a70236a39571149f8370f3fdfb2a3.tar.lz
yuzu-2c62563ab58a70236a39571149f8370f3fdfb2a3.tar.xz
yuzu-2c62563ab58a70236a39571149f8370f3fdfb2a3.tar.zst
yuzu-2c62563ab58a70236a39571149f8370f3fdfb2a3.zip
Diffstat (limited to 'src/video_core')
-rw-r--r--src/video_core/gpu.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp
index 80a1c69e0..8c0ff0094 100644
--- a/src/video_core/gpu.cpp
+++ b/src/video_core/gpu.cpp
@@ -249,6 +249,11 @@ struct GPU::Impl {
void RegisterSyncptInterrupt(u32 syncpoint_id, u32 value) {
std::scoped_lock lock{sync_mutex};
+ u32 current_value = syncpoints.at(syncpoint_id).load();
+ if ((static_cast<s32>(current_value) - static_cast<s32>(value)) >= 0) {
+ TriggerCpuInterrupt(syncpoint_id, value);
+ return;
+ }
auto& interrupt = syncpt_interrupts.at(syncpoint_id);
bool contains = std::any_of(interrupt.begin(), interrupt.end(),
[value](u32 in_value) { return in_value == value; });