summaryrefslogtreecommitdiffstats
path: root/platform/windows/gl_manager_windows_native.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-11-21 10:44:27 +0100
committerRémi Verschelde <rverschelde@gmail.com>2023-11-21 10:44:27 +0100
commitb5779cc5c0c0d11aa95fb8afe1c1640412ce2351 (patch)
tree4e5b559782cce1fa7662952aacc61698d9ff9df3 /platform/windows/gl_manager_windows_native.cpp
parent1e6b41660c5328c53af8bd542ca211751596b3c6 (diff)
parenta3f44cd67e5397d8fb0329ebaa1ea5b7736090ad (diff)
downloadredot-engine-b5779cc5c0c0d11aa95fb8afe1c1640412ce2351.tar.gz
Merge pull request #85121 from jsjtxietian/return-early-nv
Prevent crash in `_nvapi_disable_threaded_optimization` when attached to renderdoc
Diffstat (limited to 'platform/windows/gl_manager_windows_native.cpp')
-rw-r--r--platform/windows/gl_manager_windows_native.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/platform/windows/gl_manager_windows_native.cpp b/platform/windows/gl_manager_windows_native.cpp
index b350786d11..a8c6efcea1 100644
--- a/platform/windows/gl_manager_windows_native.cpp
+++ b/platform/windows/gl_manager_windows_native.cpp
@@ -104,8 +104,8 @@ static bool nvapi_err_check(const char *msg, int status) {
}
// On windows we have to disable threaded optimization when using NVIDIA graphics cards
-// to avoid stuttering, see https://github.com/microsoft/vscode-cpptools/issues/6592
-// also see https://github.com/Ryujinx/Ryujinx/blob/master/Ryujinx.Common/GraphicsDriver/NVThreadedOptimization.cs
+// to avoid stuttering, see see https://stackoverflow.com/questions/36959508/nvidia-graphics-driver-causing-noticeable-frame-stuttering/37632948
+// also see https://github.com/Ryujinx/Ryujinx/blob/master/src/Ryujinx.Common/GraphicsDriver/NVThreadedOptimization.cs
void GLManagerNative_Windows::_nvapi_disable_threaded_optimization() {
HMODULE nvapi = 0;
#ifdef _WIN64
@@ -149,6 +149,10 @@ void GLManagerNative_Windows::_nvapi_disable_threaded_optimization() {
NvDRSSessionHandle session_handle;
+ if (NvAPI_DRS_CreateSession == nullptr) {
+ return;
+ }
+
if (!nvapi_err_check("NVAPI: Error creating DRS session", NvAPI_DRS_CreateSession(&session_handle))) {
NvAPI_Unload();
return;