From 78588ce79dceef745c6931a12ad1e59677346227 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Wed, 28 Nov 2018 23:36:39 +1000 Subject: ShaderCache: Use imgui for shader compilation dialog --- Source/Core/VideoCommon/ShaderCache.cpp | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'Source/Core/VideoCommon/ShaderCache.cpp') diff --git a/Source/Core/VideoCommon/ShaderCache.cpp b/Source/Core/VideoCommon/ShaderCache.cpp index 299b0d1bca..3b0c110f96 100644 --- a/Source/Core/VideoCommon/ShaderCache.cpp +++ b/Source/Core/VideoCommon/ShaderCache.cpp @@ -8,7 +8,6 @@ #include "Common/FileUtil.h" #include "Common/MsgHandler.h" #include "Core/ConfigManager.h" -#include "Core/Host.h" #include "VideoCommon/FramebufferManagerBase.h" #include "VideoCommon/RenderBase.h" @@ -16,6 +15,8 @@ #include "VideoCommon/VertexLoaderManager.h" #include "VideoCommon/VertexManagerBase.h" +#include "imgui.h" + std::unique_ptr g_shader_cache; namespace VideoCommon @@ -153,12 +154,29 @@ void ShaderCache::WaitForAsyncCompiler() while (m_async_shader_compiler->HasPendingWork() || m_async_shader_compiler->HasCompletedWork()) { m_async_shader_compiler->WaitUntilCompletion([](size_t completed, size_t total) { - Host_UpdateProgressDialog(GetStringT("Compiling shaders...").c_str(), - static_cast(completed), static_cast(total)); + g_renderer->BeginUIFrame(); + + const float scale = ImGui::GetIO().DisplayFramebufferScale.x; + + ImGui::SetNextWindowSize(ImVec2(400.0f * scale, 50.0f * scale), ImGuiCond_Always); + ImGui::SetNextWindowPosCenter(ImGuiCond_Always); + if (ImGui::Begin(GetStringT("Compiling Shaders").c_str(), nullptr, + ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoInputs | + ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoSavedSettings | + ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoNav | + ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoFocusOnAppearing)) + { + ImGui::Text("Compiling shaders: %zu/%zu", completed, total); + ImGui::ProgressBar(static_cast(completed) / + static_cast(std::max(total, static_cast(1))), + ImVec2(-1.0f, 0.0f), ""); + } + ImGui::End(); + + g_renderer->EndUIFrame(); }); m_async_shader_compiler->RetrieveWorkItems(); } - Host_UpdateProgressDialog("", -1, -1); } template -- cgit v1.2.3