diff --git a/renderdoc/CMakeLists.txt b/renderdoc/CMakeLists.txt
index 267a0104f..b93c5b1d8 100644
--- a/renderdoc/CMakeLists.txt
+++ b/renderdoc/CMakeLists.txt
@@ -197,6 +197,7 @@ set(sources
replay/replay_output.cpp
replay/replay_controller.cpp
replay/replay_controller.h
+ replay/common/var_dispatch_helpers.h
serialise/serialiser.cpp
serialise/serialiser.h
serialise/lz4io.cpp
diff --git a/renderdoc/driver/shaders/spirv/CMakeLists.txt b/renderdoc/driver/shaders/spirv/CMakeLists.txt
index 988a3d0fa..e00e7283f 100644
--- a/renderdoc/driver/shaders/spirv/CMakeLists.txt
+++ b/renderdoc/driver/shaders/spirv/CMakeLists.txt
@@ -115,7 +115,6 @@ set(sources
spirv_processor.h
spirv_disassemble.cpp
spirv_stringise.cpp
- var_dispatch_helpers.h
${glslang_sources})
add_definitions(-DAMD_EXTENSIONS)
diff --git a/renderdoc/driver/shaders/spirv/renderdoc_spirv.vcxproj b/renderdoc/driver/shaders/spirv/renderdoc_spirv.vcxproj
index 56a0d3a2f..9835c4186 100644
--- a/renderdoc/driver/shaders/spirv/renderdoc_spirv.vcxproj
+++ b/renderdoc/driver/shaders/spirv/renderdoc_spirv.vcxproj
@@ -275,7 +275,6 @@
-
diff --git a/renderdoc/driver/shaders/spirv/renderdoc_spirv.vcxproj.filters b/renderdoc/driver/shaders/spirv/renderdoc_spirv.vcxproj.filters
index 617982594..49ba067c7 100644
--- a/renderdoc/driver/shaders/spirv/renderdoc_spirv.vcxproj.filters
+++ b/renderdoc/driver/shaders/spirv/renderdoc_spirv.vcxproj.filters
@@ -305,7 +305,6 @@
-
3rdparty\glslang
diff --git a/renderdoc/driver/shaders/spirv/spirv_debug.cpp b/renderdoc/driver/shaders/spirv/spirv_debug.cpp
index 98493d832..f446e53f0 100644
--- a/renderdoc/driver/shaders/spirv/spirv_debug.cpp
+++ b/renderdoc/driver/shaders/spirv/spirv_debug.cpp
@@ -29,8 +29,8 @@
#include "core/settings.h"
#include "maths/half_convert.h"
#include "os/os_specific.h"
+#include "replay/common/var_dispatch_helpers.h"
#include "spirv_op_helpers.h"
-#include "var_dispatch_helpers.h"
static bool ContainsNaNInf(const ShaderVariable &var)
{
diff --git a/renderdoc/driver/shaders/spirv/spirv_debug_glsl450.cpp b/renderdoc/driver/shaders/spirv/spirv_debug_glsl450.cpp
index 1e61c6970..2bc2df790 100644
--- a/renderdoc/driver/shaders/spirv/spirv_debug_glsl450.cpp
+++ b/renderdoc/driver/shaders/spirv/spirv_debug_glsl450.cpp
@@ -27,7 +27,7 @@
#include "maths/half_convert.h"
#include "maths/matrix.h"
#include "os/os_specific.h"
-#include "var_dispatch_helpers.h"
+#include "replay/common/var_dispatch_helpers.h"
// add some overloads we'll use to avoid the mess of math function definitions across compilers and
// C/C++
diff --git a/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp b/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp
index ca7dad2f7..00d04b162 100644
--- a/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp
+++ b/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp
@@ -25,9 +25,9 @@
#include "spirv_debug.h"
#include "common/formatting.h"
#include "core/settings.h"
+#include "replay/common/var_dispatch_helpers.h"
#include "spirv_op_helpers.h"
#include "spirv_reflect.h"
-#include "var_dispatch_helpers.h"
RDOC_CONFIG(bool, Vulkan_Debug_UseDebugColumnInformation, false,
"Control whether column information should be read from vulkan debug info.");
diff --git a/renderdoc/driver/shaders/spirv/spirv_processor.cpp b/renderdoc/driver/shaders/spirv/spirv_processor.cpp
index f5cda38cb..8397b9b2c 100644
--- a/renderdoc/driver/shaders/spirv/spirv_processor.cpp
+++ b/renderdoc/driver/shaders/spirv/spirv_processor.cpp
@@ -25,8 +25,8 @@
#include "spirv_processor.h"
#include "common/formatting.h"
#include "maths/half_convert.h"
+#include "replay/common/var_dispatch_helpers.h"
#include "spirv_op_helpers.h"
-#include "var_dispatch_helpers.h"
namespace rdcspv
{
diff --git a/renderdoc/driver/vulkan/vk_shaderdebug.cpp b/renderdoc/driver/vulkan/vk_shaderdebug.cpp
index 82742a252..26118c75e 100644
--- a/renderdoc/driver/vulkan/vk_shaderdebug.cpp
+++ b/renderdoc/driver/vulkan/vk_shaderdebug.cpp
@@ -26,8 +26,8 @@
#include "driver/shaders/spirv/spirv_debug.h"
#include "driver/shaders/spirv/spirv_editor.h"
#include "driver/shaders/spirv/spirv_op_helpers.h"
-#include "driver/shaders/spirv/var_dispatch_helpers.h"
#include "maths/formatpacking.h"
+#include "replay/common/var_dispatch_helpers.h"
#include "vk_core.h"
#include "vk_debug.h"
#include "vk_replay.h"
diff --git a/renderdoc/renderdoc.vcxproj b/renderdoc/renderdoc.vcxproj
index 0fdb18c8c..b83ae114a 100644
--- a/renderdoc/renderdoc.vcxproj
+++ b/renderdoc/renderdoc.vcxproj
@@ -244,6 +244,7 @@
+
diff --git a/renderdoc/renderdoc.vcxproj.filters b/renderdoc/renderdoc.vcxproj.filters
index 2b46f5971..8f1c39d5f 100644
--- a/renderdoc/renderdoc.vcxproj.filters
+++ b/renderdoc/renderdoc.vcxproj.filters
@@ -139,6 +139,9 @@
{fcbf71ce-3767-435c-9aa2-e1327b9016f4}
+
+ {02773850-117a-47d9-b238-d5d4b96468b3}
+
@@ -564,6 +567,9 @@
Core
+
+ Replay\Common
+
diff --git a/renderdoc/driver/shaders/spirv/var_dispatch_helpers.h b/renderdoc/replay/common/var_dispatch_helpers.h
similarity index 100%
rename from renderdoc/driver/shaders/spirv/var_dispatch_helpers.h
rename to renderdoc/replay/common/var_dispatch_helpers.h