From 4125da9fc3d274784ffd50f65301ab03364c57d8 Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Tue, 3 Jan 2017 04:29:06 +0100 Subject: [PATCH] Fix speed regression caused by the DrawerThread object being recreated every frame --- src/swrenderer/drawers/r_thread.cpp | 2 +- src/swrenderer/drawers/r_thread.h | 12 +----------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/src/swrenderer/drawers/r_thread.cpp b/src/swrenderer/drawers/r_thread.cpp index 1dea2b356..d629a23f2 100644 --- a/src/swrenderer/drawers/r_thread.cpp +++ b/src/swrenderer/drawers/r_thread.cpp @@ -114,7 +114,7 @@ void DrawerCommandQueue::Finish() // Do one thread ourselves: - DrawerThread thread; + static DrawerThread thread; thread.core = 0; thread.num_cores = (int)(queue->threads.size() + 1); diff --git a/src/swrenderer/drawers/r_thread.h b/src/swrenderer/drawers/r_thread.h index c3e818abb..38d803d4a 100644 --- a/src/swrenderer/drawers/r_thread.h +++ b/src/swrenderer/drawers/r_thread.h @@ -202,17 +202,7 @@ public: if (queue->threaded_render == 0 || !r_multithreaded) { T command(std::forward(args)...); - VectoredTryCatch(&command, - [](void *data) - { - T *c = (T*)data; - c->Execute(&Instance()->single_core_thread); - }, - [](void *data, const char *reason, bool fatal) - { - T *c = (T*)data; - ReportDrawerError(c, false, reason, fatal); - }); + command.Execute(&Instance()->single_core_thread); } else {