diff options
| author | 2022-01-04 14:16:24 +0100 | |
|---|---|---|
| committer | 2022-01-04 14:16:24 +0100 | |
| commit | 118d5fa3b0fdc070f57916203dbbb999fe7e3c69 (patch) | |
| tree | dcea9a661fb5595fd255fa62e81d82c9a3aef822 /src/core | |
| parent | Merge pull request #7251 from FernandoS27/shader-dump (diff) | |
| parent | gpu: Add shut down method to synchronize threads before destruction (diff) | |
| download | yuzu-118d5fa3b0fdc070f57916203dbbb999fe7e3c69.tar.gz yuzu-118d5fa3b0fdc070f57916203dbbb999fe7e3c69.tar.xz yuzu-118d5fa3b0fdc070f57916203dbbb999fe7e3c69.zip | |
Merge pull request #7670 from ameerj/vsync-block
gpu: Add shut down method to synchronize threads before destruction
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/core.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/service/nvflinger/nvflinger.cpp | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp index aa96f709b..3f9a7f44b 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp | |||
| @@ -317,6 +317,8 @@ struct System::Impl { | |||
| 317 | is_powered_on = false; | 317 | is_powered_on = false; |
| 318 | exit_lock = false; | 318 | exit_lock = false; |
| 319 | 319 | ||
| 320 | gpu_core->NotifyShutdown(); | ||
| 321 | |||
| 320 | services.reset(); | 322 | services.reset(); |
| 321 | service_manager.reset(); | 323 | service_manager.reset(); |
| 322 | cheat_engine.reset(); | 324 | cheat_engine.reset(); |
diff --git a/src/core/hle/service/nvflinger/nvflinger.cpp b/src/core/hle/service/nvflinger/nvflinger.cpp index 396cc5afa..a22811ec1 100644 --- a/src/core/hle/service/nvflinger/nvflinger.cpp +++ b/src/core/hle/service/nvflinger/nvflinger.cpp | |||
| @@ -266,11 +266,10 @@ void NVFlinger::Compose() { | |||
| 266 | 266 | ||
| 267 | auto& gpu = system.GPU(); | 267 | auto& gpu = system.GPU(); |
| 268 | const auto& multi_fence = buffer->get().multi_fence; | 268 | const auto& multi_fence = buffer->get().multi_fence; |
| 269 | const auto stop_token = vsync_thread.get_stop_token(); | ||
| 270 | guard->unlock(); | 269 | guard->unlock(); |
| 271 | for (u32 fence_id = 0; fence_id < multi_fence.num_fences; fence_id++) { | 270 | for (u32 fence_id = 0; fence_id < multi_fence.num_fences; fence_id++) { |
| 272 | const auto& fence = multi_fence.fences[fence_id]; | 271 | const auto& fence = multi_fence.fences[fence_id]; |
| 273 | gpu.WaitFence(fence.id, fence.value, stop_token); | 272 | gpu.WaitFence(fence.id, fence.value); |
| 274 | } | 273 | } |
| 275 | guard->lock(); | 274 | guard->lock(); |
| 276 | 275 | ||