summaryrefslogtreecommitdiffstats
path: root/src/video_core/fence_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/fence_manager.h')
-rw-r--r--src/video_core/fence_manager.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/video_core/fence_manager.h b/src/video_core/fence_manager.h
index 027e663bf..19bbdd547 100644
--- a/src/video_core/fence_manager.h
+++ b/src/video_core/fence_manager.h
@@ -64,19 +64,24 @@ public:
}
void SignalFence(std::function<void()>&& func) {
+ bool delay_fence = Settings::IsGPULevelHigh();
if constexpr (!can_async_check) {
TryReleasePendingFences<false>();
}
- std::function<void()> callback = std::move(func);
const bool should_flush = ShouldFlush();
CommitAsyncFlushes();
TFence new_fence = CreateFence(!should_flush);
if constexpr (can_async_check) {
guard.lock();
}
+ if (delay_fence) {
+ uncommitted_operations.emplace_back(std::move(func));
+ }
pending_operations.emplace_back(std::move(uncommitted_operations));
QueueFence(new_fence);
- callback();
+ if (!delay_fence) {
+ func();
+ }
fences.push(std::move(new_fence));
if (should_flush) {
rasterizer.FlushCommands();