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.
This commit is contained in:
Markus Wick 2021-04-07 08:42:54 +02:00
parent 4aec060f6d
commit 5145133a60
5 changed files with 28 additions and 15 deletions

View file

@ -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;