mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 05:47:56 -07:00
ShaderCache: Use imgui for shader compilation dialog
This commit is contained in:
parent
e4b205c769
commit
78588ce79d
@ -77,7 +77,7 @@ void AsyncShaderCompiler::WaitUntilCompletion(
|
|||||||
|
|
||||||
// Wait a second before opening a progress dialog.
|
// Wait a second before opening a progress dialog.
|
||||||
// This way, if the operation completes quickly, we don't annoy the user.
|
// This way, if the operation completes quickly, we don't annoy the user.
|
||||||
constexpr u32 CHECK_INTERVAL_MS = 50;
|
constexpr u32 CHECK_INTERVAL_MS = 1000 / 30;
|
||||||
constexpr auto CHECK_INTERVAL = std::chrono::milliseconds(CHECK_INTERVAL_MS);
|
constexpr auto CHECK_INTERVAL = std::chrono::milliseconds(CHECK_INTERVAL_MS);
|
||||||
for (u32 i = 0; i < (1000 / CHECK_INTERVAL_MS); i++)
|
for (u32 i = 0; i < (1000 / CHECK_INTERVAL_MS); i++)
|
||||||
{
|
{
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
#include "Common/FileUtil.h"
|
#include "Common/FileUtil.h"
|
||||||
#include "Common/MsgHandler.h"
|
#include "Common/MsgHandler.h"
|
||||||
#include "Core/ConfigManager.h"
|
#include "Core/ConfigManager.h"
|
||||||
#include "Core/Host.h"
|
|
||||||
|
|
||||||
#include "VideoCommon/FramebufferManagerBase.h"
|
#include "VideoCommon/FramebufferManagerBase.h"
|
||||||
#include "VideoCommon/RenderBase.h"
|
#include "VideoCommon/RenderBase.h"
|
||||||
@ -16,6 +15,8 @@
|
|||||||
#include "VideoCommon/VertexLoaderManager.h"
|
#include "VideoCommon/VertexLoaderManager.h"
|
||||||
#include "VideoCommon/VertexManagerBase.h"
|
#include "VideoCommon/VertexManagerBase.h"
|
||||||
|
|
||||||
|
#include "imgui.h"
|
||||||
|
|
||||||
std::unique_ptr<VideoCommon::ShaderCache> g_shader_cache;
|
std::unique_ptr<VideoCommon::ShaderCache> g_shader_cache;
|
||||||
|
|
||||||
namespace VideoCommon
|
namespace VideoCommon
|
||||||
@ -153,12 +154,29 @@ void ShaderCache::WaitForAsyncCompiler()
|
|||||||
while (m_async_shader_compiler->HasPendingWork() || m_async_shader_compiler->HasCompletedWork())
|
while (m_async_shader_compiler->HasPendingWork() || m_async_shader_compiler->HasCompletedWork())
|
||||||
{
|
{
|
||||||
m_async_shader_compiler->WaitUntilCompletion([](size_t completed, size_t total) {
|
m_async_shader_compiler->WaitUntilCompletion([](size_t completed, size_t total) {
|
||||||
Host_UpdateProgressDialog(GetStringT("Compiling shaders...").c_str(),
|
g_renderer->BeginUIFrame();
|
||||||
static_cast<int>(completed), static_cast<int>(total));
|
|
||||||
|
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<float>(completed) /
|
||||||
|
static_cast<float>(std::max(total, static_cast<size_t>(1))),
|
||||||
|
ImVec2(-1.0f, 0.0f), "");
|
||||||
|
}
|
||||||
|
ImGui::End();
|
||||||
|
|
||||||
|
g_renderer->EndUIFrame();
|
||||||
});
|
});
|
||||||
m_async_shader_compiler->RetrieveWorkItems();
|
m_async_shader_compiler->RetrieveWorkItems();
|
||||||
}
|
}
|
||||||
Host_UpdateProgressDialog("", -1, -1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template <ShaderStage stage, typename K, typename T>
|
template <ShaderStage stage, typename K, typename T>
|
||||||
|
Loading…
Reference in New Issue
Block a user