The open source OpenXR runtime
at main 401 lines 14 kB view raw
1namespace tracy 2{ 3 4#if defined __linux__ && defined __ARM_ARCH 5 6static const char* DecodeArmImplementer( uint32_t v ) 7{ 8 static char buf[16]; 9 switch( v ) 10 { 11 case 0x41: return "ARM"; 12 case 0x42: return "Broadcom"; 13 case 0x43: return "Cavium"; 14 case 0x44: return "DEC"; 15 case 0x46: return "Fujitsu"; 16 case 0x48: return "HiSilicon"; 17 case 0x49: return "Infineon"; 18 case 0x4d: return "Motorola"; 19 case 0x4e: return "Nvidia"; 20 case 0x50: return "Applied Micro"; 21 case 0x51: return "Qualcomm"; 22 case 0x53: return "Samsung"; 23 case 0x54: return "Texas Instruments"; 24 case 0x56: return "Marvell"; 25 case 0x61: return "Apple"; 26 case 0x66: return "Faraday"; 27 case 0x68: return "HXT"; 28 case 0x69: return "Intel"; 29 case 0xc0: return "Ampere Computing"; 30 default: break; 31 } 32 sprintf( buf, "0x%x", v ); 33 return buf; 34} 35 36static const char* DecodeArmPart( uint32_t impl, uint32_t part ) 37{ 38 static char buf[16]; 39 switch( impl ) 40 { 41 case 0x41: // ARM 42 switch( part ) 43 { 44 case 0x810: return "810"; 45 case 0x920: return "920"; 46 case 0x922: return "922"; 47 case 0x926: return "926"; 48 case 0x940: return "940"; 49 case 0x946: return "946"; 50 case 0x966: return "966"; 51 case 0xa20: return "1020"; 52 case 0xa22: return "1022"; 53 case 0xa26: return "1026"; 54 case 0xb02: return "11 MPCore"; 55 case 0xb36: return "1136"; 56 case 0xb56: return "1156"; 57 case 0xb76: return "1176"; 58 case 0xc05: return " Cortex-A5"; 59 case 0xc07: return " Cortex-A7"; 60 case 0xc08: return " Cortex-A8"; 61 case 0xc09: return " Cortex-A9"; 62 case 0xc0c: return " Cortex-A12"; 63 case 0xc0d: return " Rockchip RK3288"; 64 case 0xc0e: return " Cortex-A17"; 65 case 0xc0f: return " Cortex-A15"; 66 case 0xc14: return " Cortex-R4"; 67 case 0xc15: return " Cortex-R5"; 68 case 0xc17: return " Cortex-R7"; 69 case 0xc18: return " Cortex-R8"; 70 case 0xc20: return " Cortex-M0"; 71 case 0xc21: return " Cortex-M1"; 72 case 0xc23: return " Cortex-M3"; 73 case 0xc24: return " Cortex-M4"; 74 case 0xc27: return " Cortex-M7"; 75 case 0xc60: return " Cortex-M0+"; 76 case 0xd00: return " AArch64 simulator"; 77 case 0xd01: return " Cortex-A32"; 78 case 0xd02: return " Cortex-A34"; 79 case 0xd03: return " Cortex-A53"; 80 case 0xd04: return " Cortex-A35"; 81 case 0xd05: return " Cortex-A55"; 82 case 0xd06: return " Cortex-A65"; 83 case 0xd07: return " Cortex-A57"; 84 case 0xd08: return " Cortex-A72"; 85 case 0xd09: return " Cortex-A73"; 86 case 0xd0a: return " Cortex-A75"; 87 case 0xd0b: return " Cortex-A76"; 88 case 0xd0c: return " Neoverse N1"; 89 case 0xd0d: return " Cortex-A77"; 90 case 0xd0e: return " Cortex-A76AE"; 91 case 0xd0f: return " AEMv8"; 92 case 0xd13: return " Cortex-R52"; 93 case 0xd20: return " Cortex-M23"; 94 case 0xd21: return " Cortex-M33"; 95 case 0xd22: return " Cortex-M55"; 96 case 0xd40: return " Neoverse V1"; 97 case 0xd41: return " Cortex-A78"; 98 case 0xd42: return " Cortex-A78AE"; 99 case 0xd43: return " Cortex-A65AE"; 100 case 0xd44: return " Cortex-X1"; 101 case 0xd47: return " Cortex-A710"; 102 case 0xd48: return " Cortex-X2"; 103 case 0xd49: return " Neoverse N2"; 104 case 0xd4a: return " Neoverse E1"; 105 case 0xd4b: return " Cortex-A78C"; 106 case 0xd4c: return " Cortex-X1C"; 107 default: break; 108 } 109 case 0x42: // Broadcom 110 switch( part ) 111 { 112 case 0xf: return " Brahma B15"; 113 case 0x100: return " Brahma B53"; 114 case 0x516: return " ThunderX2"; 115 default: break; 116 } 117 case 0x43: // Cavium 118 switch( part ) 119 { 120 case 0xa0: return " ThunderX"; 121 case 0xa1: return " ThunderX 88XX"; 122 case 0xa2: return " ThunderX 81XX"; 123 case 0xa3: return " ThunderX 83XX"; 124 case 0xaf: return " ThunderX2 99xx"; 125 case 0xb0: return " OcteonTX2"; 126 case 0xb1: return " OcteonTX2 T98"; 127 case 0xb2: return " OcteonTX2 T96"; 128 case 0xb3: return " OcteonTX2 F95"; 129 case 0xb4: return " OcteonTX2 F95N"; 130 case 0xb5: return " OcteonTX2 F95MM"; 131 case 0xb6: return " OcteonTX2 F95O"; 132 case 0xb8: return " ThunderX3 T110"; 133 default: break; 134 } 135 case 0x44: // DEC 136 switch( part ) 137 { 138 case 0xa10: return " SA110"; 139 case 0xa11: return " SA1100"; 140 default: break; 141 } 142 case 0x46: // Fujitsu 143 switch( part ) 144 { 145 case 0x1: return " A64FX"; 146 default: break; 147 } 148 case 0x48: // HiSilicon 149 switch( part ) 150 { 151 case 0xd01: return " TSV100"; 152 case 0xd40: return " Kirin 980"; 153 default: break; 154 } 155 case 0x4e: // Nvidia 156 switch( part ) 157 { 158 case 0x0: return " Denver"; 159 case 0x3: return " Denver 2"; 160 case 0x4: return " Carmel"; 161 default: break; 162 } 163 case 0x50: // Applied Micro 164 switch( part ) 165 { 166 case 0x0: return " X-Gene"; 167 default: break; 168 } 169 case 0x51: // Qualcomm 170 switch( part ) 171 { 172 case 0xf: return " Scorpion"; 173 case 0x2d: return " Scorpion"; 174 case 0x4d: return " Krait"; 175 case 0x6f: return " Krait"; 176 case 0x200: return " Kryo"; 177 case 0x201: return " Kryo Silver (Snapdragon 821)"; 178 case 0x205: return " Kryo Gold"; 179 case 0x211: return " Kryo Silver (Snapdragon 820)"; 180 case 0x800: return " Kryo 260 / 280 Gold"; 181 case 0x801: return " Kryo 260 / 280 Silver"; 182 case 0x802: return " Kryo 385 Gold"; 183 case 0x803: return " Kryo 385 Silver"; 184 case 0x804: return " Kryo 485 Gold"; 185 case 0x805: return " Kryo 4xx/5xx Silver"; 186 case 0xc00: return " Falkor"; 187 case 0xc01: return " Saphira"; 188 default: break; 189 } 190 case 0x53: // Samsung 191 switch( part ) 192 { 193 case 0x1: return " Exynos M1/M2"; 194 case 0x2: return " Exynos M3"; 195 case 0x3: return " Exynos M4"; 196 case 0x4: return " Exynos M5"; 197 default: break; 198 } 199 case 0x54: // Texas Instruments 200 switch( part ) 201 { 202 case 0x925: return " TI925"; 203 default: break; 204 } 205 case 0x56: // Marvell 206 switch( part ) 207 { 208 case 0x131: return " Feroceon 88FR131"; 209 case 0x581: return " PJ4 / PJ4B"; 210 case 0x584: return " PJ4B-MP / PJ4C"; 211 default: break; 212 } 213 case 0x61: // Apple 214 switch( part ) 215 { 216 case 0x1: return " Cyclone"; 217 case 0x2: return " Typhoon"; 218 case 0x3: return " Typhoon/Capri"; 219 case 0x4: return " Twister"; 220 case 0x5: return " Twister/Elba/Malta"; 221 case 0x6: return " Hurricane"; 222 case 0x7: return " Hurricane/Myst"; 223 case 0x22: return " M1 Icestorm"; 224 case 0x23: return " M1 Firestorm"; 225 case 0x24: return " M1 Icestorm Pro"; 226 case 0x25: return " M1 Firestorm Pro"; 227 case 0x28: return " M1 Icestorm Max"; 228 case 0x29: return " M1 Firestorm Max"; 229 default: break; 230 } 231 case 0x66: // Faraday 232 switch( part ) 233 { 234 case 0x526: return " FA526"; 235 case 0x626: return " FA626"; 236 default: break; 237 } 238 case 0x68: // HXT 239 switch( part ) 240 { 241 case 0x0: return " Phecda"; 242 default: break; 243 } 244 case 0xc0: // Ampere Computing 245 switch( part ) 246 { 247 case 0xac3: return " Ampere1"; 248 default: break; 249 } 250 default: break; 251 } 252 sprintf( buf, " 0x%x", part ); 253 return buf; 254} 255 256#elif defined __APPLE__ && TARGET_OS_IPHONE == 1 257 258static const char* DecodeIosDevice( const char* id ) 259{ 260 static const char* DeviceTable[] = { 261 "i386", "32-bit simulator", 262 "x86_64", "64-bit simulator", 263 "iPhone1,1", "iPhone", 264 "iPhone1,2", "iPhone 3G", 265 "iPhone2,1", "iPhone 3GS", 266 "iPhone3,1", "iPhone 4 (GSM)", 267 "iPhone3,2", "iPhone 4 (GSM)", 268 "iPhone3,3", "iPhone 4 (CDMA)", 269 "iPhone4,1", "iPhone 4S", 270 "iPhone5,1", "iPhone 5 (A1428)", 271 "iPhone5,2", "iPhone 5 (A1429)", 272 "iPhone5,3", "iPhone 5c (A1456/A1532)", 273 "iPhone5,4", "iPhone 5c (A1507/A1516/1526/A1529)", 274 "iPhone6,1", "iPhone 5s (A1433/A1533)", 275 "iPhone6,2", "iPhone 5s (A1457/A1518/A1528/A1530)", 276 "iPhone7,1", "iPhone 6 Plus", 277 "iPhone7,2", "iPhone 6", 278 "iPhone8,1", "iPhone 6S", 279 "iPhone8,2", "iPhone 6S Plus", 280 "iPhone8,4", "iPhone SE", 281 "iPhone9,1", "iPhone 7 (CDMA)", 282 "iPhone9,2", "iPhone 7 Plus (CDMA)", 283 "iPhone9,3", "iPhone 7 (GSM)", 284 "iPhone9,4", "iPhone 7 Plus (GSM)", 285 "iPhone10,1", "iPhone 8 (CDMA)", 286 "iPhone10,2", "iPhone 8 Plus (CDMA)", 287 "iPhone10,3", "iPhone X (CDMA)", 288 "iPhone10,4", "iPhone 8 (GSM)", 289 "iPhone10,5", "iPhone 8 Plus (GSM)", 290 "iPhone10,6", "iPhone X (GSM)", 291 "iPhone11,2", "iPhone XS", 292 "iPhone11,4", "iPhone XS Max", 293 "iPhone11,6", "iPhone XS Max China", 294 "iPhone11,8", "iPhone XR", 295 "iPhone12,1", "iPhone 11", 296 "iPhone12,3", "iPhone 11 Pro", 297 "iPhone12,5", "iPhone 11 Pro Max", 298 "iPhone12,8", "iPhone SE 2nd Gen", 299 "iPhone13,1", "iPhone 12 Mini", 300 "iPhone13,2", "iPhone 12", 301 "iPhone13,3", "iPhone 12 Pro", 302 "iPhone13,4", "iPhone 12 Pro Max", 303 "iPhone14,2", "iPhone 13 Pro", 304 "iPhone14,3", "iPhone 13 Pro Max", 305 "iPhone14,4", "iPhone 13 Mini", 306 "iPhone14,5", "iPhone 13", 307 "iPhone14,6", "iPhone SE 3rd Gen", 308 "iPad1,1", "iPad (A1219/A1337)", 309 "iPad2,1", "iPad 2 (A1395)", 310 "iPad2,2", "iPad 2 (A1396)", 311 "iPad2,3", "iPad 2 (A1397)", 312 "iPad2,4", "iPad 2 (A1395)", 313 "iPad2,5", "iPad Mini (A1432)", 314 "iPad2,6", "iPad Mini (A1454)", 315 "iPad2,7", "iPad Mini (A1455)", 316 "iPad3,1", "iPad 3 (A1416)", 317 "iPad3,2", "iPad 3 (A1403)", 318 "iPad3,3", "iPad 3 (A1430)", 319 "iPad3,4", "iPad 4 (A1458)", 320 "iPad3,5", "iPad 4 (A1459)", 321 "iPad3,6", "iPad 4 (A1460)", 322 "iPad4,1", "iPad Air (A1474)", 323 "iPad4,2", "iPad Air (A1475)", 324 "iPad4,3", "iPad Air (A1476)", 325 "iPad4,4", "iPad Mini 2 (A1489)", 326 "iPad4,5", "iPad Mini 2 (A1490)", 327 "iPad4,6", "iPad Mini 2 (A1491)", 328 "iPad4,7", "iPad Mini 3 (A1599)", 329 "iPad4,8", "iPad Mini 3 (A1600)", 330 "iPad4,9", "iPad Mini 3 (A1601)", 331 "iPad5,1", "iPad Mini 4 (A1538)", 332 "iPad5,2", "iPad Mini 4 (A1550)", 333 "iPad5,3", "iPad Air 2 (A1566)", 334 "iPad5,4", "iPad Air 2 (A1567)", 335 "iPad6,3", "iPad Pro 9.7\" (A1673)", 336 "iPad6,4", "iPad Pro 9.7\" (A1674)", 337 "iPad6,5", "iPad Pro 9.7\" (A1675)", 338 "iPad6,7", "iPad Pro 12.9\" (A1584)", 339 "iPad6,8", "iPad Pro 12.9\" (A1652)", 340 "iPad6,11", "iPad 5th gen (A1822)", 341 "iPad6,12", "iPad 5th gen (A1823)", 342 "iPad7,1", "iPad Pro 12.9\" 2nd gen (A1670)", 343 "iPad7,2", "iPad Pro 12.9\" 2nd gen (A1671/A1821)", 344 "iPad7,3", "iPad Pro 10.5\" (A1701)", 345 "iPad7,4", "iPad Pro 10.5\" (A1709)", 346 "iPad7,5", "iPad 6th gen (A1893)", 347 "iPad7,6", "iPad 6th gen (A1954)", 348 "iPad7,11", "iPad 7th gen 10.2\" (Wifi)", 349 "iPad7,12", "iPad 7th gen 10.2\" (Wifi+Cellular)", 350 "iPad8,1", "iPad Pro 11\" (A1980)", 351 "iPad8,2", "iPad Pro 11\" (A1980)", 352 "iPad8,3", "iPad Pro 11\" (A1934/A1979/A2013)", 353 "iPad8,4", "iPad Pro 11\" (A1934/A1979/A2013)", 354 "iPad8,5", "iPad Pro 12.9\" 3rd gen (A1876)", 355 "iPad8,6", "iPad Pro 12.9\" 3rd gen (A1876)", 356 "iPad8,7", "iPad Pro 12.9\" 3rd gen (A1895/A1983/A2014)", 357 "iPad8,8", "iPad Pro 12.9\" 3rd gen (A1895/A1983/A2014)", 358 "iPad8,9", "iPad Pro 11\" 2nd gen (Wifi)", 359 "iPad8,10", "iPad Pro 11\" 2nd gen (Wifi+Cellular)", 360 "iPad8,11", "iPad Pro 12.9\" 4th gen (Wifi)", 361 "iPad8,12", "iPad Pro 12.9\" 4th gen (Wifi+Cellular)", 362 "iPad11,1", "iPad Mini 5th gen (A2133)", 363 "iPad11,2", "iPad Mini 5th gen (A2124/A2125/A2126)", 364 "iPad11,3", "iPad Air 3rd gen (A2152)", 365 "iPad11,4", "iPad Air 3rd gen (A2123/A2153/A2154)", 366 "iPad11,6", "iPad 8th gen (WiFi)", 367 "iPad11,7", "iPad 8th gen (WiFi+Cellular)", 368 "iPad13,1", "iPad Air 4th gen (WiFi)", 369 "iPad13,2", "iPad Air 4th gen (WiFi+Cellular)", 370 "iPad13,4", "iPad Pro 11\" 3rd gen", 371 "iPad13,5", "iPad Pro 11\" 3rd gen", 372 "iPad13,6", "iPad Pro 11\" 3rd gen", 373 "iPad13,7", "iPad Pro 11\" 3rd gen", 374 "iPad13,8", "iPad Pro 12.9\" 5th gen", 375 "iPad13,9", "iPad Pro 12.9\" 5th gen", 376 "iPad13,10", "iPad Pro 12.9\" 5th gen", 377 "iPad13,11", "iPad Pro 12.9\" 5th gen", 378 "iPad13,16", "iPad Air 5th Gen (WiFi)", 379 "iPad13,17", "iPad Air 5th Gen (WiFi+Cellular)", 380 "iPod1,1", "iPod Touch", 381 "iPod2,1", "iPod Touch 2nd gen", 382 "iPod3,1", "iPod Touch 3rd gen", 383 "iPod4,1", "iPod Touch 4th gen", 384 "iPod5,1", "iPod Touch 5th gen", 385 "iPod7,1", "iPod Touch 6th gen", 386 "iPod9,1", "iPod Touch 7th gen", 387 nullptr 388 }; 389 390 auto ptr = DeviceTable; 391 while( *ptr ) 392 { 393 if( strcmp( ptr[0], id ) == 0 ) return ptr[1]; 394 ptr += 2; 395 } 396 return id; 397} 398 399#endif 400 401}