diff --git a/doc/contributions.txt b/doc/contributions.txt index 26ccf25c2c..ca780b6119 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -239,6 +239,7 @@ Ansariel Hiller SL-15227 SL-15398 SL-18432 + SL-4126 Aralara Rajal Arare Chantilly CHUIBUG-191 diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index aa4bbf82f3..07fd97e1b0 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -11187,16 +11187,16 @@ Change of this parameter will affect the layout of buttons in notification toast 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 6e3d821858..c22aea549a 100644 --- a/indra/newview/llappviewerwin32.cpp +++ b/indra/newview/llappviewerwin32.cpp @@ -308,25 +308,8 @@ 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()); - // FIRE-16667 / BUG-9906: Viewer messing up the global NVIDIA driver profile - //status = NvAPI_DRS_SetCurrentGlobalProfile(hSession, profile_name); - //if (status != NVAPI_OK) - //{ - // nvapi_error(status); - // return; - //} - - //// (3) Obtain the current profile. - //NvDRSProfileHandle hProfile = 0; - //status = NvAPI_DRS_GetCurrentGlobalProfile(hSession, &hProfile); - //if (status != NVAPI_OK) - //{ - // nvapi_error(status); - // return; - //} - NvDRSProfileHandle hProfile = 0; - // Check if we already have a Firestorm profile + // (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) { @@ -335,8 +318,8 @@ void ll_nvapi_init(NvDRSSessionHandle hSession) } else if (status == NVAPI_PROFILE_NOT_FOUND) { - // Don't have a Firestorm profile yet - create one - LL_INFOS() << "Creating Firestorm profile for NVIDIA driver" << LL_ENDL; + // Don't have an application profile yet - create one + LL_INFOS() << "Creating NVIDIA application profile" << LL_ENDL; NVDRS_PROFILE profileInfo; profileInfo.version = NVDRS_PROFILE_VER; @@ -351,7 +334,7 @@ void ll_nvapi_init(NvDRSSessionHandle hSession) } } - // Check if current exe is part of the profile + // (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; @@ -368,7 +351,7 @@ void ll_nvapi_init(NvDRSSessionHandle hSession) } else if (status == NVAPI_EXECUTABLE_NOT_FOUND) { - LL_INFOS() << "Creating application for " << exe_name << " for NVIDIA driver" << LL_ENDL; + LL_INFOS() << "Creating application for " << exe_name << " for NVIDIA application profile" << LL_ENDL; // Add this exe to the profile NVDRS_APPLICATION application; @@ -388,13 +371,12 @@ void ll_nvapi_init(NvDRSSessionHandle hSession) // Save application in case we added one status = NvAPI_DRS_SaveSettings(hSession); - if (status != NVAPI_OK) + if (status != NVAPI_OK) { nvapi_error(status); return; } } - // // load settings for querying status = NvAPI_DRS_LoadSettings(hSession); @@ -410,7 +392,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; @@ -423,7 +405,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) { @@ -508,15 +490,10 @@ int APIENTRY WINMAIN(HINSTANCE hInstance, LL_WARNS() << "Application init failed." << LL_ENDL; return -1; } - + 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 - // We fixed this the proper way and create an application profile instead of messing with the global settings - //static LLCachedControl use_nv_api(gSavedSettings, "NvAPISessionOverride", false); - //if (use_nv_api) + static LLCachedControl use_nv_api(gSavedSettings, "NvAPICreateApplicationProfile", true); + if (use_nv_api) { NvAPI_Status status;