Post

Replies

Boosts

Views

Activity

Reading EDID data on new Apple M1 devices
Can anyone provide an example (preferably in C++) of how to read the EDID data for the current display? I can do it on an Intel based Mac, the same code does not work on the new Apple M1 devices. The Intel code looks something like: CFMutableDictionaryRef matching = IOServiceMatching("IODisplayConnect"); io_iterator_t iter = 99; kern_return_t err = IOServiceGetMatchingServices( kIOMasterPortDefault, matching, &iter ); io_service_t serv; serv = IOIteratorNext( iter ); CFDictionaryRef displayInfo; displayInfo = IODisplayCreateInfoDictionary( serv, kIODisplayOnlyPreferredName ); ( . . . ) It appears that the new Apple M1 devices have a new video architecture, so the IOServiceMatching / IOServiceGetMatchingServices on longer works.
2
0
1.4k
Nov ’20
IOServiceGetMatchingServices returning empty iterator
The following code sequence works on Catalina and on Intel Big Sur devices, it does not work on the new Apple M1 devices running Big Sur. CFMutableDictionaryRef matching = IOServiceMatching("IODisplayConnect"); io_iterator_t iter = 99; kern_return_t err = IOServiceGetMatchingServices( kIOMasterPortDefault, matching, &iter ); The "matching" variable seems valid: matching CFMutableDictionaryRef 1 key/value pair [0] "IOProviderClass" : "IODisplayConnect" 		key __NSCFConstantString * "IOProviderClass" 		value __NSCFString * "IODisplayConnect" The call to "IOServiceGetMatchingServices" sets the "iter" value to 0. If I use another class name in the "IOServiceMatching" call, say "IOMediaBSDClient", "IOServiceGetMatchingServices" returns a valid iterator. Would Big Sur on Apple M1 devices need additional calls, or has this service class been deprecated? Using "IODisplayConnect" allows me to get display information via "IODisplayCreateInfoDictionary". Suggestions...
10
0
4.9k
Nov ’20