diff --git a/Source/Core/Core/Core.cpp b/Source/Core/Core/Core.cpp
index e92c01ab08..25cbd5955b 100644
--- a/Source/Core/Core/Core.cpp
+++ b/Source/Core/Core/Core.cpp
@@ -79,6 +79,7 @@
 
 #include "VideoCommon/AsyncRequests.h"
 #include "VideoCommon/Fifo.h"
+#include "VideoCommon/HiresTextures.h"
 #include "VideoCommon/OnScreenDisplay.h"
 #include "VideoCommon/RenderBase.h"
 #include "VideoCommon/VideoBackendBase.h"
@@ -542,6 +543,10 @@ static void EmuThread(std::unique_ptr<BootParameters> boot, WindowSystemInfo wsi
     return;
   }
 
+  // Inputs loading may have generated custom dynamic textures
+  // it's now ok to initialize any custom textures
+  HiresTexture::Update();
+
   AudioCommon::InitSoundStream();
   Common::ScopeGuard audio_guard{&AudioCommon::ShutdownSoundStream};
 
diff --git a/Source/Core/InputCommon/DynamicInputTextureConfiguration.cpp b/Source/Core/InputCommon/DynamicInputTextureConfiguration.cpp
index ad200e70a4..58c2c84d18 100644
--- a/Source/Core/InputCommon/DynamicInputTextureConfiguration.cpp
+++ b/Source/Core/InputCommon/DynamicInputTextureConfiguration.cpp
@@ -17,6 +17,7 @@
 #include "Common/Logging/Log.h"
 #include "Common/StringUtil.h"
 #include "Core/ConfigManager.h"
+#include "Core/Core.h"
 #include "InputCommon/ControllerEmu/ControllerEmu.h"
 #include "InputCommon/ImageOperations.h"
 #include "VideoCommon/RenderBase.h"
@@ -259,6 +260,8 @@ void DynamicInputTextureConfiguration::GenerateTextures(const IniFile::Section*
 
   if (!any_dirty)
     return;
+  if (Core::GetState() == Core::State::Starting)
+    return;
   if (!g_renderer)
     return;
   g_renderer->ForceReloadTextures();
diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp
index d1ced9e307..039bc87c5e 100644
--- a/Source/Core/VideoCommon/HiresTextures.cpp
+++ b/Source/Core/VideoCommon/HiresTextures.cpp
@@ -51,7 +51,7 @@ static std::thread s_prefetcher;
 
 void HiresTexture::Init()
 {
-  Update();
+  // Note: Update is not called here so that we handle dynamic textures on startup more gracefully
 }
 
 void HiresTexture::Shutdown()