From aac66a1b61a0e4c1c2b85d89bc818a8b521bcffa Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 13 Nov 2016 18:39:06 +1000 Subject: Vulkan: Implement a pipeline UID cache This stores enough information to recreate the pipeline, including the shader UIDs, blend/depth/rasterization state, primitive and vertex format. --- Source/Core/VideoBackends/Vulkan/Renderer.cpp | 4 ++++ 1 file changed, 4 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 5348d6beec..05ae219ec2 100644 --- a/Source/Core/VideoBackends/Vulkan/Renderer.cpp +++ b/Source/Core/VideoBackends/Vulkan/Renderer.cpp @@ -116,6 +116,9 @@ bool Renderer::Initialize() m_bounding_box->GetGPUBufferSize()); } + // Ensure all pipelines previously used by the game have been created. + StateTracker::GetInstance()->LoadPipelineUIDCache(); + // Various initialization routines will have executed commands on the command buffer. // Execute what we have done before beginning the first frame. g_command_buffer_mgr->PrepareToSubmitCommandBuffer(); @@ -1136,6 +1139,7 @@ void Renderer::CheckForConfigChanges() FramebufferManager::GetInstance()->RecompileShaders(); g_object_cache->ClearPipelineCache(); g_object_cache->RecompileSharedShaders(); + StateTracker::GetInstance()->LoadPipelineUIDCache(); } // For vsync, we need to change the present mode, which means recreating the swap chain. -- cgit v1.2.3 From 9604b336c8213c43dff90fab67df8eaa31cdbbb5 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 13 Nov 2016 18:41:36 +1000 Subject: Vulkan: Don't destroy the device's pipeline cache on MSAA mode change The user could switch back again, and this would mean this data would be lost. Disk space is cheap, and it's not going to be much. --- Source/Core/VideoBackends/Vulkan/Renderer.cpp | 1 - 1 file changed, 1 deletion(-) (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 05ae219ec2..1a82184fc4 100644 --- a/Source/Core/VideoBackends/Vulkan/Renderer.cpp +++ b/Source/Core/VideoBackends/Vulkan/Renderer.cpp @@ -1137,7 +1137,6 @@ void Renderer::CheckForConfigChanges() g_command_buffer_mgr->WaitForGPUIdle(); RecompileShaders(); FramebufferManager::GetInstance()->RecompileShaders(); - g_object_cache->ClearPipelineCache(); g_object_cache->RecompileSharedShaders(); StateTracker::GetInstance()->LoadPipelineUIDCache(); } -- cgit v1.2.3