summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorGravatar Fernando S2022-01-04 14:16:24 +0100
committerGravatar GitHub2022-01-04 14:16:24 +0100
commit118d5fa3b0fdc070f57916203dbbb999fe7e3c69 (patch)
treedcea9a661fb5595fd255fa62e81d82c9a3aef822 /src/core
parentMerge pull request #7251 from FernandoS27/shader-dump (diff)
parentgpu: Add shut down method to synchronize threads before destruction (diff)
downloadyuzu-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.cpp2
-rw-r--r--src/core/hle/service/nvflinger/nvflinger.cpp3
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