summaryrefslogtreecommitdiff
path: root/Source/Core/Common/MemoryUtil.cpp
diff options
context:
space:
mode:
authorMarkus Wick <markus+github@selfnet.de>2015-05-26 13:30:26 +0200
committerMarkus Wick <markus+github@selfnet.de>2015-05-26 13:30:26 +0200
commita6412fb41eb3aa2a1c4109e6fbd0c7e69030d717 (patch)
tree75986c32396564ffb7b391fb86d403ac7ca4b465 /Source/Core/Common/MemoryUtil.cpp
parent5d3a248811e3c836cc34d7af1a11de91f3132829 (diff)
parent562b9d4a9f3710a65a2987a3c1a88e00778c6d67 (diff)
Merge pull request #2162 from degasus/prefetch_tex
CustomTexture: prefetch all available textures
Diffstat (limited to 'Source/Core/Common/MemoryUtil.cpp')
-rw-r--r--Source/Core/Common/MemoryUtil.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/Source/Core/Common/MemoryUtil.cpp b/Source/Core/Common/MemoryUtil.cpp
index 9455212f01..510b258b09 100644
--- a/Source/Core/Common/MemoryUtil.cpp
+++ b/Source/Core/Common/MemoryUtil.cpp
@@ -19,6 +19,12 @@
#else
#include <stdio.h>
#include <sys/mman.h>
+#include <sys/types.h>
+#ifdef __APPLE__
+#include <sys/sysctl.h>
+#else
+#include <sys/sysinfo.h>
+#endif
#endif
// Valgrind doesn't support MAP_32BIT.
@@ -241,3 +247,26 @@ std::string MemUsage()
return "";
#endif
}
+
+
+size_t MemPhysical()
+{
+#ifdef _WIN32
+ MEMORYSTATUSEX memInfo;
+ memInfo.dwLength = sizeof(MEMORYSTATUSEX);
+ GlobalMemoryStatusEx(&memInfo);
+ return memInfo.ullTotalPhys;
+#elif defined(__APPLE__)
+ int mib[2];
+ size_t physical_memory;
+ mib[0] = CTL_HW;
+ mib[1] = HW_MEMSIZE;
+ size_t length = sizeof(size_t);
+ sysctl(mib, 2, &physical_memory, &length, NULL, 0);
+ return physical_memory;
+#else
+ struct sysinfo memInfo;
+ sysinfo (&memInfo);
+ return (size_t)memInfo.totalram * memInfo.mem_unit;
+#endif
+}