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 {
|
struct GPU::Impl {
|
||||||
explicit Impl(Core::System& system_, bool is_async_, bool use_nvdec_)
|
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_}
|
, use_nvdec{use_nvdec_}
|
||||||
, shader_notify()
|
, shader_notify()
|
||||||
, is_async{is_async_}
|
, is_async{is_async_}
|
||||||
@@ -182,6 +182,7 @@ struct GPU::Impl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void NotifyShutdown() {
|
void NotifyShutdown() {
|
||||||
|
gpu_thread.NotifyShutdown();
|
||||||
std::unique_lock lk{sync_mutex};
|
std::unique_lock lk{sync_mutex};
|
||||||
shutting_down.store(true, std::memory_order::relaxed);
|
shutting_down.store(true, std::memory_order::relaxed);
|
||||||
sync_cv.notify_all();
|
sync_cv.notify_all();
|
||||||
@@ -301,12 +302,12 @@ struct GPU::Impl {
|
|||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Core::System& system;
|
||||||
|
|
||||||
// Destruction of thread must be done before all (non trivial)
|
// Destruction of thread must be done before all (non trivial)
|
||||||
// previous members has been destroyed
|
// previous members has been destroyed
|
||||||
VideoCommon::GPUThread::ThreadManager gpu_thread;
|
VideoCommon::GPUThread::ThreadManager gpu_thread;
|
||||||
|
|
||||||
Core::System& system;
|
|
||||||
|
|
||||||
std::unique_ptr<VideoCore::RendererBase> renderer;
|
std::unique_ptr<VideoCore::RendererBase> renderer;
|
||||||
const bool use_nvdec;
|
const bool use_nvdec;
|
||||||
|
|
||||||
|
|||||||
@@ -114,4 +114,11 @@ u64 ThreadManager::PushCommand(CommandData&& command_data, bool block, bool is_a
|
|||||||
return fence;
|
return fence;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ThreadManager::NotifyShutdown() {
|
||||||
|
if (thread.joinable()) {
|
||||||
|
thread.request_stop();
|
||||||
|
thread.join();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace VideoCommon::GPUThread
|
} // namespace VideoCommon::GPUThread
|
||||||
|
|||||||
@@ -125,6 +125,8 @@ public:
|
|||||||
|
|
||||||
void TickGPU(bool is_async);
|
void TickGPU(bool is_async);
|
||||||
|
|
||||||
|
void NotifyShutdown();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/// Pushes a command to be executed by the GPU thread
|
/// Pushes a command to be executed by the GPU thread
|
||||||
u64 PushCommand(CommandData&& command_data, bool block, bool is_async);
|
u64 PushCommand(CommandData&& command_data, bool block, bool is_async);
|
||||||
|
|||||||
Reference in New Issue
Block a user