• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2    "description": [
3        "Copyright 2019 The ANGLE Project Authors. All rights reserved.",
4        "Use of this source code is governed by a BSD-style license that can be",
5        "found in the LICENSE file.",
6        "",
7        "mtl_format_map.json: Format mapping between OpenGL and Metal.",
8        "",
9        "Also see gen_mtl_format_table.py for the code generation step."
10    ],
11    "image": {
12        "description": [
13            "- The image's map is a dictionary where the key of each entry is the",
14            "ANGLE format ID, and the value is the Metal format enum. Note some formats",
15            "are missing from the map, these formats are either unsupported or emulated",
16            "on Metal.",
17            "map_mac is Mac specific mapping, similarly map_ios is iOS specific mapping.",
18            "",
19            "- override is emulation of unsupported formats on Metal by converting them to",
20            "supported formats. For example, converting R8G8B8 to R8G8B8A8",
21            "override_mac & override_ios are platform specific emulations.",
22            "",
23            "- d24s8_fallbacks_mac is Mac specific emulation when native Metal device doesn't",
24            "support D24_UNORM_S8_UINT format.",
25            "",
26            "- caps is a table containing native Metal format's specific capabilities such as",
27            "supporting filtering, blending and so on. Unlike the above tables, this table's keys",
28            "are Metal native format enums. This table's source is",
29            "https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf",
30            "Platform specific tables are caps_mac & caps_ios."
31        ],
32        "map": {
33            "NONE": "MTLPixelFormatInvalid",
34            "A8_UNORM": "MTLPixelFormatA8Unorm",
35            "R8_UNORM": "MTLPixelFormatR8Unorm",
36            "R8_SNORM": "MTLPixelFormatR8Snorm",
37            "R8_UINT": "MTLPixelFormatR8Uint",
38            "R8_SINT": "MTLPixelFormatR8Sint",
39            "R8G8_UNORM": "MTLPixelFormatRG8Unorm",
40            "R8G8_SNORM": "MTLPixelFormatRG8Snorm",
41            "R8G8_UINT": "MTLPixelFormatRG8Uint",
42            "R8G8_SINT": "MTLPixelFormatRG8Sint",
43            "R8G8B8A8_UINT": "MTLPixelFormatRGBA8Uint",
44            "R8G8B8A8_SINT": "MTLPixelFormatRGBA8Sint",
45            "R8G8B8A8_UNORM": "MTLPixelFormatRGBA8Unorm",
46            "R8G8B8A8_SNORM": "MTLPixelFormatRGBA8Snorm",
47            "R8G8B8A8_UNORM_SRGB": "MTLPixelFormatRGBA8Unorm_sRGB",
48            "B8G8R8A8_UNORM": "MTLPixelFormatBGRA8Unorm",
49            "B8G8R8A8_UNORM_SRGB": "MTLPixelFormatBGRA8Unorm_sRGB",
50            "R16_UNORM": "MTLPixelFormatR16Unorm",
51            "R16_SNORM": "MTLPixelFormatR16Snorm",
52            "R16_UINT": "MTLPixelFormatR16Uint",
53            "R16_SINT": "MTLPixelFormatR16Sint",
54            "R16_FLOAT": "MTLPixelFormatR16Float",
55            "R16G16_UNORM": "MTLPixelFormatRG16Unorm",
56            "R16G16_SNORM": "MTLPixelFormatRG16Snorm",
57            "R16G16_UINT": "MTLPixelFormatRG16Uint",
58            "R16G16_SINT": "MTLPixelFormatRG16Sint",
59            "R16G16_FLOAT": "MTLPixelFormatRG16Float",
60            "R16G16B16A16_UNORM": "MTLPixelFormatRGBA16Unorm",
61            "R16G16B16A16_SNORM": "MTLPixelFormatRGBA16Snorm",
62            "R16G16B16A16_UINT": "MTLPixelFormatRGBA16Uint",
63            "R16G16B16A16_SINT": "MTLPixelFormatRGBA16Sint",
64            "R16G16B16A16_FLOAT": "MTLPixelFormatRGBA16Float",
65            "R32_UINT": "MTLPixelFormatR32Uint",
66            "R32_SINT": "MTLPixelFormatR32Sint",
67            "R32_FLOAT": "MTLPixelFormatR32Float",
68            "R32G32_UINT": "MTLPixelFormatRG32Uint",
69            "R32G32_SINT": "MTLPixelFormatRG32Sint",
70            "R32G32_FLOAT": "MTLPixelFormatRG32Float",
71            "R32G32B32A32_UINT": "MTLPixelFormatRGBA32Uint",
72            "R32G32B32A32_SINT": "MTLPixelFormatRGBA32Sint",
73            "R32G32B32A32_FLOAT": "MTLPixelFormatRGBA32Float",
74            "D32_FLOAT": "MTLPixelFormatDepth32Float",
75            "S8_UINT": "MTLPixelFormatStencil8",
76            "D32_FLOAT_S8X24_UINT": "MTLPixelFormatDepth32Float_Stencil8",
77            "B10G10R10A2_UNORM": "MTLPixelFormatBGR10A2Unorm",
78            "R10G10B10A2_UINT": "MTLPixelFormatRGB10A2Uint",
79            "R10G10B10A2_UNORM": "MTLPixelFormatRGB10A2Unorm",
80            "R11G11B10_FLOAT": "MTLPixelFormatRG11B10Float",
81            "R9G9B9E5_SHAREDEXP": "MTLPixelFormatRGB9E5Float"
82        },
83        "map_ios": {
84            "R8_UNORM_SRGB": "MTLPixelFormatR8Unorm_sRGB",
85            "R8G8_UNORM_SRGB": "MTLPixelFormatRG8Unorm_sRGB",
86            "R5G6B5_UNORM": "MTLPixelFormatB5G6R5Unorm",
87            "R5G5B5A1_UNORM": "MTLPixelFormatA1BGR5Unorm",
88            "R4G4B4A4_UNORM": "MTLPixelFormatABGR4Unorm",
89            "D16_UNORM": "MTLPixelFormatDepth16Unorm",
90            "PVRTC1_RGB_4BPP_UNORM_BLOCK": "MTLPixelFormatPVRTC_RGB_4BPP",
91            "PVRTC1_RGB_2BPP_UNORM_BLOCK": "MTLPixelFormatPVRTC_RGB_2BPP",
92            "PVRTC1_RGBA_4BPP_UNORM_BLOCK": "MTLPixelFormatPVRTC_RGBA_4BPP",
93            "PVRTC1_RGBA_2BPP_UNORM_BLOCK": "MTLPixelFormatPVRTC_RGBA_2BPP",
94            "PVRTC1_RGB_2BPP_UNORM_SRGB_BLOCK": "MTLPixelFormatPVRTC_RGB_2BPP_sRGB",
95            "PVRTC1_RGB_4BPP_UNORM_SRGB_BLOCK": "MTLPixelFormatPVRTC_RGB_4BPP_sRGB",
96            "PVRTC1_RGBA_2BPP_UNORM_SRGB_BLOCK": "MTLPixelFormatPVRTC_RGBA_2BPP_sRGB",
97            "PVRTC1_RGBA_4BPP_UNORM_SRGB_BLOCK": "MTLPixelFormatPVRTC_RGBA_4BPP_sRGB",
98            "ETC1_R8G8B8_UNORM_BLOCK": "MTLPixelFormatETC2_RGB8",
99            "ETC2_R8G8B8_UNORM_BLOCK": "MTLPixelFormatETC2_RGB8",
100            "ETC2_R8G8B8_SRGB_BLOCK": "MTLPixelFormatETC2_RGB8_sRGB",
101            "ETC2_R8G8B8A1_UNORM_BLOCK": "MTLPixelFormatETC2_RGB8A1",
102            "ETC2_R8G8B8A1_SRGB_BLOCK": "MTLPixelFormatETC2_RGB8A1_sRGB",
103            "ETC2_R8G8B8A8_UNORM_BLOCK": "MTLPixelFormatEAC_RGBA8",
104            "ETC2_R8G8B8A8_SRGB_BLOCK": "MTLPixelFormatEAC_RGBA8_sRGB",
105            "EAC_R11_UNORM_BLOCK": "MTLPixelFormatEAC_R11Unorm",
106            "EAC_R11_SNORM_BLOCK": "MTLPixelFormatEAC_R11Snorm",
107            "EAC_R11G11_UNORM_BLOCK": "MTLPixelFormatEAC_RG11Unorm",
108            "EAC_R11G11_SNORM_BLOCK": "MTLPixelFormatEAC_RG11Snorm",
109            "ASTC_4x4_SRGB_BLOCK": "MTLPixelFormatASTC_4x4_sRGB",
110            "ASTC_5x4_SRGB_BLOCK": "MTLPixelFormatASTC_5x4_sRGB",
111            "ASTC_5x5_SRGB_BLOCK": "MTLPixelFormatASTC_5x5_sRGB",
112            "ASTC_6x5_SRGB_BLOCK": "MTLPixelFormatASTC_6x5_sRGB",
113            "ASTC_6x6_SRGB_BLOCK": "MTLPixelFormatASTC_6x6_sRGB",
114            "ASTC_8x5_SRGB_BLOCK": "MTLPixelFormatASTC_8x5_sRGB",
115            "ASTC_8x6_SRGB_BLOCK": "MTLPixelFormatASTC_8x6_sRGB",
116            "ASTC_8x8_SRGB_BLOCK": "MTLPixelFormatASTC_8x8_sRGB",
117            "ASTC_10x5_SRGB_BLOCK": "MTLPixelFormatASTC_10x5_sRGB",
118            "ASTC_10x6_SRGB_BLOCK": "MTLPixelFormatASTC_10x6_sRGB",
119            "ASTC_10x8_SRGB_BLOCK": "MTLPixelFormatASTC_10x8_sRGB",
120            "ASTC_10x10_SRGB_BLOCK": "MTLPixelFormatASTC_10x10_sRGB",
121            "ASTC_12x10_SRGB_BLOCK": "MTLPixelFormatASTC_12x10_sRGB",
122            "ASTC_12x12_SRGB_BLOCK": "MTLPixelFormatASTC_12x12_sRGB"
123        },
124        "map_sim": {
125            "ETC1_R8G8B8_UNORM_BLOCK": "MTLPixelFormatETC2_RGB8",
126            "ETC2_R8G8B8_UNORM_BLOCK": "MTLPixelFormatETC2_RGB8",
127            "ETC2_R8G8B8_SRGB_BLOCK": "MTLPixelFormatETC2_RGB8_sRGB",
128            "ETC2_R8G8B8A1_UNORM_BLOCK": "MTLPixelFormatETC2_RGB8A1",
129            "ETC2_R8G8B8A1_SRGB_BLOCK": "MTLPixelFormatETC2_RGB8A1_sRGB",
130            "ETC2_R8G8B8A8_UNORM_BLOCK": "MTLPixelFormatEAC_RGBA8",
131            "ETC2_R8G8B8A8_SRGB_BLOCK": "MTLPixelFormatEAC_RGBA8_sRGB",
132            "EAC_R11_UNORM_BLOCK": "MTLPixelFormatEAC_R11Unorm",
133            "EAC_R11_SNORM_BLOCK": "MTLPixelFormatEAC_R11Snorm",
134            "EAC_R11G11_UNORM_BLOCK": "MTLPixelFormatEAC_RG11Unorm",
135            "EAC_R11G11_SNORM_BLOCK": "MTLPixelFormatEAC_RG11Snorm",
136            "ASTC_4x4_SRGB_BLOCK": "MTLPixelFormatASTC_4x4_sRGB",
137            "ASTC_5x4_SRGB_BLOCK": "MTLPixelFormatASTC_5x4_sRGB",
138            "ASTC_5x5_SRGB_BLOCK": "MTLPixelFormatASTC_5x5_sRGB",
139            "ASTC_6x5_SRGB_BLOCK": "MTLPixelFormatASTC_6x5_sRGB",
140            "ASTC_6x6_SRGB_BLOCK": "MTLPixelFormatASTC_6x6_sRGB",
141            "ASTC_8x5_SRGB_BLOCK": "MTLPixelFormatASTC_8x5_sRGB",
142            "ASTC_8x6_SRGB_BLOCK": "MTLPixelFormatASTC_8x6_sRGB",
143            "ASTC_8x8_SRGB_BLOCK": "MTLPixelFormatASTC_8x8_sRGB",
144            "ASTC_10x5_SRGB_BLOCK": "MTLPixelFormatASTC_10x5_sRGB",
145            "ASTC_10x6_SRGB_BLOCK": "MTLPixelFormatASTC_10x6_sRGB",
146            "ASTC_10x8_SRGB_BLOCK": "MTLPixelFormatASTC_10x8_sRGB",
147            "ASTC_10x10_SRGB_BLOCK": "MTLPixelFormatASTC_10x10_sRGB",
148            "ASTC_12x10_SRGB_BLOCK": "MTLPixelFormatASTC_12x10_sRGB",
149            "ASTC_12x12_SRGB_BLOCK": "MTLPixelFormatASTC_12x12_sRGB"
150        },
151        "map_astc_tpl": {
152            "ASTC_4x4_UNORM_BLOCK": "MTLPixelFormatASTC_4x4_",
153            "ASTC_5x4_UNORM_BLOCK": "MTLPixelFormatASTC_5x4_",
154            "ASTC_5x5_UNORM_BLOCK": "MTLPixelFormatASTC_5x5_",
155            "ASTC_6x5_UNORM_BLOCK": "MTLPixelFormatASTC_6x5_",
156            "ASTC_6x6_UNORM_BLOCK": "MTLPixelFormatASTC_6x6_",
157            "ASTC_8x5_UNORM_BLOCK": "MTLPixelFormatASTC_8x5_",
158            "ASTC_8x6_UNORM_BLOCK": "MTLPixelFormatASTC_8x6_",
159            "ASTC_8x8_UNORM_BLOCK": "MTLPixelFormatASTC_8x8_",
160            "ASTC_10x5_UNORM_BLOCK": "MTLPixelFormatASTC_10x5_",
161            "ASTC_10x6_UNORM_BLOCK": "MTLPixelFormatASTC_10x6_",
162            "ASTC_10x8_UNORM_BLOCK": "MTLPixelFormatASTC_10x8_",
163            "ASTC_10x10_UNORM_BLOCK": "MTLPixelFormatASTC_10x10_",
164            "ASTC_12x10_UNORM_BLOCK": "MTLPixelFormatASTC_12x10_",
165            "ASTC_12x12_UNORM_BLOCK": "MTLPixelFormatASTC_12x12_"
166        },
167        "map_mac": {
168            "D16_UNORM": "MTLPixelFormatDepth16Unorm",
169            "D24_UNORM_S8_UINT": "MTLPixelFormatDepth24Unorm_Stencil8",
170            "BC1_RGBA_UNORM_BLOCK": "MTLPixelFormatBC1_RGBA",
171            "BC1_RGBA_UNORM_SRGB_BLOCK": "MTLPixelFormatBC1_RGBA_sRGB",
172            "BC2_RGBA_UNORM_BLOCK": "MTLPixelFormatBC2_RGBA",
173            "BC2_RGBA_UNORM_SRGB_BLOCK": "MTLPixelFormatBC2_RGBA_sRGB",
174            "BC3_RGBA_UNORM_BLOCK": "MTLPixelFormatBC3_RGBA",
175            "BC3_RGBA_UNORM_SRGB_BLOCK": "MTLPixelFormatBC3_RGBA_sRGB",
176            "BC4_RED_UNORM_BLOCK": "MTLPixelFormatBC4_RUnorm",
177            "BC4_RED_SNORM_BLOCK": "MTLPixelFormatBC4_RSnorm",
178            "BC5_RG_UNORM_BLOCK": "MTLPixelFormatBC5_RGUnorm",
179            "BC5_RG_SNORM_BLOCK": "MTLPixelFormatBC5_RGSnorm",
180            "BC6H_RGB_UFLOAT_BLOCK": "MTLPixelFormatBC6H_RGBUfloat",
181            "BC6H_RGB_SFLOAT_BLOCK": "MTLPixelFormatBC6H_RGBFloat",
182            "BC7_RGBA_UNORM_BLOCK": "MTLPixelFormatBC7_RGBAUnorm",
183            "BC7_RGBA_UNORM_SRGB_BLOCK": "MTLPixelFormatBC7_RGBAUnorm_sRGB"
184        },
185        "override": {
186            "L8_UNORM": "R8G8B8A8_UNORM",
187            "L8A8_UNORM": "R8G8B8A8_UNORM",
188            "R8G8B8_UNORM": "R8G8B8A8_UNORM",
189            "R8G8B8X8_UNORM": "R8G8B8A8_UNORM",
190            "R8G8B8_SNORM": "R8G8B8A8_SNORM",
191            "R8G8B8_UINT": "R8G8B8A8_UINT",
192            "R8G8B8_SINT": "R8G8B8A8_SINT",
193            "R8G8B8_UNORM_SRGB": "R8G8B8A8_UNORM_SRGB",
194            "R32G32B32_FLOAT": "R32G32B32A32_FLOAT",
195            "R32G32B32_UINT": "R32G32B32A32_UINT",
196            "R32G32B32_SINT": "R32G32B32A32_SINT",
197            "R16G16B16_FLOAT": "R16G16B16A16_FLOAT",
198            "R16G16B16_UINT": "R16G16B16A16_UINT",
199            "R16G16B16_SINT": "R16G16B16A16_SINT",
200            "R16G16B16_UNORM": "R16G16B16A16_UNORM",
201            "R16G16B16_SNORM": "R16G16B16A16_SNORM",
202            "A16_FLOAT": "R16G16B16A16_FLOAT",
203            "L16_FLOAT": "R16G16B16A16_FLOAT",
204            "L16A16_FLOAT": "R16G16B16A16_FLOAT",
205            "A32_FLOAT": "R32G32B32A32_FLOAT",
206            "L32_FLOAT": "R32G32B32A32_FLOAT",
207            "L32A32_FLOAT": "R32G32B32A32_FLOAT",
208            "D24_UNORM_X8_UINT": "D32_FLOAT",
209            "D32_UNORM": "D32_FLOAT"
210        },
211        "override_mac": {
212        },
213        "override_ios": {
214            "D24_UNORM_S8_UINT": "D32_FLOAT_S8X24_UINT"
215        },
216         "override_sim": {
217            "R5G6B5_UNORM": "R8G8B8A8_UNORM",
218            "R5G5B5A1_UNORM": "R8G8B8A8_UNORM",
219            "D24_UNORM_S8_UINT": "D32_FLOAT_S8X24_UINT",
220            "R4G4B4A4_UNORM": "R8G8B8A8_UNORM",
221            "D16_UNORM": "D32_FLOAT"
222        },
223        "override_mac_bc1": {
224            "BC1_RGB_UNORM_BLOCK": {
225                "default": "BC1_RGBA_UNORM_BLOCK",
226                "swizzle": ["RGB1", "BC1_RGBA_UNORM_BLOCK"]
227            },
228            "BC1_RGB_UNORM_SRGB_BLOCK": {
229                "default": "BC1_RGBA_UNORM_SRGB_BLOCK",
230                "swizzle": ["RGB1", "BC1_RGBA_UNORM_SRGB_BLOCK"]
231            }
232        },
233        "override_mac_es3": {
234            "R5G6B5_UNORM": "R8G8B8A8_UNORM",
235            "R5G5B5A1_UNORM": "R8G8B8A8_UNORM",
236            "R4G4B4A4_UNORM": "R8G8B8A8_UNORM",
237            "ETC1_R8G8B8_UNORM_BLOCK": "R8G8B8A8_UNORM",
238            "ETC2_R8G8B8_UNORM_BLOCK": "R8G8B8A8_UNORM",
239            "ETC2_R8G8B8_SRGB_BLOCK": "R8G8B8A8_UNORM_SRGB",
240            "ETC2_R8G8B8A1_UNORM_BLOCK": "R8G8B8A8_UNORM",
241            "ETC2_R8G8B8A1_SRGB_BLOCK": "R8G8B8A8_UNORM_SRGB",
242            "ETC2_R8G8B8A8_UNORM_BLOCK": "R8G8B8A8_UNORM",
243            "ETC2_R8G8B8A8_SRGB_BLOCK": "R8G8B8A8_UNORM_SRGB",
244            "EAC_R11_UNORM_BLOCK": "R16_UNORM",
245            "EAC_R11_SNORM_BLOCK": "R16_SNORM",
246            "EAC_R11G11_UNORM_BLOCK": "R16G16_UNORM",
247            "EAC_R11G11_SNORM_BLOCK": "R16G16_SNORM"
248        },
249        "depth_fallbacks_mac": {
250            "D24_UNORM_S8_UINT": {
251                "format": "D32_FLOAT_S8X24_UINT",
252                "condition": "metalDevice.depth24Stencil8PixelFormatSupported && !display->getFeatures().forceD24S8AsUnsupported.enabled"
253            },
254            "D16_UNORM": {
255                "format": "D32_FLOAT",
256                "condition": "display->supportsAppleGPUFamily(1)"
257            }
258        },
259        "caps": {
260            "MTLPixelFormatA8Unorm":{
261                "filterable": "true",
262                "writable": "false",
263                "blendable": "false",
264                "multisample": "false",
265                "resolve": "false",
266                "colorRenderable": "false"
267            },
268            "MTLPixelFormatR8Unorm":{
269                "filterable": "true",
270                "writable": "true",
271                "blendable": "true",
272                "multisample": "true",
273                "resolve": "true",
274                "colorRenderable": "true"
275            },
276            "MTLPixelFormatR8Snorm":{
277                "filterable": "true",
278                "writable": "true",
279                "blendable": "true",
280                "multisample": "true",
281                "resolve": "display->supportsEitherGPUFamily(2, 1)",
282                "colorRenderable": "true"
283            },
284            "MTLPixelFormatR16Unorm":{
285                "filterable": "true",
286                "writable": "true",
287                "blendable": "true",
288                "multisample": "true",
289                "resolve": "display->supportsMacGPUFamily(1)",
290                "colorRenderable": "true"
291            },
292            "MTLPixelFormatR16Snorm":{
293                "filterable": "true",
294                "writable": "true",
295                "blendable": "true",
296                "multisample": "true",
297                "resolve": "display->supportsMacGPUFamily(1)",
298                "colorRenderable": "true"
299            },
300            "MTLPixelFormatRG8Unorm":{
301                "filterable": "true",
302                "writable": "true",
303                "blendable": "true",
304                "multisample": "true",
305                "resolve": "true",
306                "colorRenderable": "true"
307            },
308            "MTLPixelFormatRG8Snorm":{
309                "filterable": "true",
310                "writable": "true",
311                "blendable": "true",
312                "multisample": "true",
313                "resolve": "display->supportsEitherGPUFamily(2, 1)",
314                "colorRenderable": "true"
315            },
316            "MTLPixelFormatRG16Unorm":{
317                "filterable": "true",
318                "writable": "true",
319                "blendable": "true",
320                "multisample": "true",
321                "resolve": "display->supportsMacGPUFamily(1)",
322                "colorRenderable": "true"
323            },
324            "MTLPixelFormatRG16Snorm":{
325                "filterable": "true",
326                "writable": "true",
327                "blendable": "true",
328                "multisample": "true",
329                "resolve": "display->supportsMacGPUFamily(1)",
330                "colorRenderable": "true"
331            },
332            "MTLPixelFormatRGBA16Unorm":{
333                "filterable": "true",
334                "writable": "true",
335                "blendable": "true",
336                "multisample": "true",
337                "resolve": "display->supportsMacGPUFamily(1)",
338                "colorRenderable": "true"
339            },
340            "MTLPixelFormatRGBA16Snorm":{
341                "filterable": "true",
342                "writable": "true",
343                "blendable": "true",
344                "multisample": "true",
345                "resolve": "display->supportsMacGPUFamily(1)",
346                "colorRenderable": "true"
347            },
348            "MTLPixelFormatRGBA16Float":{
349                "filterable": "true",
350                "writable": "true",
351                "blendable": "true",
352                "multisample": "true",
353                "resolve": "true",
354                "colorRenderable": "true"
355            },
356            "MTLPixelFormatRGBA8Unorm":{
357                "filterable": "true",
358                "writable": "true",
359                "blendable": "true",
360                "multisample": "true",
361                "resolve": "true",
362                "colorRenderable": "true"
363            },
364            "MTLPixelFormatRGBA8Unorm_sRGB":{
365                "filterable": "true",
366                "writable": "display->supportsAppleGPUFamily(2) && !display->isSimulator()",
367                "blendable": "true",
368                "multisample": "true",
369                "resolve": "true",
370                "colorRenderable": "true"
371            },
372            "MTLPixelFormatRGBA8Snorm":{
373                "filterable": "true",
374                "writable": "true",
375                "blendable": "true",
376                "multisample": "true",
377                "resolve": "display->supportsEitherGPUFamily(2, 1)",
378                "colorRenderable": "true"
379            },
380            "MTLPixelFormatBGRA8Unorm":{
381                "filterable": "true",
382                "writable": "true",
383                "blendable": "true",
384                "multisample": "true",
385                "resolve": "true",
386                "colorRenderable": "true"
387            },
388            "MTLPixelFormatBGRA8Unorm_sRGB":{
389                "filterable": "true",
390                "writable": "display->supportsAppleGPUFamily(2) && !display->isSimulator()",
391                "blendable": "true",
392                "multisample": "true",
393                "resolve": "true",
394                "colorRenderable": "true"
395            },
396            "MTLPixelFormatR16Float":{
397                "filterable": "true",
398                "writable": "true",
399                "blendable": "true",
400                "multisample": "true",
401                "resolve": "true",
402                "colorRenderable": "true"
403            },
404            "MTLPixelFormatRG16Float":{
405                "filterable": "true",
406                "writable": "true",
407                "blendable": "true",
408                "multisample": "true",
409                "resolve": "true",
410                "colorRenderable": "true"
411            },
412            "MTLPixelFormatR32Float":{
413                "filterable": "display->supportsMacGPUFamily(1)",
414                "writable": "true",
415                "blendable": "true",
416                "multisample": "true",
417                "resolve": "display->supportsMacGPUFamily(1)",
418                "colorRenderable": "true"
419            },
420            "MTLPixelFormatBGR10A2Unorm":{
421                "filterable": "true",
422                "writable": "display->supportsEitherGPUFamily(3, 1)",
423                "blendable": "true",
424                "multisample": "true",
425                "resolve": "true",
426                "colorRenderable": "true"
427            },
428            "MTLPixelFormatRGB10A2Unorm":{
429                "filterable": "true",
430                "writable": "display->supportsEitherGPUFamily(3, 1)",
431                "blendable": "true",
432                "multisample": "true",
433                "resolve": "true",
434                "colorRenderable": "true"
435            },
436            "MTLPixelFormatRGB10A2Uint":{
437                "filterable": "false",
438                "writable": "display->supportsEitherGPUFamily(3, 1)",
439                "blendable": "false",
440                "multisample": "true",
441                "resolve": "false",
442                "colorRenderable": "true"
443            },
444            "MTLPixelFormatRG11B10Float":{
445                "filterable": "true",
446                "writable": "display->supportsEitherGPUFamily(3, 1)",
447                "blendable": "true",
448                "multisample": "true",
449                "resolve": "true",
450                "colorRenderable": "true"
451            },
452            "MTLPixelFormatRGB9E5Float":{
453                "filterable": "true",
454                "writable": "display->supportsAppleGPUFamily(3)",
455                "blendable": "display->supportsAppleGPUFamily(1)",
456                "multisample": "display->supportsAppleGPUFamily(1)",
457                "resolve": "display->supportsAppleGPUFamily(1)",
458                "colorRenderable": "display->supportsAppleGPUFamily(1) && !display->isSimulator()"
459            },
460            "MTLPixelFormatR8Uint":{
461                "filterable": "false",
462                "writable": "true",
463                "blendable": "false",
464                "multisample": "true",
465                "resolve": "false",
466                "colorRenderable": "true"
467            },
468            "MTLPixelFormatR8Sint":{
469                "filterable": "false",
470                "writable": "true",
471                "blendable": "false",
472                "multisample": "true",
473                "resolve": "false",
474                "colorRenderable": "true"
475            },
476            "MTLPixelFormatR16Uint":{
477                "filterable": "false",
478                "writable": "true",
479                "blendable": "false",
480                "multisample": "true",
481                "resolve": "false",
482                "colorRenderable": "true"
483            },
484            "MTLPixelFormatR16Sint":{
485                "filterable": "false",
486                "writable": "true",
487                "blendable": "false",
488                "multisample": "true",
489                "resolve": "false",
490                "colorRenderable": "true"
491            },
492            "MTLPixelFormatRG8Uint":{
493                "filterable": "false",
494                "writable": "true",
495                "blendable": "false",
496                "multisample": "true",
497                "resolve": "false",
498                "colorRenderable": "true"
499            },
500            "MTLPixelFormatRG8Sint":{
501                "filterable": "false",
502                "writable": "true",
503                "blendable": "false",
504                "multisample": "true",
505                "resolve": "false",
506                "colorRenderable": "true"
507            },
508            "MTLPixelFormatR32Uint":{
509                "filterable": "false",
510                "writable": "true",
511                "blendable": "false",
512                "multisample": "display->supportsMacGPUFamily(1)",
513                "resolve": "false",
514                "colorRenderable": "true"
515            },
516            "MTLPixelFormatR32Sint":{
517                "filterable": "false",
518                "writable": "true",
519                "blendable": "false",
520                "multisample": "display->supportsMacGPUFamily(1)",
521                "resolve": "false",
522                "colorRenderable": "true"
523            },
524            "MTLPixelFormatRG16Uint":{
525                "filterable": "false",
526                "writable": "true",
527                "blendable": "false",
528                "multisample": "true",
529                "resolve": "false",
530                "colorRenderable": "true"
531            },
532            "MTLPixelFormatRG16Sint":{
533                "filterable": "false",
534                "writable": "true",
535                "blendable": "false",
536                "multisample": "true",
537                "resolve": "false",
538                "colorRenderable": "true"
539            },
540            "MTLPixelFormatRGBA8Uint":{
541                "filterable": "false",
542                "writable": "true",
543                "blendable": "false",
544                "multisample": "true",
545                "resolve": "false",
546                "colorRenderable": "true"
547            },
548            "MTLPixelFormatRGBA8Sint":{
549                "filterable": "false",
550                "writable": "true",
551                "blendable": "false",
552                "multisample": "true",
553                "resolve": "false",
554                "colorRenderable": "true"
555            },
556            "MTLPixelFormatRG32Uint":{
557                "filterable": "false",
558                "writable": "true",
559                "blendable": "false",
560                "multisample": "display->supportsEitherGPUFamily(7, 1)",
561                "resolve": "false",
562                "colorRenderable": "true"
563            },
564            "MTLPixelFormatRG32Sint":{
565                "filterable": "false",
566                "writable": "true",
567                "blendable": "false",
568                "multisample": "display->supportsEitherGPUFamily(7, 1)",
569                "resolve": "false",
570                "colorRenderable": "true"
571            },
572            "MTLPixelFormatRGBA16Uint":{
573                "filterable": "false",
574                "writable": "true",
575                "blendable": "false",
576                "multisample": "true",
577                "resolve": "false",
578                "colorRenderable": "true"
579            },
580            "MTLPixelFormatRGBA16Sint":{
581                "filterable": "false",
582                "writable": "true",
583                "blendable": "false",
584                "multisample": "true",
585                "resolve": "false",
586                "colorRenderable": "true"
587            },
588            "MTLPixelFormatRGBA32Uint":{
589                "filterable": "false",
590                "writable": "true",
591                "blendable": "false",
592                "multisample": "display->supportsMacGPUFamily(1)",
593                "resolve": "false",
594                "colorRenderable": "true"
595            },
596            "MTLPixelFormatRGBA32Sint":{
597                "filterable": "false",
598                "writable": "true",
599                "blendable": "false",
600                "multisample": "display->supportsMacGPUFamily(1)",
601                "resolve": "false",
602                "colorRenderable": "true"
603            },
604            "MTLPixelFormatRG32Float":{
605                "filterable": "display->supportsMacGPUFamily(1)",
606                "writable": "true",
607                "blendable": "true",
608                "multisample": "display->supportsEitherGPUFamily(7, 1)",
609                "resolve": "display->supportsMacGPUFamily(1)",
610                "colorRenderable": "true"
611            },
612            "MTLPixelFormatRGBA32Float":{
613                "filterable": "display->supportsMacGPUFamily(1)",
614                "writable": "true",
615                "blendable": "display->supportsMacGPUFamily(1)",
616                "multisample": "display->supportsEitherGPUFamily(7, 1)",
617                "resolve": "display->supportsMacGPUFamily(1)",
618                "colorRenderable": "true"
619            },
620            "MTLPixelFormatDepth32Float":{
621                "filterable": "display->supports32BitFloatFiltering()",
622                "writable": "false",
623                "blendable": "false",
624                "multisample": "true",
625                "resolve": "supportDepthAutoResolve",
626                "colorRenderable": "false",
627                "depthRenderable": "true"
628            },
629            "MTLPixelFormatStencil8":{
630                "filterable": "false",
631                "writable": "false",
632                "blendable": "false",
633                "multisample": "true",
634                "resolve": "false",
635                "colorRenderable": "false",
636                "depthRenderable": "true"
637            },
638            "MTLPixelFormatDepth32Float_Stencil8":{
639                "filterable": "display->supports32BitFloatFiltering()",
640                "writable": "false",
641                "blendable": "false",
642                "multisample": "true",
643                "resolve": "supportDepthStencilAutoResolve",
644                "colorRenderable": "false",
645                "depthRenderable": "true"
646            }
647        },
648        "caps_mac": {
649            "MTLPixelFormatDepth16Unorm":{
650                "filterable": "true",
651                "writable": "false",
652                "blendable": "false",
653                "multisample": "true",
654                "resolve": "supportDepthAutoResolve",
655                "colorRenderable": "false",
656                "depthRenderable": "true"
657            },
658            "MTLPixelFormatDepth24Unorm_Stencil8":{
659                "filterable": "display->supportsMacGPUFamily(1) && display->supportsDepth24Stencil8PixelFormat()",
660                "writable": "false",
661                "blendable": "false",
662                "multisample": "true",
663                "resolve": "supportDepthStencilAutoResolve",
664                "colorRenderable": "false",
665                "depthRenderable": "display->supportsMacGPUFamily(1) && display->supportsDepth24Stencil8PixelFormat()"
666            },
667            "MTLPixelFormatBC1_RGBA":{
668                "filterable": "true"
669            },
670            "MTLPixelFormatBC1_RGBA_sRGB":{
671                "filterable": "true"
672            },
673            "MTLPixelFormatBC2_RGBA":{
674                "filterable": "true"
675            },
676            "MTLPixelFormatBC2_RGBA_sRGB":{
677                "filterable": "true"
678            },
679            "MTLPixelFormatBC3_RGBA":{
680                "filterable": "true"
681            },
682            "MTLPixelFormatBC3_RGBA_sRGB":{
683                "filterable": "true"
684            },
685            "MTLPixelFormatBC4_RUnorm":{
686                "filterable": "true"
687            },
688            "MTLPixelFormatBC4_RSnorm":{
689                "filterable": "true"
690            },
691            "MTLPixelFormatBC5_RGUnorm":{
692                "filterable": "true"
693            },
694            "MTLPixelFormatBC5_RGSnorm":{
695                "filterable": "true"
696            },
697            "MTLPixelFormatBC6H_RGBUfloat":{
698                "filterable": "true"
699            },
700            "MTLPixelFormatBC6H_RGBFloat":{
701                "filterable": "true"
702            },
703            "MTLPixelFormatBC7_RGBAUnorm":{
704                "filterable": "true"
705            },
706            "MTLPixelFormatBC7_RGBAUnorm_sRGB":{
707                "filterable": "true"
708            }
709        },
710        "caps_ios_platform": {
711            "MTLPixelFormatDepth16Unorm":{
712                "filterable": "true",
713                "writable": "false",
714                "blendable": "false",
715                "multisample": "true",
716                "resolve": "supportDepthAutoResolve",
717                "colorRenderable": "false",
718                "depthRenderable": "true"
719            },
720            "MTLPixelFormatR8Unorm_sRGB":{
721                "filterable": "display->supportsAppleGPUFamily(1)",
722                "writable": "display->supportsAppleGPUFamily(2)",
723                "blendable": "display->supportsAppleGPUFamily(1)",
724                "multisample": "display->supportsAppleGPUFamily(1)",
725                "resolve": "display->supportsAppleGPUFamily(1)",
726                "colorRenderable": "display->supportsAppleGPUFamily(1)"
727            },
728            "MTLPixelFormatRG8Unorm_sRGB":{
729                "filterable": "display->supportsAppleGPUFamily(1)",
730                "writable": "display->supportsAppleGPUFamily(2)",
731                "blendable": "display->supportsAppleGPUFamily(1)",
732                "multisample": "display->supportsAppleGPUFamily(1)",
733                "resolve": "display->supportsAppleGPUFamily(1)",
734                "colorRenderable": "display->supportsAppleGPUFamily(1)"
735            },
736            "MTLPixelFormatB5G6R5Unorm":{
737                "filterable": "display->supportsAppleGPUFamily(1)",
738                "writable": "false",
739                "blendable": "display->supportsAppleGPUFamily(1)",
740                "multisample": "display->supportsAppleGPUFamily(1)",
741                "resolve": "display->supportsAppleGPUFamily(1)",
742                "colorRenderable": "display->supportsAppleGPUFamily(1)"
743            },
744            "MTLPixelFormatABGR4Unorm":{
745                "filterable": "display->supportsAppleGPUFamily(1)",
746                "writable": "false",
747                "blendable": "display->supportsAppleGPUFamily(1)",
748                "multisample": "display->supportsAppleGPUFamily(1)",
749                "resolve": "display->supportsAppleGPUFamily(1)",
750                "colorRenderable": "display->supportsAppleGPUFamily(1)"
751            },
752            "MTLPixelFormatBGR5A1Unorm":{
753                "filterable": "display->supportsAppleGPUFamily(1)",
754                "writable": "false",
755                "blendable": "display->supportsAppleGPUFamily(1)",
756                "multisample": "display->supportsAppleGPUFamily(1)",
757                "resolve": "display->supportsAppleGPUFamily(1)",
758                "colorRenderable": "display->supportsAppleGPUFamily(1)"
759            },
760            "MTLPixelFormatA1BGR5Unorm":{
761                "filterable": "display->supportsAppleGPUFamily(1)",
762                "writable": "false",
763                "blendable": "display->supportsAppleGPUFamily(1)",
764                "multisample": "display->supportsAppleGPUFamily(1)",
765                "resolve": "display->supportsAppleGPUFamily(1)",
766                "colorRenderable": "display->supportsAppleGPUFamily(1)"
767            },
768            "MTLPixelFormatPVRTC_RGB_4BPP":{
769                "filterable": "display->supportsAppleGPUFamily(1)"
770            },
771            "MTLPixelFormatPVRTC_RGB_2BPP":{
772                "filterable": "display->supportsAppleGPUFamily(1)"
773            },
774            "MTLPixelFormatPVRTC_RGBA_4BPP":{
775                "filterable": "display->supportsAppleGPUFamily(1)"
776            },
777            "MTLPixelFormatPVRTC_RGBA_2BPP":{
778                "filterable": "display->supportsAppleGPUFamily(1)"
779            },
780            "MTLPixelFormatPVRTC_RGB_2BPP_sRGB":{
781                "filterable": "display->supportsAppleGPUFamily(1)"
782            },
783            "MTLPixelFormatPVRTC_RGB_4BPP_sRGB":{
784                "filterable": "display->supportsAppleGPUFamily(1)"
785            },
786            "MTLPixelFormatPVRTC_RGBA_2BPP_sRGB":{
787                "filterable": "display->supportsAppleGPUFamily(1)"
788            },
789            "MTLPixelFormatPVRTC_RGBA_4BPP_sRGB":{
790                "filterable": "display->supportsAppleGPUFamily(1)"
791            },
792            "MTLPixelFormatETC2_RGB8":{
793                "filterable": "display->supportsAppleGPUFamily(1)"
794            },
795            "MTLPixelFormatETC2_RGB8_sRGB":{
796                "filterable": "display->supportsAppleGPUFamily(1)"
797            },
798            "MTLPixelFormatETC2_RGB8A1":{
799                "filterable": "display->supportsAppleGPUFamily(1)"
800            },
801            "MTLPixelFormatETC2_RGB8A1_sRGB":{
802                "filterable": "display->supportsAppleGPUFamily(1)"
803            },
804            "MTLPixelFormatEAC_RGBA8":{
805                "filterable": "display->supportsAppleGPUFamily(1)"
806            },
807            "MTLPixelFormatEAC_RGBA8_sRGB":{
808                "filterable": "display->supportsAppleGPUFamily(1)"
809            },
810            "MTLPixelFormatEAC_R11Unorm":{
811                "filterable": "display->supportsAppleGPUFamily(1)"
812            },
813            "MTLPixelFormatEAC_R11Snorm":{
814                "filterable": "display->supportsAppleGPUFamily(1)"
815            },
816            "MTLPixelFormatEAC_RG11Unorm":{
817                "filterable": "display->supportsAppleGPUFamily(1)"
818            },
819            "MTLPixelFormatEAC_RG11Snorm":{
820                "filterable": "display->supportsAppleGPUFamily(1)"
821            },
822            "MTLPixelFormatASTC_4x4_LDR":{
823                "filterable": "display->supportsAppleGPUFamily(2)"
824            },
825            "MTLPixelFormatASTC_4x4_sRGB":{
826                "filterable": "display->supportsAppleGPUFamily(2)"
827            },
828            "MTLPixelFormatASTC_5x4_LDR":{
829                "filterable": "display->supportsAppleGPUFamily(2)"
830            },
831            "MTLPixelFormatASTC_5x4_sRGB":{
832                "filterable": "display->supportsAppleGPUFamily(2)"
833            },
834            "MTLPixelFormatASTC_5x5_LDR":{
835                "filterable": "display->supportsAppleGPUFamily(2)"
836            },
837            "MTLPixelFormatASTC_5x5_sRGB":{
838                "filterable": "display->supportsAppleGPUFamily(2)"
839            },
840            "MTLPixelFormatASTC_6x5_LDR":{
841                "filterable": "display->supportsAppleGPUFamily(2)"
842            },
843            "MTLPixelFormatASTC_6x5_sRGB":{
844                "filterable": "display->supportsAppleGPUFamily(2)"
845            },
846            "MTLPixelFormatASTC_6x6_LDR":{
847                "filterable": "display->supportsAppleGPUFamily(2)"
848            },
849            "MTLPixelFormatASTC_6x6_sRGB":{
850                "filterable": "display->supportsAppleGPUFamily(2)"
851            },
852            "MTLPixelFormatASTC_8x5_LDR":{
853                "filterable": "display->supportsAppleGPUFamily(2)"
854            },
855            "MTLPixelFormatASTC_8x5_sRGB":{
856                "filterable": "display->supportsAppleGPUFamily(2)"
857            },
858            "MTLPixelFormatASTC_8x6_LDR":{
859                "filterable": "display->supportsAppleGPUFamily(2)"
860            },
861            "MTLPixelFormatASTC_8x6_sRGB":{
862                "filterable": "display->supportsAppleGPUFamily(2)"
863            },
864            "MTLPixelFormatASTC_8x8_LDR":{
865                "filterable": "display->supportsAppleGPUFamily(2)"
866            },
867            "MTLPixelFormatASTC_8x8_sRGB":{
868                "filterable": "display->supportsAppleGPUFamily(2)"
869            },
870            "MTLPixelFormatASTC_10x5_LDR":{
871                "filterable": "display->supportsAppleGPUFamily(2)"
872            },
873            "MTLPixelFormatASTC_10x5_sRGB":{
874                "filterable": "display->supportsAppleGPUFamily(2)"
875            },
876            "MTLPixelFormatASTC_10x6_LDR":{
877                "filterable": "display->supportsAppleGPUFamily(2)"
878            },
879            "MTLPixelFormatASTC_10x6_sRGB":{
880                "filterable": "display->supportsAppleGPUFamily(2)"
881            },
882            "MTLPixelFormatASTC_10x8_LDR":{
883                "filterable": "display->supportsAppleGPUFamily(2)"
884            },
885            "MTLPixelFormatASTC_10x8_sRGB":{
886                "filterable": "display->supportsAppleGPUFamily(2)"
887            },
888            "MTLPixelFormatASTC_10x10_LDR":{
889                "filterable": "display->supportsAppleGPUFamily(2)"
890            },
891            "MTLPixelFormatASTC_10x10_sRGB":{
892                "filterable": "display->supportsAppleGPUFamily(2)"
893            },
894            "MTLPixelFormatASTC_12x10_LDR":{
895                "filterable": "display->supportsAppleGPUFamily(2)"
896            },
897            "MTLPixelFormatASTC_12x10_sRGB":{
898                "filterable": "display->supportsAppleGPUFamily(2)"
899            },
900            "MTLPixelFormatASTC_12x12_LDR":{
901                "filterable": "display->supportsAppleGPUFamily(2)"
902            },
903            "MTLPixelFormatASTC_12x12_sRGB":{
904                "filterable": "display->supportsAppleGPUFamily(2)"
905            }
906        },
907        "caps_ios_specific" :
908        {
909            "MTLPixelFormatASTC_4x4_HDR":{
910                "filterable": "display->supportsAppleGPUFamily(6)"
911            },
912            "MTLPixelFormatASTC_5x4_HDR":{
913                "filterable": "display->supportsAppleGPUFamily(6)"
914            },
915            "MTLPixelFormatASTC_5x5_HDR":{
916                "filterable": "display->supportsAppleGPUFamily(6)"
917            },
918            "MTLPixelFormatASTC_6x5_HDR":{
919                "filterable": "display->supportsAppleGPUFamily(6)"
920            },
921            "MTLPixelFormatASTC_6x6_HDR":{
922                "filterable": "display->supportsAppleGPUFamily(6)"
923            },
924            "MTLPixelFormatASTC_8x5_HDR":{
925                "filterable": "display->supportsAppleGPUFamily(6)"
926            },
927            "MTLPixelFormatASTC_8x6_HDR":{
928                "filterable": "display->supportsAppleGPUFamily(6)"
929            },
930            "MTLPixelFormatASTC_8x8_HDR":{
931                "filterable": "display->supportsAppleGPUFamily(6)"
932            },
933            "MTLPixelFormatASTC_10x5_HDR":{
934                "filterable": "display->supportsAppleGPUFamily(6)"
935            },
936            "MTLPixelFormatASTC_10x6_HDR":{
937                "filterable": "display->supportsAppleGPUFamily(6)"
938            },
939            "MTLPixelFormatASTC_10x8_HDR":{
940                "filterable": "display->supportsAppleGPUFamily(6)"
941            },
942            "MTLPixelFormatASTC_10x10_HDR":{
943                "filterable": "display->supportsAppleGPUFamily(6)"
944            },
945            "MTLPixelFormatASTC_12x10_HDR":{
946                "filterable": "display->supportsAppleGPUFamily(6)"
947            },
948            "MTLPixelFormatASTC_12x12_HDR":{
949                "filterable": "display->supportsAppleGPUFamily(6)"
950            }
951        }
952    },
953    "vertex": {
954        "description": [
955            "- This section contains vertex format mapping between OpenGL and Metal similar to",
956            "image formats above",
957            "- override_tightly_packed is special emulation for those formats whose sizes",
958            "are not multiples of 4 bytes. They will be converted to appropriate 4 bytes aligned",
959            "formats.",
960            "This emulation is useful for the cases in which the stride of a vertex attribute",
961            "is required to be multiples of 4."
962        ],
963        "map": {
964            "NONE": "MTLVertexFormatInvalid",
965            "R8_UNORM": "MTLVertexFormatUCharNormalized",
966            "R8_SNORM": "MTLVertexFormatCharNormalized",
967            "R8_UINT": "MTLVertexFormatUChar",
968            "R8_SINT": "MTLVertexFormatChar",
969            "R8_USCALED": "MTLVertexFormatUChar",
970            "R8_SSCALED": "MTLVertexFormatChar",
971            "R8G8_UNORM": "MTLVertexFormatUChar2Normalized",
972            "R8G8_SNORM": "MTLVertexFormatChar2Normalized",
973            "R8G8_UINT": "MTLVertexFormatUChar2",
974            "R8G8_SINT": "MTLVertexFormatChar2",
975            "R8G8_USCALED": "MTLVertexFormatUChar2",
976            "R8G8_SSCALED": "MTLVertexFormatChar2",
977            "R8G8B8_UNORM": "MTLVertexFormatUChar3Normalized",
978            "R8G8B8_SNORM": "MTLVertexFormatChar3Normalized",
979            "R8G8B8_UINT": "MTLVertexFormatUChar3",
980            "R8G8B8_SINT": "MTLVertexFormatChar3",
981            "R8G8B8_USCALED": "MTLVertexFormatUChar3",
982            "R8G8B8_SSCALED": "MTLVertexFormatChar3",
983            "R8G8B8A8_UNORM": "MTLVertexFormatUChar4Normalized",
984            "R8G8B8A8_SNORM": "MTLVertexFormatChar4Normalized",
985            "R8G8B8A8_UINT": "MTLVertexFormatUChar4",
986            "R8G8B8A8_SINT": "MTLVertexFormatChar4",
987            "R8G8B8A8_USCALED": "MTLVertexFormatUChar4",
988            "R8G8B8A8_SSCALED": "MTLVertexFormatChar4",
989
990            "R16_UNORM": "MTLVertexFormatUShortNormalized",
991            "R16_SNORM": "MTLVertexFormatShortNormalized",
992            "R16_UINT": "MTLVertexFormatUShort",
993            "R16_SINT": "MTLVertexFormatShort",
994            "R16_USCALED": "MTLVertexFormatUShort",
995            "R16_SSCALED": "MTLVertexFormatShort",
996            "R16G16_UNORM": "MTLVertexFormatUShort2Normalized",
997            "R16G16_SNORM": "MTLVertexFormatShort2Normalized",
998            "R16G16_UINT": "MTLVertexFormatUShort2",
999            "R16G16_SINT": "MTLVertexFormatShort2",
1000            "R16G16_USCALED": "MTLVertexFormatUShort2",
1001            "R16G16_SSCALED": "MTLVertexFormatShort2",
1002            "R16G16B16_UNORM": "MTLVertexFormatUShort3Normalized",
1003            "R16G16B16_SNORM": "MTLVertexFormatShort3Normalized",
1004            "R16G16B16_UINT": "MTLVertexFormatUShort3",
1005            "R16G16B16_SINT": "MTLVertexFormatShort3",
1006            "R16G16B16_USCALED": "MTLVertexFormatUShort3",
1007            "R16G16B16_SSCALED": "MTLVertexFormatShort3",
1008            "R16G16B16A16_UNORM": "MTLVertexFormatUShort4Normalized",
1009            "R16G16B16A16_SNORM": "MTLVertexFormatShort4Normalized",
1010            "R16G16B16A16_UINT": "MTLVertexFormatUShort4",
1011            "R16G16B16A16_SINT": "MTLVertexFormatShort4",
1012            "R16G16B16A16_USCALED": "MTLVertexFormatUShort4",
1013            "R16G16B16A16_SSCALED": "MTLVertexFormatShort4",
1014
1015            "R32_UINT": "MTLVertexFormatUInt",
1016            "R32_SINT": "MTLVertexFormatInt",
1017            "R32G32_UINT": "MTLVertexFormatUInt2",
1018            "R32G32_SINT": "MTLVertexFormatInt2",
1019            "R32G32B32_UINT": "MTLVertexFormatUInt3",
1020            "R32G32B32_SINT": "MTLVertexFormatInt3",
1021            "R32G32B32A32_UINT": "MTLVertexFormatUInt4",
1022            "R32G32B32A32_SINT": "MTLVertexFormatInt4",
1023
1024            "R16_FLOAT": "MTLVertexFormatHalf",
1025            "R16G16_FLOAT": "MTLVertexFormatHalf2",
1026            "R16G16B16_FLOAT": "MTLVertexFormatHalf3",
1027            "R16G16B16A16_FLOAT": "MTLVertexFormatHalf4",
1028
1029            "R32_FLOAT": "MTLVertexFormatFloat",
1030            "R32G32_FLOAT": "MTLVertexFormatFloat2",
1031            "R32G32B32_FLOAT": "MTLVertexFormatFloat3",
1032            "R32G32B32A32_FLOAT": "MTLVertexFormatFloat4",
1033
1034            "R10G10B10A2_SNORM": "MTLVertexFormatInt1010102Normalized",
1035            "R10G10B10A2_UNORM": "MTLVertexFormatUInt1010102Normalized"
1036        },
1037        "override": {
1038            "R32_FIXED": "R32_FLOAT",
1039            "R32_UNORM": "R32_FLOAT",
1040            "R32_SNORM": "R32_FLOAT",
1041            "R32_USCALED": "R32_FLOAT",
1042            "R32_SSCALED": "R32_FLOAT",
1043            "R32G32_FIXED": "R32G32_FLOAT",
1044            "R32G32_UNORM": "R32G32_FLOAT",
1045            "R32G32_SNORM": "R32G32_FLOAT",
1046            "R32G32_USCALED": "R32G32_FLOAT",
1047            "R32G32_SSCALED": "R32G32_FLOAT",
1048            "R32G32B32_FIXED": "R32G32B32_FLOAT",
1049            "R32G32B32_UNORM": "R32G32B32_FLOAT",
1050            "R32G32B32_SNORM": "R32G32B32_FLOAT",
1051            "R32G32B32_USCALED": "R32G32B32_FLOAT",
1052            "R32G32B32_SSCALED": "R32G32B32_FLOAT",
1053            "R32G32B32A32_FIXED": "R32G32B32A32_FLOAT",
1054            "R32G32B32A32_UNORM": "R32G32B32A32_FLOAT",
1055            "R32G32B32A32_SNORM": "R32G32B32A32_FLOAT",
1056            "R32G32B32A32_USCALED": "R32G32B32A32_FLOAT",
1057            "R32G32B32A32_SSCALED": "R32G32B32A32_FLOAT",
1058            "R10G10B10A2_SINT": "R32G32B32A32_FLOAT",
1059            "R10G10B10A2_SSCALED": "R32G32B32A32_FLOAT",
1060            "R10G10B10A2_UINT": "R32G32B32A32_FLOAT",
1061            "R10G10B10A2_USCALED": "R32G32B32A32_FLOAT"
1062        },
1063        "override_tightly_packed": {
1064            "R16_FLOAT": "R16G16_FLOAT",
1065            "R16_UNORM": "R16G16_UNORM",
1066            "R16_SNORM": "R16G16_SNORM",
1067            "R16_UINT": "R16G16_UINT",
1068            "R16_SINT": "R16G16_SINT",
1069            "R16_USCALED": "R16G16_UINT",
1070            "R16_SSCALED": "R16G16_SINT",
1071            "R16G16B16_FLOAT": "R16G16B16A16_FLOAT",
1072            "R16G16B16_UNORM": "R16G16B16A16_UNORM",
1073            "R16G16B16_SNORM": "R16G16B16A16_SNORM",
1074            "R16G16B16_UINT": "R16G16B16A16_UINT",
1075            "R16G16B16_SINT": "R16G16B16A16_SINT",
1076            "R16G16B16_USCALED": "R16G16B16A16_UINT",
1077            "R16G16B16_SSCALED": "R16G16B16A16_SINT",
1078            "R8_UNORM": "R8G8B8A8_UNORM",
1079            "R8_SNORM": "R8G8B8A8_SNORM",
1080            "R8_UINT": "R8G8B8A8_UINT",
1081            "R8_SINT": "R8G8B8A8_SINT",
1082            "R8_USCALED": "R8G8B8A8_UINT",
1083            "R8_SSCALED": "R8G8B8A8_SINT",
1084            "R8G8_UNORM": "R8G8B8A8_UNORM",
1085            "R8G8_SNORM": "R8G8B8A8_SNORM",
1086            "R8G8_UINT": "R8G8B8A8_UINT",
1087            "R8G8_SINT": "R8G8B8A8_SINT",
1088            "R8G8_USCALED": "R8G8B8A8_UINT",
1089            "R8G8_SSCALED": "R8G8B8A8_SINT",
1090            "R8G8B8_UNORM": "R8G8B8A8_UNORM",
1091            "R8G8B8_SNORM": "R8G8B8A8_SNORM",
1092            "R8G8B8_UINT": "R8G8B8A8_UINT",
1093            "R8G8B8_SINT": "R8G8B8A8_SINT",
1094            "R8G8B8_USCALED": "R8G8B8A8_UINT",
1095            "R8G8B8_SSCALED": "R8G8B8A8_SINT"
1096        }
1097    }
1098}
1099