summaryrefslogtreecommitdiffstats
path: root/src/video_core/shader
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/shader')
-rw-r--r--src/video_core/shader/async_shaders.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/video_core/shader/async_shaders.cpp b/src/video_core/shader/async_shaders.cpp
index 64fad46e7..b7f66d7ee 100644
--- a/src/video_core/shader/async_shaders.cpp
+++ b/src/video_core/shader/async_shaders.cpp
@@ -3,13 +3,19 @@
// Refer to the license.txt file included.
#include <chrono>
+#include <condition_variable>
+#include <mutex>
+#include <thread>
+#include <vector>
#include "video_core/engines/maxwell_3d.h"
#include "video_core/renderer_base.h"
#include "video_core/renderer_opengl/gl_shader_cache.h"
#include "video_core/shader/async_shaders.h"
namespace VideoCommon::Shader {
+
AsyncShaders::AsyncShaders(Core::Frontend::EmuWindow& emu_window) : emu_window(emu_window) {}
+
AsyncShaders::~AsyncShaders() {
KillWorkers();
}
@@ -64,7 +70,7 @@ bool AsyncShaders::HasWorkQueued() {
}
bool AsyncShaders::HasCompletedWork() {
- std::shared_lock lock(completed_mutex);
+ std::shared_lock lock{completed_mutex};
return !finished_work.empty();
}
@@ -90,7 +96,7 @@ bool AsyncShaders::IsShaderAsync(const Tegra::GPU& gpu) const {
std::vector<AsyncShaders::Result> AsyncShaders::GetCompletedWork() {
std::vector<AsyncShaders::Result> results;
{
- std::unique_lock lock(completed_mutex);
+ std::unique_lock lock{completed_mutex};
results.assign(std::make_move_iterator(finished_work.begin()),
std::make_move_iterator(finished_work.end()));
finished_work.clear();
@@ -124,8 +130,8 @@ void AsyncShaders::QueueOpenGLShader(const OpenGL::Device& device,
void AsyncShaders::ShaderCompilerThread(Core::Frontend::GraphicsContext* context) {
using namespace std::chrono_literals;
while (!is_thread_exiting.load(std::memory_order_relaxed)) {
- std::unique_lock<std::mutex> lock(queue_mutex);
- cv.wait(lock, [&] { return HasWorkQueued() || is_thread_exiting; });
+ std::unique_lock lock{queue_mutex};
+ cv.wait(lock, [this] { return HasWorkQueued() || is_thread_exiting; });
if (is_thread_exiting) {
return;
}