From 43496fe04e7dadae230da5b633a389ba0b7c0b0b Mon Sep 17 00:00:00 2001 From: Pantera Północy Date: Tue, 3 Jan 2023 20:49:23 +0100 Subject: SL-18891 Remove duplicate entry in settings file --- indra/newview/app_settings/settings.xml | 11 ----------- 1 file changed, 11 deletions(-) (limited to 'indra/newview/app_settings/settings.xml') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 6789e71e41..2f5bf7d148 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -16766,17 +16766,6 @@ Value 0 - ResetUIScaleOnFirstRun - - Comment - Resets the UI scale factor on first run due to changed display scaling behavior - Persist - 1 - Type - Boolean - Value - 1 - 360CaptureUseInterestListCap Comment -- cgit v1.3 From a546aa20b7a5256cb0cfcddff2f09c225c15c794 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 14 Feb 2023 22:49:50 +0200 Subject: SL-4126 Second Life messing up NVIDIA drivers Disable NvAPI by default --- indra/newview/app_settings/settings.xml | 11 ++++++++ indra/newview/llappviewerwin32.cpp | 48 +++++++++++++++++++-------------- 2 files changed, 39 insertions(+), 20 deletions(-) (limited to 'indra/newview/app_settings/settings.xml') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 3f6adfe13d..8e70dea36e 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8341,6 +8341,17 @@ Value 1 + NvAPISessionOverride + + Comment + Override NvAPI driver setting for maxim performance (HACK!!!) + Persist + 1 + Type + Boolean + Value + 0 + PurgeCacheOnNextStartup Comment diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp index 0c764fe48a..b36c5a61a3 100644 --- a/indra/newview/llappviewerwin32.cpp +++ b/indra/newview/llappviewerwin32.cpp @@ -386,27 +386,35 @@ int APIENTRY WINMAIN(HINSTANCE hInstance, LL_WARNS() << "Application init failed." << LL_ENDL; return -1; } - - NvAPI_Status status; - - // Initialize NVAPI - status = NvAPI_Initialize(); - NvDRSSessionHandle hSession = 0; - if (status == NVAPI_OK) - { - // Create the session handle to access driver settings - status = NvAPI_DRS_CreateSession(&hSession); - if (status != NVAPI_OK) - { - nvapi_error(status); - } - else - { - //override driver setting as needed - ll_nvapi_init(hSession); - } - } + NvDRSSessionHandle hSession = 0; + // Viewer shouldn't need NvAPI and this implementation alters global + // settings instead of viewer-only ones (SL-4126) + // TODO: ideally this should be removed, but temporary disabling + // it with a way to turn it back on in case of issues + static LLCachedControl use_nv_api(gSavedSettings, "NvAPISessionOverride", false); + if (use_nv_api) + { + NvAPI_Status status; + + // Initialize NVAPI + status = NvAPI_Initialize(); + + if (status == NVAPI_OK) + { + // Create the session handle to access driver settings + status = NvAPI_DRS_CreateSession(&hSession); + if (status != NVAPI_OK) + { + nvapi_error(status); + } + else + { + //override driver setting as needed + ll_nvapi_init(hSession); + } + } + } // Have to wait until after logging is initialized to display LFH info if (num_heaps > 0) -- cgit v1.3 From 9bbdd922d6b9f8178d2d10cf316e396d2ac8f0a7 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Wed, 22 Mar 2023 10:28:51 +0100 Subject: SL-4126: Create NVIDIA application profile for Second Life specific settings --- indra/newview/app_settings/settings.xml | 6 +-- indra/newview/llappviewerwin32.cpp | 76 +++++++++++++++++++++++++++------ 2 files changed, 66 insertions(+), 16 deletions(-) (limited to 'indra/newview/app_settings/settings.xml') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 8e70dea36e..335e65fd8d 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8341,16 +8341,16 @@ Value 1 - NvAPISessionOverride + NvAPICreateApplicationProfile Comment - Override NvAPI driver setting for maxim performance (HACK!!!) + Create NVIDIA application profile for optimized settings Persist 1 Type Boolean Value - 0 + 1 PurgeCacheOnNextStartup diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp index b36c5a61a3..7ebadbed43 100644 --- a/indra/newview/llappviewerwin32.cpp +++ b/indra/newview/llappviewerwin32.cpp @@ -259,21 +259,75 @@ void ll_nvapi_init(NvDRSSessionHandle hSession) std::string app_name = LLTrans::getString("APP_NAME"); llutf16string w_app_name = utf8str_to_utf16str(app_name); wsprintf(profile_name, L"%s", w_app_name.c_str()); - status = NvAPI_DRS_SetCurrentGlobalProfile(hSession, profile_name); - if (status != NVAPI_OK) + NvDRSProfileHandle hProfile = 0; + // (3) Check if we already have an application profile for the viewer + status = NvAPI_DRS_FindProfileByName(hSession, profile_name, &hProfile); + if (status != NVAPI_OK && status != NVAPI_PROFILE_NOT_FOUND) { nvapi_error(status); return; } + else if (status == NVAPI_PROFILE_NOT_FOUND) + { + // Don't have an application profile yet - create one + LL_INFOS() << "Creating NVIDIA application profile" << LL_ENDL; - // (3) Obtain the current profile. - NvDRSProfileHandle hProfile = 0; - status = NvAPI_DRS_GetCurrentGlobalProfile(hSession, &hProfile); - if (status != NVAPI_OK) + NVDRS_PROFILE profileInfo; + profileInfo.version = NVDRS_PROFILE_VER; + profileInfo.isPredefined = 0; + wsprintf(profileInfo.profileName, L"%s", w_app_name.c_str()); + + status = NvAPI_DRS_CreateProfile(hSession, &profileInfo, &hProfile); + if (status != NVAPI_OK) + { + nvapi_error(status); + return; + } + } + + // (4) Check if current exe is part of the profile + std::string exe_name = gDirUtilp->getExecutableFilename(); + NVDRS_APPLICATION profile_application; + profile_application.version = NVDRS_APPLICATION_VER; + + llutf16string w_exe_name = utf8str_to_utf16str(exe_name); + NvAPI_UnicodeString profile_app_name; + wsprintf(profile_app_name, L"%s", w_exe_name.c_str()); + + status = NvAPI_DRS_GetApplicationInfo(hSession, hProfile, profile_app_name, &profile_application); + if (status != NVAPI_OK && status != NVAPI_EXECUTABLE_NOT_FOUND) { nvapi_error(status); return; } + else if (status == NVAPI_EXECUTABLE_NOT_FOUND) + { + LL_INFOS() << "Creating application for " << exe_name << " for NVIDIA application profile" << LL_ENDL; + + // Add this exe to the profile + NVDRS_APPLICATION application; + application.version = NVDRS_APPLICATION_VER; + application.isPredefined = 0; + wsprintf(application.appName, L"%s", w_exe_name.c_str()); + wsprintf(application.userFriendlyName, L"%s", w_exe_name.c_str()); + wsprintf(application.launcher, L"%s", w_exe_name.c_str()); + wsprintf(application.fileInFolder, L"%s", ""); + + status = NvAPI_DRS_CreateApplication(hSession, hProfile, &application); + if (status != NVAPI_OK) + { + nvapi_error(status); + return; + } + + // Save application in case we added one + status = NvAPI_DRS_SaveSettings(hSession); + if (status != NVAPI_OK) + { + nvapi_error(status); + return; + } + } // load settings for querying status = NvAPI_DRS_LoadSettings(hSession); @@ -289,7 +343,7 @@ void ll_nvapi_init(NvDRSSessionHandle hSession) status = NvAPI_DRS_GetSetting(hSession, hProfile, PREFERRED_PSTATE_ID, &drsSetting); if (status == NVAPI_SETTING_NOT_FOUND) { //only override if the user hasn't specifically set this setting - // (4) Specify that we want the VSYNC disabled setting + // (5) Specify that we want to enable maximum performance setting // first we fill the NVDRS_SETTING struct, then we call the function drsSetting.version = NVDRS_SETTING_VER; drsSetting.settingId = PREFERRED_PSTATE_ID; @@ -302,7 +356,7 @@ void ll_nvapi_init(NvDRSSessionHandle hSession) return; } - // (5) Now we apply (or save) our changes to the system + // (6) Now we apply (or save) our changes to the system status = NvAPI_DRS_SaveSettings(hSession); if (status != NVAPI_OK) { @@ -388,11 +442,7 @@ int APIENTRY WINMAIN(HINSTANCE hInstance, } NvDRSSessionHandle hSession = 0; - // Viewer shouldn't need NvAPI and this implementation alters global - // settings instead of viewer-only ones (SL-4126) - // TODO: ideally this should be removed, but temporary disabling - // it with a way to turn it back on in case of issues - static LLCachedControl use_nv_api(gSavedSettings, "NvAPISessionOverride", false); + static LLCachedControl use_nv_api(gSavedSettings, "NvAPICreateApplicationProfile", true); if (use_nv_api) { NvAPI_Status status; -- cgit v1.3