Browse Source

[video_core] Fix SignalFence and restore OpenGL rendering (#3224)

Fixes OpenGL crashing on launch

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3224
Co-authored-by: MaranBr <maranbr@outlook.com>
Co-committed-by: MaranBr <maranbr@outlook.com>
pull/3235/head
MaranBr 2 days ago
committed by crueter
parent
commit
2b4d13c205
No known key found for this signature in database GPG Key ID: 425ACD2D4830EBC6
  1. 13
      src/video_core/fence_manager.h

13
src/video_core/fence_manager.h

@ -76,21 +76,20 @@ public:
TryReleasePendingFences<false>();
}
const bool should_flush = ShouldFlush();
const bool delay_fence = Settings::IsGPULevelHigh() || (Settings::IsGPULevelMedium() && should_flush);
CommitAsyncFlushes();
TFence new_fence = CreateFence(!should_flush);
if constexpr (can_async_check) {
guard.lock();
}
if (Settings::IsGPULevelLow() || (Settings::IsGPULevelMedium() && !should_flush)) {
func();
} else {
if (delay_fence) {
uncommitted_operations.emplace_back(std::move(func));
}
if (!uncommitted_operations.empty()) {
pending_operations.emplace_back(std::move(uncommitted_operations));
uncommitted_operations.clear();
}
pending_operations.emplace_back(std::move(uncommitted_operations));
QueueFence(new_fence);
if (!delay_fence) {
func();
}
fences.push(std::move(new_fence));
if (should_flush) {
rasterizer.FlushCommands();

Loading…
Cancel
Save