tracy-client-sys 0.28.0

Low level bindings to the client libraries for the Tracy profiler
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
namespace tracy
{

#if defined __linux__ && defined __ARM_ARCH

static const char* DecodeArmImplementer( uint32_t v )
{
    static char buf[16];
    switch( v )
    {
    case 0x41: return "ARM";
    case 0x42: return "Broadcom";
    case 0x43: return "Cavium";
    case 0x44: return "DEC";
    case 0x46: return "Fujitsu";
    case 0x48: return "HiSilicon";
    case 0x49: return "Infineon";
    case 0x4d: return "Motorola";
    case 0x4e: return "Nvidia";
    case 0x50: return "Applied Micro";
    case 0x51: return "Qualcomm";
    case 0x53: return "Samsung";
    case 0x54: return "Texas Instruments";
    case 0x56: return "Marvell";
    case 0x61: return "Apple";
    case 0x66: return "Faraday";
    case 0x68: return "HXT";
    case 0x69: return "Intel";
    case 0xc0: return "Ampere Computing";
    default: break;
    }
    sprintf( buf, "0x%x", v );
    return buf;
}

static const char* DecodeArmPart( uint32_t impl, uint32_t part )
{
    static char buf[16];
    switch( impl )
    {
    case 0x41:  // ARM
        switch( part )
        {
        case 0x810: return "810";
        case 0x920: return "920";
        case 0x922: return "922";
        case 0x926: return "926";
        case 0x940: return "940";
        case 0x946: return "946";
        case 0x966: return "966";
        case 0xa20: return "1020";
        case 0xa22: return "1022";
        case 0xa26: return "1026";
        case 0xb02: return "11 MPCore";
        case 0xb36: return "1136";
        case 0xb56: return "1156";
        case 0xb76: return "1176";
        case 0xc05: return " Cortex-A5";
        case 0xc07: return " Cortex-A7";
        case 0xc08: return " Cortex-A8";
        case 0xc09: return " Cortex-A9";
        case 0xc0c: return " Cortex-A12";
        case 0xc0d: return " Rockchip RK3288";
        case 0xc0e: return " Cortex-A17";
        case 0xc0f: return " Cortex-A15";
        case 0xc14: return " Cortex-R4";
        case 0xc15: return " Cortex-R5";
        case 0xc17: return " Cortex-R7";
        case 0xc18: return " Cortex-R8";
        case 0xc20: return " Cortex-M0";
        case 0xc21: return " Cortex-M1";
        case 0xc23: return " Cortex-M3";
        case 0xc24: return " Cortex-M4";
        case 0xc27: return " Cortex-M7";
        case 0xc60: return " Cortex-M0+";
        case 0xd00: return " AArch64 simulator";
        case 0xd01: return " Cortex-A32";
        case 0xd02: return " Cortex-A34";
        case 0xd03: return " Cortex-A53";
        case 0xd04: return " Cortex-A35";
        case 0xd05: return " Cortex-A55";
        case 0xd06: return " Cortex-A65";
        case 0xd07: return " Cortex-A57";
        case 0xd08: return " Cortex-A72";
        case 0xd09: return " Cortex-A73";
        case 0xd0a: return " Cortex-A75";
        case 0xd0b: return " Cortex-A76";
        case 0xd0c: return " Neoverse N1";
        case 0xd0d: return " Cortex-A77";
        case 0xd0e: return " Cortex-A76AE";
        case 0xd0f: return " AEMv8";
        case 0xd13: return " Cortex-R52";
        case 0xd20: return " Cortex-M23";
        case 0xd21: return " Cortex-M33";
        case 0xd22: return " Cortex-M55";
        case 0xd40: return " Neoverse V1";
        case 0xd41: return " Cortex-A78";
        case 0xd42: return " Cortex-A78AE";
        case 0xd43: return " Cortex-A65AE";
        case 0xd44: return " Cortex-X1";
        case 0xd47: return " Cortex-A710";
        case 0xd48: return " Cortex-X2";
        case 0xd49: return " Neoverse N2";
        case 0xd4a: return " Neoverse E1";
        case 0xd4b: return " Cortex-A78C";
        case 0xd4c: return " Cortex-X1C";
        default: break;
        }
    case 0x42:  // Broadcom
        switch( part )
        {
        case 0xf: return " Brahma B15";
        case 0x100: return " Brahma B53";
        case 0x516: return " ThunderX2";
        default: break;
        }
    case 0x43:  // Cavium
        switch( part )
        {
        case 0xa0: return " ThunderX";
        case 0xa1: return " ThunderX 88XX";
        case 0xa2: return " ThunderX 81XX";
        case 0xa3: return " ThunderX 83XX";
        case 0xaf: return " ThunderX2 99xx";
        case 0xb0: return " OcteonTX2";
        case 0xb1: return " OcteonTX2 T98";
        case 0xb2: return " OcteonTX2 T96";
        case 0xb3: return " OcteonTX2 F95";
        case 0xb4: return " OcteonTX2 F95N";
        case 0xb5: return " OcteonTX2 F95MM";
        case 0xb6: return " OcteonTX2 F95O";
        case 0xb8: return " ThunderX3 T110";
        default: break;
        }
    case 0x44:  // DEC
        switch( part )
        {
        case 0xa10: return " SA110";
        case 0xa11: return " SA1100";
        default: break;
        }
    case 0x46:  // Fujitsu
        switch( part )
        {
        case 0x1: return " A64FX";
        default: break;
        }
    case 0x48:  // HiSilicon
        switch( part )
        {
        case 0xd01: return " TSV100";
        case 0xd40: return " Kirin 980";
        default: break;
        }
    case 0x4e:  // Nvidia
        switch( part )
        {
        case 0x0: return " Denver";
        case 0x3: return " Denver 2";
        case 0x4: return " Carmel";
        default: break;
        }
    case 0x50:  // Applied Micro
        switch( part )
        {
        case 0x0: return " X-Gene";
        default: break;
        }
    case 0x51:  // Qualcomm
        switch( part )
        {
        case 0xf: return " Scorpion";
        case 0x2d: return " Scorpion";
        case 0x4d: return " Krait";
        case 0x6f: return " Krait";
        case 0x200: return " Kryo";
        case 0x201: return " Kryo Silver (Snapdragon 821)";
        case 0x205: return " Kryo Gold";
        case 0x211: return " Kryo Silver (Snapdragon 820)";
        case 0x800: return " Kryo 260 / 280 Gold";
        case 0x801: return " Kryo 260 / 280 Silver";
        case 0x802: return " Kryo 385 Gold";
        case 0x803: return " Kryo 385 Silver";
        case 0x804: return " Kryo 485 Gold";
        case 0x805: return " Kryo 4xx/5xx Silver";
        case 0xc00: return " Falkor";
        case 0xc01: return " Saphira";
        default: break;
        }
    case 0x53:  // Samsung
        switch( part )
        {
        case 0x1: return " Exynos M1/M2";
        case 0x2: return " Exynos M3";
        case 0x3: return " Exynos M4";
        case 0x4: return " Exynos M5";
        default: break;
        }
    case 0x54:  // Texas Instruments
        switch( part )
        {
        case 0x925: return " TI925";
        default: break;
        }
    case 0x56:  // Marvell
        switch( part )
        {
        case 0x131: return " Feroceon 88FR131";
        case 0x581: return " PJ4 / PJ4B";
        case 0x584: return " PJ4B-MP / PJ4C";
        default: break;
        }
    case 0x61:  // Apple
        switch( part )
        {
        case 0x1: return " Cyclone";
        case 0x2: return " Typhoon";
        case 0x3: return " Typhoon/Capri";
        case 0x4: return " Twister";
        case 0x5: return " Twister/Elba/Malta";
        case 0x6: return " Hurricane";
        case 0x7: return " Hurricane/Myst";
        case 0x22: return " M1 Icestorm";
        case 0x23: return " M1 Firestorm";
        case 0x24: return " M1 Icestorm Pro";
        case 0x25: return " M1 Firestorm Pro";
        case 0x28: return " M1 Icestorm Max";
        case 0x29: return " M1 Firestorm Max";
        default: break;
        }
    case 0x66:  // Faraday
        switch( part )
        {
        case 0x526: return " FA526";
        case 0x626: return " FA626";
        default: break;
        }
    case 0x68:  // HXT
        switch( part )
        {
        case 0x0: return " Phecda";
        default: break;
        }
    case 0xc0:  // Ampere Computing
        switch( part )
        {
        case 0xac3: return " Ampere1";
        default: break;
        }
    default: break;
    }
    sprintf( buf, " 0x%x", part );
    return buf;
}

#elif defined __APPLE__ && TARGET_OS_IPHONE == 1

static const char* DecodeIosDevice( const char* id )
{
    static const char* DeviceTable[] = {
        "i386", "32-bit simulator",
        "x86_64", "64-bit simulator",
        "iPhone1,1", "iPhone",
        "iPhone1,2", "iPhone 3G",
        "iPhone2,1", "iPhone 3GS",
        "iPhone3,1", "iPhone 4 (GSM)",
        "iPhone3,2", "iPhone 4 (GSM)",
        "iPhone3,3", "iPhone 4 (CDMA)",
        "iPhone4,1", "iPhone 4S",
        "iPhone5,1", "iPhone 5 (A1428)",
        "iPhone5,2", "iPhone 5 (A1429)",
        "iPhone5,3", "iPhone 5c (A1456/A1532)",
        "iPhone5,4", "iPhone 5c (A1507/A1516/1526/A1529)",
        "iPhone6,1", "iPhone 5s (A1433/A1533)",
        "iPhone6,2", "iPhone 5s (A1457/A1518/A1528/A1530)",
        "iPhone7,1", "iPhone 6 Plus",
        "iPhone7,2", "iPhone 6",
        "iPhone8,1", "iPhone 6S",
        "iPhone8,2", "iPhone 6S Plus",
        "iPhone8,4", "iPhone SE",
        "iPhone9,1", "iPhone 7 (CDMA)",
        "iPhone9,2", "iPhone 7 Plus (CDMA)",
        "iPhone9,3", "iPhone 7 (GSM)",
        "iPhone9,4", "iPhone 7 Plus (GSM)",
        "iPhone10,1", "iPhone 8 (CDMA)",
        "iPhone10,2", "iPhone 8 Plus (CDMA)",
        "iPhone10,3", "iPhone X (CDMA)",
        "iPhone10,4", "iPhone 8 (GSM)",
        "iPhone10,5", "iPhone 8 Plus (GSM)",
        "iPhone10,6", "iPhone X (GSM)",
        "iPhone11,2", "iPhone XS",
        "iPhone11,4", "iPhone XS Max",
        "iPhone11,6", "iPhone XS Max China",
        "iPhone11,8", "iPhone XR",
        "iPhone12,1", "iPhone 11",
        "iPhone12,3", "iPhone 11 Pro",
        "iPhone12,5", "iPhone 11 Pro Max",
        "iPhone12,8", "iPhone SE 2nd Gen",
        "iPhone13,1", "iPhone 12 Mini",
        "iPhone13,2", "iPhone 12",
        "iPhone13,3", "iPhone 12 Pro",
        "iPhone13,4", "iPhone 12 Pro Max",
        "iPhone14,2", "iPhone 13 Pro",
        "iPhone14,3", "iPhone 13 Pro Max",
        "iPhone14,4", "iPhone 13 Mini",
        "iPhone14,5", "iPhone 13",
        "iPhone14,6", "iPhone SE 3rd Gen",
        "iPhone14,7", "iPhone 14",
        "iPhone14,8", "iPhone 14 Plus",
        "iPhone15,2", "iPhone 14 Pro",
        "iPhone15,3", "iPhone 14 Pro Max",
        "iPhone15,4", "iPhone 15",
        "iPhone15,5", "iPhone 15 Plus",
        "iPhone16,1", "iPhone 15 Pro",
        "iPhone16,2", "iPhone 15 Pro Max",
        "iPad1,1", "iPad (A1219/A1337)",
        "iPad2,1", "iPad 2 (A1395)",
        "iPad2,2", "iPad 2 (A1396)",
        "iPad2,3", "iPad 2 (A1397)",
        "iPad2,4", "iPad 2 (A1395)",
        "iPad2,5", "iPad Mini (A1432)",
        "iPad2,6", "iPad Mini (A1454)",
        "iPad2,7", "iPad Mini (A1455)",
        "iPad3,1", "iPad 3 (A1416)",
        "iPad3,2", "iPad 3 (A1403)",
        "iPad3,3", "iPad 3 (A1430)",
        "iPad3,4", "iPad 4 (A1458)",
        "iPad3,5", "iPad 4 (A1459)",
        "iPad3,6", "iPad 4 (A1460)",
        "iPad4,1", "iPad Air (A1474)",
        "iPad4,2", "iPad Air (A1475)",
        "iPad4,3", "iPad Air (A1476)",
        "iPad4,4", "iPad Mini 2 (A1489)",
        "iPad4,5", "iPad Mini 2 (A1490)",
        "iPad4,6", "iPad Mini 2 (A1491)",
        "iPad4,7", "iPad Mini 3 (A1599)",
        "iPad4,8", "iPad Mini 3 (A1600)",
        "iPad4,9", "iPad Mini 3 (A1601)",
        "iPad5,1", "iPad Mini 4 (A1538)",
        "iPad5,2", "iPad Mini 4 (A1550)",
        "iPad5,3", "iPad Air 2 (A1566)",
        "iPad5,4", "iPad Air 2 (A1567)",
        "iPad6,3", "iPad Pro 9.7\" (A1673)",
        "iPad6,4", "iPad Pro 9.7\" (A1674)",
        "iPad6,5", "iPad Pro 9.7\" (A1675)",
        "iPad6,7", "iPad Pro 12.9\" (A1584)",
        "iPad6,8", "iPad Pro 12.9\" (A1652)",
        "iPad6,11", "iPad 5th gen (A1822)",
        "iPad6,12", "iPad 5th gen (A1823)",
        "iPad7,1", "iPad Pro 12.9\" 2nd gen (A1670)",
        "iPad7,2", "iPad Pro 12.9\" 2nd gen (A1671/A1821)",
        "iPad7,3", "iPad Pro 10.5\" (A1701)",
        "iPad7,4", "iPad Pro 10.5\" (A1709)",
        "iPad7,5", "iPad 6th gen (A1893)",
        "iPad7,6", "iPad 6th gen (A1954)",
        "iPad7,11", "iPad 7th gen 10.2\" (Wifi)",
        "iPad7,12", "iPad 7th gen 10.2\" (Wifi+Cellular)",
        "iPad8,1", "iPad Pro 11\" (A1980)",
        "iPad8,2", "iPad Pro 11\" (A1980)",
        "iPad8,3", "iPad Pro 11\" (A1934/A1979/A2013)",
        "iPad8,4", "iPad Pro 11\" (A1934/A1979/A2013)",
        "iPad8,5", "iPad Pro 12.9\" 3rd gen (A1876)",
        "iPad8,6", "iPad Pro 12.9\" 3rd gen (A1876)",
        "iPad8,7", "iPad Pro 12.9\" 3rd gen (A1895/A1983/A2014)",
        "iPad8,8", "iPad Pro 12.9\" 3rd gen (A1895/A1983/A2014)",
        "iPad8,9", "iPad Pro 11\" 2nd gen (Wifi)",
        "iPad8,10", "iPad Pro 11\" 2nd gen (Wifi+Cellular)",
        "iPad8,11", "iPad Pro 12.9\" 4th gen (Wifi)",
        "iPad8,12", "iPad Pro 12.9\" 4th gen (Wifi+Cellular)",
        "iPad11,1", "iPad Mini 5th gen (A2133)",
        "iPad11,2", "iPad Mini 5th gen (A2124/A2125/A2126)",
        "iPad11,3", "iPad Air 3rd gen (A2152)",
        "iPad11,4", "iPad Air 3rd gen (A2123/A2153/A2154)",
        "iPad11,6", "iPad 8th gen (WiFi)",
        "iPad11,7", "iPad 8th gen (WiFi+Cellular)",
        "iPad12,1", "iPad 9th Gen (WiFi)",
        "iPad12,2", "iPad 9th Gen (WiFi+Cellular)",
        "iPad13,1", "iPad Air 4th gen (WiFi)",
        "iPad13,2", "iPad Air 4th gen (WiFi+Cellular)",
        "iPad13,4", "iPad Pro 11\" 3rd gen",
        "iPad13,5", "iPad Pro 11\" 3rd gen",
        "iPad13,6", "iPad Pro 11\" 3rd gen",
        "iPad13,7", "iPad Pro 11\" 3rd gen",
        "iPad13,8", "iPad Pro 12.9\" 5th gen",
        "iPad13,9", "iPad Pro 12.9\" 5th gen",
        "iPad13,10", "iPad Pro 12.9\" 5th gen",
        "iPad13,11", "iPad Pro 12.9\" 5th gen",
        "iPad13,16", "iPad Air 5th Gen (WiFi)",
        "iPad13,17", "iPad Air 5th Gen (WiFi+Cellular)",
        "iPad13,18", "iPad 10th Gen",
        "iPad13,19", "iPad 10th Gen",
        "iPad14,1", "iPad mini 6th Gen (WiFi)",
        "iPad14,2", "iPad mini 6th Gen (WiFi+Cellular)",
        "iPad14,3", "iPad Pro 11\" 4th Gen",
        "iPad14,4", "iPad Pro 11\" 4th Gen",
        "iPad14,5", "iPad Pro 12.9\" 6th Gen",
        "iPad14,6", "iPad Pro 12.9\" 6th Gen",
        "iPod1,1", "iPod Touch",
        "iPod2,1", "iPod Touch 2nd gen",
        "iPod3,1", "iPod Touch 3rd gen",
        "iPod4,1", "iPod Touch 4th gen",
        "iPod5,1", "iPod Touch 5th gen",
        "iPod7,1", "iPod Touch 6th gen",
        "iPod9,1", "iPod Touch 7th gen",
        nullptr
    };

    auto ptr = DeviceTable;
    while( *ptr )
    {
        if( strcmp( ptr[0], id ) == 0 ) return ptr[1];
        ptr += 2;
    }
    return id;
}

#endif

}