From 81b4ed2a81d7bada71a115efc7fb2347378fb975 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Thu, 20 Jul 2017 15:25:35 +1000 Subject: Vulkan: Uber shader support --- Source/Core/VideoBackends/Vulkan/Renderer.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'Source/Core/VideoBackends/Vulkan/Renderer.cpp') diff --git a/Source/Core/VideoBackends/Vulkan/Renderer.cpp b/Source/Core/VideoBackends/Vulkan/Renderer.cpp index 4e72d94a61..de281e7e38 100644 --- a/Source/Core/VideoBackends/Vulkan/Renderer.cpp +++ b/Source/Core/VideoBackends/Vulkan/Renderer.cpp @@ -589,6 +589,9 @@ void Renderer::SwapImpl(u32 xfb_addr, u32 fb_width, u32 fb_stride, u32 fb_height // Clean up stale textures. TextureCache::GetInstance()->Cleanup(frameCount); + + // Pull in now-ready async shaders. + g_shader_cache->RetrieveAsyncShaders(); } void Renderer::TransitionBuffersForSwap(const TargetRectangle& scaled_rect, @@ -1132,6 +1135,8 @@ void Renderer::CheckForConfigChanges() bool old_force_filtering = g_ActiveConfig.bForceFiltering; bool old_use_xfb = g_ActiveConfig.bUseXFB; bool old_use_realxfb = g_ActiveConfig.bUseRealXFB; + bool old_vertex_ubershaders = g_ActiveConfig.bForceVertexUberShaders; + bool old_pixel_ubershaders = g_ActiveConfig.bForcePixelUberShaders; // Copy g_Config to g_ActiveConfig. // NOTE: This can potentially race with the UI thread, however if it does, the changes will be @@ -1145,6 +1150,8 @@ void Renderer::CheckForConfigChanges() bool aspect_changed = old_aspect_ratio != g_ActiveConfig.iAspectRatio; bool use_xfb_changed = old_use_xfb != g_ActiveConfig.bUseXFB; bool use_realxfb_changed = old_use_realxfb != g_ActiveConfig.bUseRealXFB; + bool ubershaders_changed = old_vertex_ubershaders != g_ActiveConfig.bForceVertexUberShaders || + old_pixel_ubershaders != g_ActiveConfig.bForcePixelUberShaders; // Update texture cache settings with any changed options. TextureCache::GetInstance()->OnConfigChanged(g_ActiveConfig); @@ -1190,6 +1197,10 @@ void Renderer::CheckForConfigChanges() if (anisotropy_changed || force_texture_filtering_changed) ResetSamplerStates(); + // Clear UID state if ubershaders are toggled. + if (ubershaders_changed) + StateTracker::GetInstance()->ClearShaders(); + // Check for a changed post-processing shader and recompile if needed. static_cast(m_post_processor.get())->UpdateConfig(); } -- cgit v1.2.3 From 33f66685440e038811f37a8b8328942563227bd0 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Thu, 20 Jul 2017 15:25:38 +1000 Subject: Vulkan: Multithreaded creation of UID pipeline caches Should give a decent speedup to boot time. --- Source/Core/VideoBackends/Vulkan/Renderer.cpp | 3 --- 1 file changed, 3 deletions(-) (limited to 'Source/Core/VideoBackends/Vulkan/Renderer.cpp') diff --git a/Source/Core/VideoBackends/Vulkan/Renderer.cpp b/Source/Core/VideoBackends/Vulkan/Renderer.cpp index de281e7e38..682fb8885c 100644 --- a/Source/Core/VideoBackends/Vulkan/Renderer.cpp +++ b/Source/Core/VideoBackends/Vulkan/Renderer.cpp @@ -113,9 +113,6 @@ bool Renderer::Initialize() m_bounding_box->GetGPUBufferSize()); } - // Ensure all pipelines previously used by the game have been created. - StateTracker::GetInstance()->ReloadPipelineUIDCache(); - // Initialize post processing. m_post_processor = std::make_unique(); if (!static_cast(m_post_processor.get()) -- cgit v1.2.3