From 517a9774442d39b641e4a893a6734994dfe0074d Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 11 Mar 2018 14:24:45 +1000 Subject: ShaderCache: Fix several issues in background shader compiling - In D3D, shaders could be compiled on the main thread, blocking startup. - Reduced the latency between a pipeline being requested and used in all backends in hybrid ubershader mode, when no shader stages were present. - Fixed a case where async compilation could cause the same UID to be appended multiple times to the UID cache. - Fix incorrect number of threads being used when immediately compile shaders was enabled. --- Source/Core/VideoCommon/AsyncShaderCompiler.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'Source/Core/VideoCommon/AsyncShaderCompiler.cpp') diff --git a/Source/Core/VideoCommon/AsyncShaderCompiler.cpp b/Source/Core/VideoCommon/AsyncShaderCompiler.cpp index e605828ed5..2f14c1621b 100644 --- a/Source/Core/VideoCommon/AsyncShaderCompiler.cpp +++ b/Source/Core/VideoCommon/AsyncShaderCompiler.cpp @@ -57,6 +57,12 @@ bool AsyncShaderCompiler::HasPendingWork() return !m_pending_work.empty() || m_busy_workers.load() != 0; } +bool AsyncShaderCompiler::HasCompletedWork() +{ + std::lock_guard guard(m_completed_work_lock); + return !m_completed_work.empty(); +} + void AsyncShaderCompiler::WaitUntilCompletion() { while (HasPendingWork()) -- cgit v1.2.3