From dc9786a388bdb4fa23ffab6a80a4bdddb778a1ab Mon Sep 17 00:00:00 2001 From: Tim <15017472+doodlum@users.noreply.github.com> Date: Sat, 8 Mar 2025 01:30:56 +0000 Subject: [PATCH 1/2] fix: fix shadercache race condition --- src/Globals.cpp | 59 +++++++++++++++++++++++++---------------------- src/Globals.h | 3 ++- src/XSEPlugin.cpp | 3 ++- 3 files changed, 35 insertions(+), 30 deletions(-) diff --git a/src/Globals.cpp b/src/Globals.cpp index 398dde8183..825918f31f 100644 --- a/src/Globals.cpp +++ b/src/Globals.cpp @@ -104,6 +104,37 @@ namespace globals DX12SwapChain* dx12SwapChain = nullptr; FidelityFX* fidelityFX = nullptr; + void OnInit() + { + shaderCache = &SIE::ShaderCache::Instance(); + state = State::GetSingleton(); + menu = Menu::GetSingleton(); + deferred = Deferred::GetSingleton(); + truePBR = TruePBR::GetSingleton(); + streamline = Streamline::GetSingleton(); + upscaling = Upscaling::GetSingleton(); + dx12SwapChain = DX12SwapChain::GetSingleton(); + fidelityFX = FidelityFX::GetSingleton(); + + features::cloudShadows = CloudShadows::GetSingleton(); + features::dynamicCubemaps = DynamicCubemaps::GetSingleton(); + features::extendedMaterials = ExtendedMaterials::GetSingleton(); + features::grassCollision = GrassCollision::GetSingleton(); + features::grassLighting = GrassLighting::GetSingleton(); + features::lightLimitFix = LightLimitFix::GetSingleton(); + features::screenSpaceGI = ScreenSpaceGI::GetSingleton(); + features::screenSpaceShadows = ScreenSpaceShadows::GetSingleton(); + features::skylighting = Skylighting::GetSingleton(); + features::subsurfaceScattering = SubsurfaceScattering::GetSingleton(); + features::terrainBlending = TerrainBlending::GetSingleton(); + features::terrainShadows = TerrainShadows::GetSingleton(); + features::volumetricLighting = VolumetricLighting::GetSingleton(); + features::waterEffects = WaterEffects::GetSingleton(); + features::wetnessEffects = WetnessEffects::GetSingleton(); + + features::llf::particleLights = ParticleLights::GetSingleton(); + } + void ReInit() { { @@ -133,34 +164,6 @@ namespace globals d3d::device = reinterpret_cast(game::renderer->GetRuntimeData().forwarder); d3d::context = reinterpret_cast(game::renderer->GetRuntimeData().context); d3d::swapChain = reinterpret_cast(game::renderer->GetRuntimeData().renderWindows->swapChain); - - state = State::GetSingleton(); - menu = Menu::GetSingleton(); - shaderCache = &SIE::ShaderCache::Instance(); - deferred = Deferred::GetSingleton(); - truePBR = TruePBR::GetSingleton(); - streamline = Streamline::GetSingleton(); - upscaling = Upscaling::GetSingleton(); - dx12SwapChain = DX12SwapChain::GetSingleton(); - fidelityFX = FidelityFX::GetSingleton(); - - features::cloudShadows = CloudShadows::GetSingleton(); - features::dynamicCubemaps = DynamicCubemaps::GetSingleton(); - features::extendedMaterials = ExtendedMaterials::GetSingleton(); - features::grassCollision = GrassCollision::GetSingleton(); - features::grassLighting = GrassLighting::GetSingleton(); - features::lightLimitFix = LightLimitFix::GetSingleton(); - features::screenSpaceGI = ScreenSpaceGI::GetSingleton(); - features::screenSpaceShadows = ScreenSpaceShadows::GetSingleton(); - features::skylighting = Skylighting::GetSingleton(); - features::subsurfaceScattering = SubsurfaceScattering::GetSingleton(); - features::terrainBlending = TerrainBlending::GetSingleton(); - features::terrainShadows = TerrainShadows::GetSingleton(); - features::volumetricLighting = VolumetricLighting::GetSingleton(); - features::waterEffects = WaterEffects::GetSingleton(); - features::wetnessEffects = WetnessEffects::GetSingleton(); - - features::llf::particleLights = ParticleLights::GetSingleton(); } void OnDataLoaded() diff --git a/src/Globals.h b/src/Globals.h index 168b02e20e..314374e1bc 100644 --- a/src/Globals.h +++ b/src/Globals.h @@ -103,7 +103,8 @@ namespace globals extern Upscaling* upscaling; extern DX12SwapChain* dx12SwapChain; extern FidelityFX* fidelityFX; - + + void OnInit(); void ReInit(); void OnDataLoaded(); } \ No newline at end of file diff --git a/src/XSEPlugin.cpp b/src/XSEPlugin.cpp index 54104080e4..264442a049 100644 --- a/src/XSEPlugin.cpp +++ b/src/XSEPlugin.cpp @@ -161,7 +161,8 @@ bool Load() auto messaging = SKSE::GetMessagingInterface(); messaging->RegisterListener("SKSE", MessageHandler); - + + globals::OnInit(); globals::ReInit(); auto state = globals::state; From f7330046537ce09d771c258778d47ac3275d7055 Mon Sep 17 00:00:00 2001 From: doodlum Date: Sat, 8 Mar 2025 01:32:44 +0000 Subject: [PATCH 2/2] =?UTF-8?q?style:=20=F0=9F=8E=A8=20apply=20clang-forma?= =?UTF-8?q?t=20changes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Globals.h | 2 +- src/XSEPlugin.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Globals.h b/src/Globals.h index 314374e1bc..da6bbfbffa 100644 --- a/src/Globals.h +++ b/src/Globals.h @@ -103,7 +103,7 @@ namespace globals extern Upscaling* upscaling; extern DX12SwapChain* dx12SwapChain; extern FidelityFX* fidelityFX; - + void OnInit(); void ReInit(); void OnDataLoaded(); diff --git a/src/XSEPlugin.cpp b/src/XSEPlugin.cpp index 264442a049..0185497cea 100644 --- a/src/XSEPlugin.cpp +++ b/src/XSEPlugin.cpp @@ -161,7 +161,7 @@ bool Load() auto messaging = SKSE::GetMessagingInterface(); messaging->RegisterListener("SKSE", MessageHandler); - + globals::OnInit(); globals::ReInit();