You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
1.2 KiB
C++
89 lines
1.2 KiB
C++
// This code is in the public domain -- castanyo@yahoo.es
|
|
|
|
#include <nvcore/CpuInfo.h>
|
|
#include <nvcore/Debug.h>
|
|
|
|
using namespace nv;
|
|
|
|
#if NV_OS_WIN32
|
|
|
|
#define _WIN32_WINNT 0x0501
|
|
#define WIN32_LEAN_AND_MEAN
|
|
#include <windows.h>
|
|
|
|
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
|
|
|
|
static bool isWow64()
|
|
{
|
|
LPFN_ISWOW64PROCESS fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle(TEXT("kernel32")), "IsWow64Process");
|
|
|
|
BOOL bIsWow64 = FALSE;
|
|
|
|
if (NULL != fnIsWow64Process)
|
|
{
|
|
if (!fnIsWow64Process(GetCurrentProcess(), &bIsWow64))
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return bIsWow64 == TRUE;
|
|
}
|
|
|
|
#endif // NV_OS_WIN32
|
|
|
|
|
|
|
|
uint CpuInfo::processorCount()
|
|
{
|
|
#if NV_OS_WIN32
|
|
SYSTEM_INFO sysInfo;
|
|
|
|
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
|
|
|
|
if (isWow64())
|
|
{
|
|
GetNativeSystemInfo(&sysInfo);
|
|
}
|
|
else
|
|
{
|
|
GetSystemInfo(&sysInfo);
|
|
}
|
|
|
|
uint count = (uint)sysInfo.dwNumberOfProcessors;
|
|
nvDebugCheck(count >= 1);
|
|
|
|
return count;
|
|
#else
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
uint CpuInfo::coreCount()
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
bool CpuInfo::hasMMX()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool CpuInfo::hasSSE()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool CpuInfo::hasSSE2()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool CpuInfo::hasSSE3()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
|
|
|