diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2021-03-30 22:42:40 +0300 | 
|---|---|---|
| committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2021-03-31 09:25:27 +0300 | 
| commit | 022ff9819336a9beab744f2d25baa51a249e998e (patch) | |
| tree | 3c9e4b783c688c81b455fea18675643ac5c37340 | |
| parent | d353c9ae0fe575788f537c72dc9d22834bef8bdb (diff) | |
SL-14990 ig75icd64 and other intel crashes
Obsolete driver detection
| -rw-r--r-- | indra/newview/llappviewer.cpp | 40 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/notifications.xml | 6 | 
2 files changed, 46 insertions, 0 deletions
| diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 297925d0f0..ef3759905b 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1115,6 +1115,46 @@ bool LLAppViewer::init()  		}  	} +#if LL_WINDOWS && ADDRESS_SIZE == 64 +    if (gGLManager.mIsIntel) +    { +        // Check intel driver's version +        // Ex: "3.1.0 - Build 8.15.10.2559"; +        std::string version = ll_safe_string((const char *)glGetString(GL_VERSION)); + +        const boost::regex is_intel_string("[0-9].[0-9].[0-9] - Build [0-9]{1,2}.[0-9]{2}.[0-9]{2}.[0-9]{4}"); + +        if (boost::regex_search(version, is_intel_string)) +        { +            // Valid string, extract driver version +            std::size_t found = version.find("Build "); +            std::string driver = version.substr(found + 6); +            S32 v1, v2, v3, v4; +            S32 count = sscanf(driver.c_str(), "%d.%d.%d.%d", &v1, &v2, &v3, &v4); +            if (count > 0 && v1 <= 10) +            { +                LL_INFOS("AppInit") << "Detected obsolete intel driver: " << driver << LL_ENDL; +                LLUIString details = LLNotifications::instance().getGlobalString("UnsupportedIntelDriver"); +                std::string gpu_name = ll_safe_string((const char *)glGetString(GL_RENDERER)); +                details.setArg("[VERSION]", driver); +                details.setArg("[GPUNAME]", gpu_name); +                S32 button = OSMessageBox(details.getString(), +                                          LLStringUtil::null, +                                          OSMB_YESNO); +                if (OSBTN_YES == button && gViewerWindow) +                { +                    std::string url = LLWeb::escapeURL(LLTrans::getString("IntelDriverPage")); +                    if (gViewerWindow->getWindow()) +                    { +                        gViewerWindow->getWindow()->spawnWebBrowser(url, false); +                    } +                } +            } +        } +    } +#endif + +    // Obsolete? mExpectedGLVersion is always zero  #if LL_WINDOWS  	if (gGLManager.mGLVersion < LLFeatureManager::getInstance()->getExpectedGLVersion())  	{ diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 2f4da4f9b7..cac41dac2f 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -9580,6 +9580,12 @@ You do not appear to have the proper hardware requirements for [APP_NAME]. [APP_  If you continue to have problems, please visit the [SUPPORT_SITE].    </global> +  <global name="UnsupportedIntelDriver"> +The installed Intel graphics driver for [GPUNAME], version [VERSION], is significantly out of date and is known to cause excessive rates of program crashes. You are strongly advised to update to a current Intel driver + +Do you want to check the Intel driver website? +  </global> +    <global name="UnsupportedCPUAmount">  796    </global> | 
