diff options
| author | Brad Kittenbrink <brad@lindenlab.com> | 2022-11-28 14:33:27 -0800 | 
|---|---|---|
| committer | Brad Kittenbrink <brad@lindenlab.com> | 2022-11-28 14:33:27 -0800 | 
| commit | 0b188ac04ecdb1d620a427eacbf5fc089e0accc8 (patch) | |
| tree | 76f6afe9424d79bab8d30060d49aec3166d96ec8 /indra/llcommon/llsys.cpp | |
| parent | e9cd2b320ea2ecaab88e4904f7c81746ea617fea (diff) | |
| parent | c8f08f232a28f4e08b4acf525f0d316a101a0e27 (diff) | |
Merge remote-tracking branch 'origin/main' into DRTVWR-528
Diffstat (limited to 'indra/llcommon/llsys.cpp')
| -rw-r--r-- | indra/llcommon/llsys.cpp | 90 | 
1 files changed, 72 insertions, 18 deletions
diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp index 9b6bb3826c..a8b5c7b3a8 100644 --- a/indra/llcommon/llsys.cpp +++ b/indra/llcommon/llsys.cpp @@ -64,6 +64,7 @@ using namespace llsd;  #   include <psapi.h>               // GetPerformanceInfo() et al.  #	include <VersionHelpers.h>  #elif LL_DARWIN +#   include "llsys_objc.h"  #	include <errno.h>  #	include <sys/sysctl.h>  #	include <sys/utsname.h> @@ -74,12 +75,6 @@ using namespace llsd;  #	include <mach/mach_host.h>  #	include <mach/task.h>  #	include <mach/task_info.h> - -// disable warnings about Gestalt calls being deprecated -// until Apple get's on the ball and provides an alternative -// -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" -  #elif LL_LINUX  #	include <errno.h>  #	include <sys/utsname.h> @@ -278,12 +273,9 @@ LLOSInfo::LLOSInfo() :  	{  		const char * DARWIN_PRODUCT_NAME = "Mac OS X"; -		SInt32 major_version, minor_version, bugfix_version; -		OSErr r1 = Gestalt(gestaltSystemVersionMajor, &major_version); -		OSErr r2 = Gestalt(gestaltSystemVersionMinor, &minor_version); -		OSErr r3 = Gestalt(gestaltSystemVersionBugFix, &bugfix_version); +		S32 major_version, minor_version, bugfix_version = 0; -		if((r1 == noErr) && (r2 == noErr) && (r3 == noErr)) +		if (LLGetDarwinOSInfo(major_version, minor_version, bugfix_version))  		{  			mMajorVer = major_version;  			mMinorVer = minor_version; @@ -597,6 +589,11 @@ LLCPUInfo::LLCPUInfo()  	// proc.WriteInfoTextFile("procInfo.txt");  	mHasSSE = proc.hasSSE();  	mHasSSE2 = proc.hasSSE2(); +    mHasSSE3 = proc.hasSSE3(); +    mHasSSE3S = proc.hasSSE3S(); +    mHasSSE41 = proc.hasSSE41(); +    mHasSSE42 = proc.hasSSE42(); +    mHasSSE4a = proc.hasSSE4a();  	mHasAltivec = proc.hasAltivec();  	mCPUMHz = (F64)proc.getCPUFrequency();  	mFamily = proc.getCPUFamilyName(); @@ -609,6 +606,35 @@ LLCPUInfo::LLCPUInfo()  	}  	mCPUString = out.str();  	LLStringUtil::trim(mCPUString); + +    if (mHasSSE) +    { +        mSSEVersions.append("1"); +    } +    if (mHasSSE2) +    { +        mSSEVersions.append("2"); +    } +    if (mHasSSE3) +    { +        mSSEVersions.append("3"); +    } +    if (mHasSSE3S) +    { +        mSSEVersions.append("3S"); +    } +    if (mHasSSE41) +    { +        mSSEVersions.append("4.1"); +    } +    if (mHasSSE42) +    { +        mSSEVersions.append("4.2"); +    } +    if (mHasSSE4a) +    { +        mSSEVersions.append("4a"); +    }  }  bool LLCPUInfo::hasAltivec() const @@ -626,6 +652,31 @@ bool LLCPUInfo::hasSSE2() const  	return mHasSSE2;  } +bool LLCPUInfo::hasSSE3() const +{ +    return mHasSSE3; +} + +bool LLCPUInfo::hasSSE3S() const +{ +    return mHasSSE3S; +} + +bool LLCPUInfo::hasSSE41() const +{ +    return mHasSSE41; +} + +bool LLCPUInfo::hasSSE42() const +{ +    return mHasSSE42; +} + +bool LLCPUInfo::hasSSE4a() const +{ +    return mHasSSE4a; +} +  F64 LLCPUInfo::getMHz() const  {  	return mCPUMHz; @@ -636,6 +687,11 @@ std::string LLCPUInfo::getCPUString() const  	return mCPUString;  } +const LLSD& LLCPUInfo::getSSEVersions() const +{ +    return mSSEVersions; +} +  void LLCPUInfo::stream(std::ostream& s) const  {  	// gather machine information. @@ -645,6 +701,11 @@ void LLCPUInfo::stream(std::ostream& s) const  	// CPU's attributes regardless of platform  	s << "->mHasSSE:     " << (U32)mHasSSE << std::endl;  	s << "->mHasSSE2:    " << (U32)mHasSSE2 << std::endl; +    s << "->mHasSSE3:    " << (U32)mHasSSE3 << std::endl; +    s << "->mHasSSE3S:    " << (U32)mHasSSE3S << std::endl; +    s << "->mHasSSE41:    " << (U32)mHasSSE41 << std::endl; +    s << "->mHasSSE42:    " << (U32)mHasSSE42 << std::endl; +    s << "->mHasSSE4a:    " << (U32)mHasSSE4a << std::endl;  	s << "->mHasAltivec: " << (U32)mHasAltivec << std::endl;  	s << "->mCPUMHz:     " << mCPUMHz << std::endl;  	s << "->mCPUString:  " << mCPUString << std::endl; @@ -1341,10 +1402,3 @@ BOOL gzip_file(const std::string& srcfile, const std::string& dstfile)  	if (dst != NULL) gzclose(dst);  	return retval;  } - -#if LL_DARWIN -// disable warnings about Gestalt calls being deprecated -// until Apple get's on the ball and provides an alternative -// -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" -#endif  | 
