diff --git a/src/gl/imgui_impl_opengl3.cpp b/src/gl/imgui_impl_opengl3.cpp index 474f76b5..6f0f6f29 100644 --- a/src/gl/imgui_impl_opengl3.cpp +++ b/src/gl/imgui_impl_opengl3.cpp @@ -102,7 +102,7 @@ bool ImGui_ImplOpenGL3_Init(const char* glsl_version) #if !defined(IMGUI_IMPL_OPENGL_ES2) glsl_version = "#version 130"; - GLint major, minor; + GLint major = -1, minor = -1; glGetIntegerv(GL_MAJOR_VERSION, &major); glGetIntegerv(GL_MINOR_VERSION, &minor); g_GlVersion = major * 1000 + minor; diff --git a/src/gl/inject.cpp b/src/gl/inject.cpp index e415b436..50b6c8d5 100644 --- a/src/gl/inject.cpp +++ b/src/gl/inject.cpp @@ -77,6 +77,9 @@ void imgui_create(void *ctx) gl3wInit(); std::cerr << "GL version: " << glGetString(GL_VERSION) << std::endl; + glGetIntegerv(GL_MAJOR_VERSION, &sw_stats.version_gl.major); + glGetIntegerv(GL_MINOR_VERSION, &sw_stats.version_gl.minor); + deviceName = (char*)glGetString(GL_RENDERER); if (deviceName.find("Radeon") != std::string::npos || deviceName.find("AMD") != std::string::npos){ diff --git a/src/overlay.cpp b/src/overlay.cpp index 5ad8668a..3e085d0e 100644 --- a/src/overlay.cpp +++ b/src/overlay.cpp @@ -1194,6 +1194,13 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2& if (params.enabled[OVERLAY_PARAM_ENABLED_fps]){ ImGui::TableNextRow(); ImGui::TextColored(ImGui::ColorConvertU32ToFloat4(params.engine_color), "%s", is_vulkan ? engineName.c_str() : "OpenGL"); + if (!is_vulkan) { + ImGui::SameLine(0, 1.0f); + ImGui::PushFont(data.font1); + ImGui::TextColored(ImGui::ColorConvertU32ToFloat4(params.engine_color), + "%d.%d", data.version_gl.major, data.version_gl.minor); + ImGui::PopFont(); + } ImGui::TableNextCell(); right_aligned_text(char_width * 4, "%.0f", data.fps); ImGui::SameLine(0, 1.0f); @@ -1206,10 +1213,22 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2& ImGui::PushFont(data.font1); ImGui::Text("ms"); ImGui::PopFont(); - if ((engineName == "DXVK" || engineName == "VKD3D") && is_vulkan){ + if (is_vulkan) { ImGui::TableNextRow(); ImGui::PushFont(data.font1); - ImGui::TextColored(ImGui::ColorConvertU32ToFloat4(params.engine_color), "%s", engineVersion.c_str()); + if ((engineName == "DXVK" || engineName == "VKD3D")){ + ImGui::TextColored(ImGui::ColorConvertU32ToFloat4(params.engine_color), + "%s/%d.%d.%d", engineVersion.c_str(), + data.version_vk.major, + data.version_vk.minor, + data.version_vk.patch); + } else { + ImGui::TextColored(ImGui::ColorConvertU32ToFloat4(params.engine_color), + "%d.%d.%d", + data.version_vk.major, + data.version_vk.minor, + data.version_vk.patch); + } ImGui::PopFont(); } } @@ -2162,7 +2181,11 @@ static VkResult overlay_CreateSwapchainKHR( if (result != VK_SUCCESS) return result; struct swapchain_data *swapchain_data = new_swapchain_data(*pSwapchain, device_data); setup_swapchain_data(swapchain_data, pCreateInfo, device_data->instance->params); - + + swapchain_data->sw_stats.version_vk.major = VK_VERSION_MAJOR(device_data->properties.apiVersion); + swapchain_data->sw_stats.version_vk.minor = VK_VERSION_MINOR(device_data->properties.apiVersion); + swapchain_data->sw_stats.version_vk.patch = VK_VERSION_PATCH(device_data->properties.apiVersion); + return result; } diff --git a/src/overlay.h b/src/overlay.h index fc86a679..e22ca69f 100644 --- a/src/overlay.h +++ b/src/overlay.h @@ -24,6 +24,15 @@ struct swapchain_stats { uint64_t last_present_time; unsigned n_frames_since_update; uint64_t last_fps_update; + struct { + int32_t major; + int32_t minor; + } version_gl; + struct { + int32_t major; + int32_t minor; + int32_t patch; + } version_vk; }; struct fps_limit {