aboutsummaryrefslogtreecommitdiffstats
path: root/LibOVR/Src/Util/Util_SystemInfo_OSX.mm
diff options
context:
space:
mode:
Diffstat (limited to 'LibOVR/Src/Util/Util_SystemInfo_OSX.mm')
-rw-r--r--LibOVR/Src/Util/Util_SystemInfo_OSX.mm212
1 files changed, 212 insertions, 0 deletions
diff --git a/LibOVR/Src/Util/Util_SystemInfo_OSX.mm b/LibOVR/Src/Util/Util_SystemInfo_OSX.mm
new file mode 100644
index 0000000..8bc735b
--- /dev/null
+++ b/LibOVR/Src/Util/Util_SystemInfo_OSX.mm
@@ -0,0 +1,212 @@
+ /************************************************************************************
+
+
+
+ Filename : Util_SystemInfo_OSX.mm
+
+ Content : Various operations to get information about the mac system
+
+ Created : October 2, 2014
+
+
+
+ Copyright : Copyright 2014 Oculus VR, LLC All Rights reserved.
+
+
+
+ Licensed under the Oculus VR Rift SDK License Version 3.2 (the "License");
+
+ you may not use the Oculus VR Rift SDK except in compliance with the License,
+
+ which is provided at the time of installation or download, or which
+
+ otherwise accompanies this software in either electronic or hard copy form.
+
+
+
+ You may obtain a copy of the License at
+
+
+
+ http://www.oculusvr.com/licenses/LICENSE-3.2
+
+
+
+ Unless required by applicable law or agreed to in writing, the Oculus VR SDK
+
+ distributed under the License is distributed on an "AS IS" BASIS,
+
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
+ See the License for the specific language governing permissions and
+
+ limitations under the License.
+
+
+
+ ************************************************************************************/
+
+
+
+#include "Util_SystemInfo.h"
+
+
+
+#include <Cocoa/Cocoa.h>
+
+
+
+#include <sys/sysctl.h>
+
+#include <sys/types.h>
+
+
+
+#include "../Kernel/OVR_String.h"
+
+#include "../Kernel/OVR_System.h"
+
+
+
+using namespace OVR;
+
+namespace OVR { namespace Util {
+
+
+
+//from http://opensource.apple.com/source/CF/CF-744/CFUtilities.c
+
+OVR::String OSVersionAsString(){
+
+
+
+ NSDictionary *systemVersionDictionary =
+
+ [NSDictionary dictionaryWithContentsOfFile:
+
+ @"/System/Library/CoreServices/SystemVersion.plist"];
+
+
+
+ NSString *systemVersion =
+
+ [systemVersionDictionary objectForKey:@"ProductVersion"];
+
+ return OVR::String([systemVersion UTF8String]);
+
+}
+
+
+
+
+
+//from http://www.starcoder.com/wordpress/2011/10/using-iokit-to-detect-graphics-hardware/
+
+void GetGraphicsCardList(Array< String > &gpus)
+
+{
+
+ // Check the PCI devices for video cards.
+
+ CFMutableDictionaryRef match_dictionary = IOServiceMatching("IOPCIDevice");
+
+
+
+ // Create a iterator to go through the found devices.
+
+ io_iterator_t entry_iterator;
+
+
+
+ if (IOServiceGetMatchingServices(kIOMasterPortDefault,
+
+ match_dictionary,
+
+ &entry_iterator) == kIOReturnSuccess)
+
+ {
+
+ // Actually iterate through the found devices.
+
+ io_registry_entry_t serviceObject;
+
+ while ((serviceObject = IOIteratorNext(entry_iterator)))
+
+ {
+
+ // Put this services object into a dictionary object.
+
+ CFMutableDictionaryRef serviceDictionary;
+
+ if (IORegistryEntryCreateCFProperties(serviceObject,
+
+ &serviceDictionary,
+
+ kCFAllocatorDefault,
+
+ kNilOptions) != kIOReturnSuccess)
+
+ {
+
+ // Failed to create a service dictionary, release and go on.
+
+ IOObjectRelease(serviceObject);
+
+ continue;
+
+ }
+
+
+
+ //
+
+ // that points to a CFDataRef.
+
+ const void *modelarr = CFDictionaryGetValue(serviceDictionary, CFSTR("model"));
+
+ if (modelarr != nil) {
+
+ if(CFGetTypeID(modelarr) == CFDataGetTypeID())
+
+ {
+
+ NSData *data = (__bridge NSData*)(CFDataRef)modelarr;
+
+ NSString *s = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
+
+ gpus.PushBack([s UTF8String]);
+
+ }
+
+ }
+
+
+
+ // Release the dictionary created by IORegistryEntryCreateCFProperties.
+
+ CFRelease(serviceDictionary);
+
+
+
+ // Release the serviceObject returned by IOIteratorNext.
+
+ IOObjectRelease(serviceObject);
+
+ }
+
+
+
+ // Release the entry_iterator created by IOServiceGetMatchingServices.
+
+ IOObjectRelease(entry_iterator);
+
+ }
+
+}
+
+
+
+} } // namespace OVR { namespace Util {
+
+
+