Allow for more than 2 APIs in render_imgui

amd_ags
FlightlessMango 4 years ago
parent 02075b7a3b
commit d87257f606

@ -182,7 +182,7 @@ void imgui_render(unsigned int width, unsigned int height)
{
std::lock_guard<std::mutex> lk(notifier.mutex);
position_layer(sw_stats, params, window_size);
render_imgui(sw_stats, params, window_size, false);
render_imgui(sw_stats, params, window_size, "OpenGL");
}
ImGui::PopStyleVar(3);

@ -115,8 +115,8 @@ long __stdcall hkPresent11(IDXGISwapChain* pSwapChain, UINT SyncInterval, UINT F
ImGui_ImplDX11_NewFrame();
ImGui_ImplWin32_NewFrame();
ImGui::NewFrame();
position_layer(params, window_size);
render_imgui(sw_stats, params, window_size, false);
position_layer(sw_stats, params, window_size);
render_imgui(sw_stats, params, window_size, "D3D11");
ImGui::EndFrame();
ImGui::Render();

@ -29,13 +29,12 @@ bool checkNVML(const char* pciBusId){
std::cerr << "MANGOHUD: Getting device handle by PCI bus ID failed: " << nvml.nvmlErrorString(ret) << "\n";
std::cerr << " Using index 0.\n";
}
if (ret != NVML_SUCCESS)
ret = nvml.nvmlDeviceGetHandleByIndex(0, &nvidiaDevice);
if (ret != NVML_SUCCESS)
std::cerr << "MANGOHUD: Getting device handle failed: " << nvml.nvmlErrorString(ret) << "\n";
nvmlSuccess = (ret == NVML_SUCCESS);
return nvmlSuccess;
}
@ -53,7 +52,9 @@ bool getNVMLInfo(){
nvml.nvmlDeviceGetClockInfo(nvidiaDevice, NVML_CLOCK_GRAPHICS, &nvidiaCoreClock);
nvml.nvmlDeviceGetClockInfo(nvidiaDevice, NVML_CLOCK_MEM, &nvidiaMemClock);
nvml.nvmlDeviceGetPciInfo_v3(nvidiaDevice, &nvidiaPciInfo);
#ifdef __gnu_linux__
nvml.nvmlDeviceGetPowerUsage(nvidiaDevice, &nvidiaPowerUsage);
#endif
deviceID = nvidiaPciInfo.pciDeviceId >> 16;
if (response == NVML_ERROR_NOT_SUPPORTED)

@ -1289,7 +1289,7 @@ void render_benchmark(swapchain_stats& data, struct overlay_params& params, ImVe
ImGui::End();
}
void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2& window_size, bool is_vulkan)
void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2& window_size, const char* renderName)
{
uint32_t f_idx = (data.n_frames - 1) % ARRAY_SIZE(data.frames_stats);
uint64_t frame_timing = data.frames_stats[f_idx].stats[OVERLAY_PLOTS_frame_timing];
@ -1460,7 +1460,7 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2&
#endif
if (params.enabled[OVERLAY_PARAM_ENABLED_fps]){
ImGui::TableNextRow();
ImGui::TextColored(ImGui::ColorConvertU32ToFloat4(params.engine_color), "%s", is_vulkan ? data.engineName.c_str() : "OpenGL");
ImGui::TextColored(ImGui::ColorConvertU32ToFloat4(params.engine_color), "%s", renderName);
ImGui::TableNextCell();
right_aligned_text(char_width * 4, "%.0f", data.fps);
ImGui::SameLine(0, 1.0f);
@ -1480,7 +1480,8 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2&
if (params.enabled[OVERLAY_PARAM_ENABLED_fps] && params.enabled[OVERLAY_PARAM_ENABLED_engine_version]){
ImGui::PushFont(data.font1);
ImGui::Dummy(ImVec2(0, 8.0f));
if (is_vulkan) {
auto engine_color = ImGui::ColorConvertU32ToFloat4(params.engine_color);
if (renderName == "VULKAN") {
if ((data.engineName == "DXVK" || data.engineName == "VKD3D")){
ImGui::TextColored(engine_color,
"%s/%d.%d.%d", data.engineVersion.c_str(),
@ -1494,7 +1495,8 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2&
data.version_vk.minor,
data.version_vk.patch);
}
} else {
}
if (renderName == "OpenGL") {
ImGui::TextColored(engine_color,
"%d.%d%s", data.version_gl.major, data.version_gl.minor,
data.version_gl.is_gles ? " ES" : "");
@ -1601,7 +1603,7 @@ static void compute_swapchain_display(struct swapchain_data *data)
{
scoped_lock lk(instance_data->notifier.mutex);
position_layer(data->sw_stats, instance_data->params, data->window_size);
render_imgui(data->sw_stats, instance_data->params, data->window_size, true);
render_imgui(data->sw_stats, instance_data->params, data->window_size, "VULKAN");
}
ImGui::PopStyleVar(3);

@ -65,7 +65,7 @@ extern int32_t deviceID;
extern struct benchmark_stats benchmark;
void position_layer(struct swapchain_stats& data, struct overlay_params& params, ImVec2 window_size);
void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2& window_size, bool is_vulkan);
void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2& window_size, const char* renderName);
void update_hud_info(struct swapchain_stats& sw_stats, struct overlay_params& params, uint32_t vendorID);
void init_gpu_stats(uint32_t& vendorID, overlay_params& params);
void init_cpu_stats(overlay_params& params);

Loading…
Cancel
Save