diff options
| author | Anthony <Helios747@users.noreply.github.com> | 2017-07-30 01:00:16 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-07-30 01:00:16 -0700 |
| commit | ba57605266b9ab178963bf56e146f355d1b93cd4 (patch) | |
| tree | 0ddc89cfca6db3d343d317c18b7c07c9ab83e9c4 /Source/Core/VideoBackends/Vulkan/Renderer.cpp | |
| parent | 5bad2ee4a4129e734ff4f4d861cedc4cd573df55 (diff) | |
| parent | b154edb4fbdb327920a33b44f35f34cdf2636d6f (diff) | |
Merge pull request #5702 from stenzek/ubershaders
Ubershaders 2.0
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/Renderer.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/Vulkan/Renderer.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/Renderer.cpp b/Source/Core/VideoBackends/Vulkan/Renderer.cpp index 4e72d94a61..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<VulkanPostProcessing>(); if (!static_cast<VulkanPostProcessing*>(m_post_processor.get()) @@ -589,6 +586,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 +1132,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 +1147,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 +1194,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<VulkanPostProcessing*>(m_post_processor.get())->UpdateConfig(); } |
