diff options
author | Markus Wick <markus@selfnet.de> | 2021-04-07 08:42:54 +0200 |
---|---|---|
committer | Markus Wick <markus@selfnet.de> | 2021-04-07 22:38:52 +0200 |
commit | 5145133a604f626c05f832465ac22019b003c32a (patch) | |
tree | 81aa729ab6897cadeb1251f6adcafaeab1010f0d /src/video_core/gpu_thread.h | |
parent | 4aec060f6de410698d5b0a5bffd42d4327b258e4 (diff) |
video_core/gpu_thread: Implement a ShutDown method.
This was implicitly done by `is_powered_on = false`, however the explicit method allows us to block until the GPU is actually gone.
This should fix a race condition while removing the other subsystems while the GPU is still active.
Diffstat (limited to 'src/video_core/gpu_thread.h')
-rw-r--r-- | src/video_core/gpu_thread.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/video_core/gpu_thread.h b/src/video_core/gpu_thread.h index 18269e51c4..d384164de2 100644 --- a/src/video_core/gpu_thread.h +++ b/src/video_core/gpu_thread.h @@ -132,8 +132,8 @@ public: /// Notify rasterizer that any caches of the specified region should be flushed and invalidated void FlushAndInvalidateRegion(VAddr addr, u64 size); - // Wait until the gpu thread is idle. - void WaitIdle() const; + // Stops the GPU execution and waits for the GPU to finish working + void ShutDown(); void OnCommandListEnd(); @@ -141,6 +141,9 @@ private: /// Pushes a command to be executed by the GPU thread u64 PushCommand(CommandData&& command_data); + // Wait until the gpu thread is idle. + void WaitIdle() const; + Core::System& system; const bool is_async; VideoCore::RasterizerInterface* rasterizer = nullptr; |