diff --git a/.gitmodules b/.gitmodules
index 26b4e5272bc7094fec22bf15dc4605358dec588b..3a49c487441e68296f4174e64769322424adc375 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -43,3 +43,6 @@
 [submodule "externals/zstd"]
     path = externals/zstd
     url = https://github.com/facebook/zstd
+[submodule "sirit"]
+    path = externals/sirit
+    url = https://github.com/ReinUsesLisp/sirit
diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt
index aa3319eb112dabb75b9f6fe4c1df20e8fa770149..3f8b6cda832eab1401c84576aafb712d81e8dfc8 100644
--- a/externals/CMakeLists.txt
+++ b/externals/CMakeLists.txt
@@ -72,6 +72,11 @@ if (USE_DISCORD_PRESENCE)
     target_include_directories(discord-rpc INTERFACE ./discord-rpc/include)
 endif()
 
+# Sirit
+if (ENABLE_VULKAN)
+    add_subdirectory(sirit)
+endif()
+
 if (ENABLE_WEB_SERVICE)
     # LibreSSL
     set(LIBRESSL_SKIP_INSTALL ON CACHE BOOL "")
diff --git a/externals/sirit b/externals/sirit
new file mode 160000
index 0000000000000000000000000000000000000000..f7c4b07a7e14edb1dcd93bc9879c823423705c2e
--- /dev/null
+++ b/externals/sirit
@@ -0,0 +1 @@
+Subproject commit f7c4b07a7e14edb1dcd93bc9879c823423705c2e
diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt
index 242a0d1cd72278048b7c116f5086b600d3068446..fe6b6ef7d56bd4d9e5b8618a12dfc3779dd25185 100644
--- a/src/video_core/CMakeLists.txt
+++ b/src/video_core/CMakeLists.txt
@@ -132,7 +132,7 @@ if (ENABLE_VULKAN)
         renderer_vulkan/vk_swapchain.cpp
         renderer_vulkan/vk_swapchain.h)
 
-    target_include_directories(video_core PRIVATE ../../externals/Vulkan-Headers/include)
+    target_include_directories(video_core PRIVATE sirit ../../externals/Vulkan-Headers/include)
     target_compile_definitions(video_core PRIVATE HAS_VULKAN)
 endif()
 
@@ -140,3 +140,6 @@ create_target_directory_groups(video_core)
 
 target_link_libraries(video_core PUBLIC common core)
 target_link_libraries(video_core PRIVATE glad)
+if (ENABLE_VULKAN)
+    target_link_libraries(video_core PRIVATE sirit)
+endif()