From ed9c14e0d5ba9b73b4ab4fa30d7d80ad49c5ead4 Mon Sep 17 00:00:00 2001 From: degasus Date: Sat, 20 Dec 2014 19:13:34 +0100 Subject: [PATCH 1/2] OGL: Fix OGL3 with stereo enabled --- Source/Core/VideoBackends/OGL/main.cpp | 3 ++- Source/Core/VideoCommon/VideoConfig.cpp | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Source/Core/VideoBackends/OGL/main.cpp b/Source/Core/VideoBackends/OGL/main.cpp index c4c966458e..8642d78cc1 100644 --- a/Source/Core/VideoBackends/OGL/main.cpp +++ b/Source/Core/VideoBackends/OGL/main.cpp @@ -154,7 +154,8 @@ static void InitBackendInfo() void VideoBackend::ShowConfig(void *_hParent) { - InitBackendInfo(); + if (!s_BackendInitialized) + InitBackendInfo(); Host_ShowVideoConfig(_hParent, GetDisplayName(), "gfx_opengl"); } diff --git a/Source/Core/VideoCommon/VideoConfig.cpp b/Source/Core/VideoCommon/VideoConfig.cpp index d0f02dd327..63f55ba612 100644 --- a/Source/Core/VideoCommon/VideoConfig.cpp +++ b/Source/Core/VideoCommon/VideoConfig.cpp @@ -118,6 +118,8 @@ void VideoConfig::Load(const std::string& ini_file) // triplicated for each video backend. if (bEnableShaderDebugging) OSD::AddMessage("Warning: Shader Debugging is enabled, performance will suffer heavily", 15000); + + VerifyValidity(); } void VideoConfig::GameIniLoad() From a858db1d27b7b7c36dc4bc6722c29ce3e90c591b Mon Sep 17 00:00:00 2001 From: degasus Date: Sat, 20 Dec 2014 19:54:00 +0100 Subject: [PATCH 2/2] OGL: move osd warning for not supported stereo mode into config validation --- Source/Core/VideoBackends/OGL/Render.cpp | 3 --- Source/Core/VideoCommon/VideoConfig.cpp | 7 ++++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index 48a23ea3e2..3465bc85da 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -556,9 +556,6 @@ Renderer::Renderer() bSuccess = false; } - if (g_Config.iStereoMode > 0 && !g_Config.backend_info.bSupportsGeometryShaders) - OSD::AddMessage("Stereoscopic 3D isn't supported by your GPU, support for OpenGL 3.2 is required.", 10000); - if (!bSuccess) { // Not all needed extensions are supported, so we have to stop here. diff --git a/Source/Core/VideoCommon/VideoConfig.cpp b/Source/Core/VideoCommon/VideoConfig.cpp index 63f55ba612..d4cff3ec42 100644 --- a/Source/Core/VideoCommon/VideoConfig.cpp +++ b/Source/Core/VideoCommon/VideoConfig.cpp @@ -216,7 +216,12 @@ void VideoConfig::VerifyValidity() // TODO: Check iMaxAnisotropy value if (iAdapter < 0 || iAdapter > ((int)backend_info.Adapters.size() - 1)) iAdapter = 0; if (iMultisampleMode < 0 || iMultisampleMode >= (int)backend_info.AAModes.size()) iMultisampleMode = 0; - if (!backend_info.bSupportsGeometryShaders) iStereoMode = 0; + + if (iStereoMode > 0 && !backend_info.bSupportsGeometryShaders) + { + OSD::AddMessage("Stereoscopic 3D isn't supported by your GPU, support for OpenGL 3.2 is required.", 10000); + iStereoMode = 0; + } } void VideoConfig::Save(const std::string& ini_file)