|
|
@ -230,7 +230,7 @@ struct GPU::Impl { |
|
|
void IncrementSyncPoint(u32 syncpoint_id) { |
|
|
void IncrementSyncPoint(u32 syncpoint_id) { |
|
|
auto& syncpoint = syncpoints.at(syncpoint_id); |
|
|
auto& syncpoint = syncpoints.at(syncpoint_id); |
|
|
syncpoint++; |
|
|
syncpoint++; |
|
|
std::lock_guard lock{sync_mutex}; |
|
|
|
|
|
|
|
|
std::scoped_lock lock{sync_mutex}; |
|
|
sync_cv.notify_all(); |
|
|
sync_cv.notify_all(); |
|
|
auto& interrupt = syncpt_interrupts.at(syncpoint_id); |
|
|
auto& interrupt = syncpt_interrupts.at(syncpoint_id); |
|
|
if (!interrupt.empty()) { |
|
|
if (!interrupt.empty()) { |
|
|
@ -252,7 +252,7 @@ struct GPU::Impl { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void RegisterSyncptInterrupt(u32 syncpoint_id, u32 value) { |
|
|
void RegisterSyncptInterrupt(u32 syncpoint_id, u32 value) { |
|
|
std::lock_guard lock{sync_mutex}; |
|
|
|
|
|
|
|
|
std::scoped_lock lock{sync_mutex}; |
|
|
auto& interrupt = syncpt_interrupts.at(syncpoint_id); |
|
|
auto& interrupt = syncpt_interrupts.at(syncpoint_id); |
|
|
bool contains = std::any_of(interrupt.begin(), interrupt.end(), |
|
|
bool contains = std::any_of(interrupt.begin(), interrupt.end(), |
|
|
[value](u32 in_value) { return in_value == value; }); |
|
|
[value](u32 in_value) { return in_value == value; }); |
|
|
@ -263,7 +263,7 @@ struct GPU::Impl { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
[[nodiscard]] bool CancelSyncptInterrupt(u32 syncpoint_id, u32 value) { |
|
|
[[nodiscard]] bool CancelSyncptInterrupt(u32 syncpoint_id, u32 value) { |
|
|
std::lock_guard lock{sync_mutex}; |
|
|
|
|
|
|
|
|
std::scoped_lock lock{sync_mutex}; |
|
|
auto& interrupt = syncpt_interrupts.at(syncpoint_id); |
|
|
auto& interrupt = syncpt_interrupts.at(syncpoint_id); |
|
|
const auto iter = |
|
|
const auto iter = |
|
|
std::find_if(interrupt.begin(), interrupt.end(), |
|
|
std::find_if(interrupt.begin(), interrupt.end(), |
|
|
|