mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-09-11 14:24:20 +00:00
Compare commits
1 Commits
lsfg-cleanup
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| c95ad020fb |
@@ -55,8 +55,8 @@ constexpr u64 GpuClockMultiplier(Settings::GpuClock clock) {
|
||||
|
||||
struct GPU::Impl {
|
||||
explicit Impl(Core::System& system_, bool is_async_, bool use_nvdec_)
|
||||
: gpu_thread{system_}
|
||||
, system{system_}
|
||||
: system{system_}
|
||||
, gpu_thread{system_}
|
||||
, use_nvdec{use_nvdec_}
|
||||
, shader_notify()
|
||||
, is_async{is_async_}
|
||||
@@ -182,6 +182,7 @@ struct GPU::Impl {
|
||||
}
|
||||
|
||||
void NotifyShutdown() {
|
||||
gpu_thread.NotifyShutdown();
|
||||
std::unique_lock lk{sync_mutex};
|
||||
shutting_down.store(true, std::memory_order::relaxed);
|
||||
sync_cv.notify_all();
|
||||
@@ -301,12 +302,12 @@ struct GPU::Impl {
|
||||
return out;
|
||||
}
|
||||
|
||||
Core::System& system;
|
||||
|
||||
// Destruction of thread must be done before all (non trivial)
|
||||
// previous members has been destroyed
|
||||
VideoCommon::GPUThread::ThreadManager gpu_thread;
|
||||
|
||||
Core::System& system;
|
||||
|
||||
std::unique_ptr<VideoCore::RendererBase> renderer;
|
||||
const bool use_nvdec;
|
||||
|
||||
|
||||
@@ -114,4 +114,11 @@ u64 ThreadManager::PushCommand(CommandData&& command_data, bool block, bool is_a
|
||||
return fence;
|
||||
}
|
||||
|
||||
void ThreadManager::NotifyShutdown() {
|
||||
if (thread.joinable()) {
|
||||
thread.request_stop();
|
||||
thread.join();
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace VideoCommon::GPUThread
|
||||
|
||||
@@ -125,6 +125,8 @@ public:
|
||||
|
||||
void TickGPU(bool is_async);
|
||||
|
||||
void NotifyShutdown();
|
||||
|
||||
private:
|
||||
/// Pushes a command to be executed by the GPU thread
|
||||
u64 PushCommand(CommandData&& command_data, bool block, bool is_async);
|
||||
|
||||
Reference in New Issue
Block a user