build: Update known good for 1.1.124 Vulkan header
[platform/upstream/Vulkan-Tools.git] / icd / generated / vk_typemap_helper.h
1 // *** THIS FILE IS GENERATED - DO NOT EDIT ***
2 // See vulkan_tools_helper_file_generator.py for modifications
3
4
5 /***************************************************************************
6  *
7  * Copyright (c) 2015-2017 The Khronos Group Inc.
8  * Copyright (c) 2015-2017 Valve Corporation
9  * Copyright (c) 2015-2017 LunarG, Inc.
10  * Copyright (c) 2015-2017 Google Inc.
11  *
12  * Licensed under the Apache License, Version 2.0 (the "License");
13  * you may not use this file except in compliance with the License.
14  * You may obtain a copy of the License at
15  *
16  *     http://www.apache.org/licenses/LICENSE-2.0
17  *
18  * Unless required by applicable law or agreed to in writing, software
19  * distributed under the License is distributed on an "AS IS" BASIS,
20  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21  * See the License for the specific language governing permissions and
22  * limitations under the License.
23  *
24  * Author: Mark Lobodzinski <mark@lunarg.com>
25  * Author: Courtney Goeltzenleuchter <courtneygo@google.com>
26  * Author: Tobin Ehlis <tobine@google.com>
27  * Author: Chris Forbes <chrisforbes@google.com>
28  * Author: John Zulauf<jzulauf@lunarg.com>
29  *
30  ****************************************************************************/
31
32 #pragma once
33 #include <vulkan/vulkan.h>
34
35 // These empty generic templates are specialized for each type with sType
36 // members and for each sType -- providing a two way map between structure
37 // types and sTypes
38
39 template <VkStructureType id> struct LvlSTypeMap {};
40 template <typename T> struct LvlTypeMap {};
41
42 // Map type VkApplicationInfo to id VK_STRUCTURE_TYPE_APPLICATION_INFO
43 template <> struct LvlTypeMap<VkApplicationInfo> {
44     static const VkStructureType kSType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
45 };
46
47 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_APPLICATION_INFO> {
48     typedef VkApplicationInfo Type;
49 };
50
51 // Map type VkInstanceCreateInfo to id VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
52 template <> struct LvlTypeMap<VkInstanceCreateInfo> {
53     static const VkStructureType kSType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
54 };
55
56 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO> {
57     typedef VkInstanceCreateInfo Type;
58 };
59
60 // Map type VkDeviceQueueCreateInfo to id VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
61 template <> struct LvlTypeMap<VkDeviceQueueCreateInfo> {
62     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
63 };
64
65 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO> {
66     typedef VkDeviceQueueCreateInfo Type;
67 };
68
69 // Map type VkDeviceCreateInfo to id VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
70 template <> struct LvlTypeMap<VkDeviceCreateInfo> {
71     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
72 };
73
74 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO> {
75     typedef VkDeviceCreateInfo Type;
76 };
77
78 // Map type VkSubmitInfo to id VK_STRUCTURE_TYPE_SUBMIT_INFO
79 template <> struct LvlTypeMap<VkSubmitInfo> {
80     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
81 };
82
83 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SUBMIT_INFO> {
84     typedef VkSubmitInfo Type;
85 };
86
87 // Map type VkMemoryAllocateInfo to id VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
88 template <> struct LvlTypeMap<VkMemoryAllocateInfo> {
89     static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
90 };
91
92 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO> {
93     typedef VkMemoryAllocateInfo Type;
94 };
95
96 // Map type VkMappedMemoryRange to id VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
97 template <> struct LvlTypeMap<VkMappedMemoryRange> {
98     static const VkStructureType kSType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE;
99 };
100
101 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE> {
102     typedef VkMappedMemoryRange Type;
103 };
104
105 // Map type VkBindSparseInfo to id VK_STRUCTURE_TYPE_BIND_SPARSE_INFO
106 template <> struct LvlTypeMap<VkBindSparseInfo> {
107     static const VkStructureType kSType = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO;
108 };
109
110 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_BIND_SPARSE_INFO> {
111     typedef VkBindSparseInfo Type;
112 };
113
114 // Map type VkFenceCreateInfo to id VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
115 template <> struct LvlTypeMap<VkFenceCreateInfo> {
116     static const VkStructureType kSType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
117 };
118
119 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_FENCE_CREATE_INFO> {
120     typedef VkFenceCreateInfo Type;
121 };
122
123 // Map type VkSemaphoreCreateInfo to id VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
124 template <> struct LvlTypeMap<VkSemaphoreCreateInfo> {
125     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO;
126 };
127
128 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO> {
129     typedef VkSemaphoreCreateInfo Type;
130 };
131
132 // Map type VkEventCreateInfo to id VK_STRUCTURE_TYPE_EVENT_CREATE_INFO
133 template <> struct LvlTypeMap<VkEventCreateInfo> {
134     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO;
135 };
136
137 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EVENT_CREATE_INFO> {
138     typedef VkEventCreateInfo Type;
139 };
140
141 // Map type VkQueryPoolCreateInfo to id VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
142 template <> struct LvlTypeMap<VkQueryPoolCreateInfo> {
143     static const VkStructureType kSType = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO;
144 };
145
146 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO> {
147     typedef VkQueryPoolCreateInfo Type;
148 };
149
150 // Map type VkBufferCreateInfo to id VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
151 template <> struct LvlTypeMap<VkBufferCreateInfo> {
152     static const VkStructureType kSType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
153 };
154
155 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO> {
156     typedef VkBufferCreateInfo Type;
157 };
158
159 // Map type VkBufferViewCreateInfo to id VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
160 template <> struct LvlTypeMap<VkBufferViewCreateInfo> {
161     static const VkStructureType kSType = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO;
162 };
163
164 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO> {
165     typedef VkBufferViewCreateInfo Type;
166 };
167
168 // Map type VkImageCreateInfo to id VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
169 template <> struct LvlTypeMap<VkImageCreateInfo> {
170     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
171 };
172
173 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO> {
174     typedef VkImageCreateInfo Type;
175 };
176
177 // Map type VkImageViewCreateInfo to id VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
178 template <> struct LvlTypeMap<VkImageViewCreateInfo> {
179     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
180 };
181
182 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO> {
183     typedef VkImageViewCreateInfo Type;
184 };
185
186 // Map type VkShaderModuleCreateInfo to id VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
187 template <> struct LvlTypeMap<VkShaderModuleCreateInfo> {
188     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
189 };
190
191 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO> {
192     typedef VkShaderModuleCreateInfo Type;
193 };
194
195 // Map type VkPipelineCacheCreateInfo to id VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
196 template <> struct LvlTypeMap<VkPipelineCacheCreateInfo> {
197     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO;
198 };
199
200 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO> {
201     typedef VkPipelineCacheCreateInfo Type;
202 };
203
204 // Map type VkPipelineShaderStageCreateInfo to id VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
205 template <> struct LvlTypeMap<VkPipelineShaderStageCreateInfo> {
206     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
207 };
208
209 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO> {
210     typedef VkPipelineShaderStageCreateInfo Type;
211 };
212
213 // Map type VkPipelineVertexInputStateCreateInfo to id VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
214 template <> struct LvlTypeMap<VkPipelineVertexInputStateCreateInfo> {
215     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;
216 };
217
218 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO> {
219     typedef VkPipelineVertexInputStateCreateInfo Type;
220 };
221
222 // Map type VkPipelineInputAssemblyStateCreateInfo to id VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
223 template <> struct LvlTypeMap<VkPipelineInputAssemblyStateCreateInfo> {
224     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
225 };
226
227 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO> {
228     typedef VkPipelineInputAssemblyStateCreateInfo Type;
229 };
230
231 // Map type VkPipelineTessellationStateCreateInfo to id VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
232 template <> struct LvlTypeMap<VkPipelineTessellationStateCreateInfo> {
233     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO;
234 };
235
236 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO> {
237     typedef VkPipelineTessellationStateCreateInfo Type;
238 };
239
240 // Map type VkPipelineViewportStateCreateInfo to id VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
241 template <> struct LvlTypeMap<VkPipelineViewportStateCreateInfo> {
242     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO;
243 };
244
245 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO> {
246     typedef VkPipelineViewportStateCreateInfo Type;
247 };
248
249 // Map type VkPipelineRasterizationStateCreateInfo to id VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
250 template <> struct LvlTypeMap<VkPipelineRasterizationStateCreateInfo> {
251     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO;
252 };
253
254 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO> {
255     typedef VkPipelineRasterizationStateCreateInfo Type;
256 };
257
258 // Map type VkPipelineMultisampleStateCreateInfo to id VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
259 template <> struct LvlTypeMap<VkPipelineMultisampleStateCreateInfo> {
260     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO;
261 };
262
263 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO> {
264     typedef VkPipelineMultisampleStateCreateInfo Type;
265 };
266
267 // Map type VkPipelineDepthStencilStateCreateInfo to id VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
268 template <> struct LvlTypeMap<VkPipelineDepthStencilStateCreateInfo> {
269     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO;
270 };
271
272 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO> {
273     typedef VkPipelineDepthStencilStateCreateInfo Type;
274 };
275
276 // Map type VkPipelineColorBlendStateCreateInfo to id VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
277 template <> struct LvlTypeMap<VkPipelineColorBlendStateCreateInfo> {
278     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;
279 };
280
281 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO> {
282     typedef VkPipelineColorBlendStateCreateInfo Type;
283 };
284
285 // Map type VkPipelineDynamicStateCreateInfo to id VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
286 template <> struct LvlTypeMap<VkPipelineDynamicStateCreateInfo> {
287     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO;
288 };
289
290 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO> {
291     typedef VkPipelineDynamicStateCreateInfo Type;
292 };
293
294 // Map type VkGraphicsPipelineCreateInfo to id VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
295 template <> struct LvlTypeMap<VkGraphicsPipelineCreateInfo> {
296     static const VkStructureType kSType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
297 };
298
299 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO> {
300     typedef VkGraphicsPipelineCreateInfo Type;
301 };
302
303 // Map type VkComputePipelineCreateInfo to id VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
304 template <> struct LvlTypeMap<VkComputePipelineCreateInfo> {
305     static const VkStructureType kSType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO;
306 };
307
308 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO> {
309     typedef VkComputePipelineCreateInfo Type;
310 };
311
312 // Map type VkPipelineLayoutCreateInfo to id VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
313 template <> struct LvlTypeMap<VkPipelineLayoutCreateInfo> {
314     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
315 };
316
317 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO> {
318     typedef VkPipelineLayoutCreateInfo Type;
319 };
320
321 // Map type VkSamplerCreateInfo to id VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
322 template <> struct LvlTypeMap<VkSamplerCreateInfo> {
323     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
324 };
325
326 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO> {
327     typedef VkSamplerCreateInfo Type;
328 };
329
330 // Map type VkDescriptorSetLayoutCreateInfo to id VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
331 template <> struct LvlTypeMap<VkDescriptorSetLayoutCreateInfo> {
332     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
333 };
334
335 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO> {
336     typedef VkDescriptorSetLayoutCreateInfo Type;
337 };
338
339 // Map type VkDescriptorPoolCreateInfo to id VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
340 template <> struct LvlTypeMap<VkDescriptorPoolCreateInfo> {
341     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
342 };
343
344 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO> {
345     typedef VkDescriptorPoolCreateInfo Type;
346 };
347
348 // Map type VkDescriptorSetAllocateInfo to id VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
349 template <> struct LvlTypeMap<VkDescriptorSetAllocateInfo> {
350     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO;
351 };
352
353 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO> {
354     typedef VkDescriptorSetAllocateInfo Type;
355 };
356
357 // Map type VkWriteDescriptorSet to id VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
358 template <> struct LvlTypeMap<VkWriteDescriptorSet> {
359     static const VkStructureType kSType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
360 };
361
362 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET> {
363     typedef VkWriteDescriptorSet Type;
364 };
365
366 // Map type VkCopyDescriptorSet to id VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
367 template <> struct LvlTypeMap<VkCopyDescriptorSet> {
368     static const VkStructureType kSType = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET;
369 };
370
371 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET> {
372     typedef VkCopyDescriptorSet Type;
373 };
374
375 // Map type VkFramebufferCreateInfo to id VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
376 template <> struct LvlTypeMap<VkFramebufferCreateInfo> {
377     static const VkStructureType kSType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
378 };
379
380 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO> {
381     typedef VkFramebufferCreateInfo Type;
382 };
383
384 // Map type VkRenderPassCreateInfo to id VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
385 template <> struct LvlTypeMap<VkRenderPassCreateInfo> {
386     static const VkStructureType kSType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
387 };
388
389 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO> {
390     typedef VkRenderPassCreateInfo Type;
391 };
392
393 // Map type VkCommandPoolCreateInfo to id VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
394 template <> struct LvlTypeMap<VkCommandPoolCreateInfo> {
395     static const VkStructureType kSType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
396 };
397
398 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO> {
399     typedef VkCommandPoolCreateInfo Type;
400 };
401
402 // Map type VkCommandBufferAllocateInfo to id VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
403 template <> struct LvlTypeMap<VkCommandBufferAllocateInfo> {
404     static const VkStructureType kSType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
405 };
406
407 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO> {
408     typedef VkCommandBufferAllocateInfo Type;
409 };
410
411 // Map type VkCommandBufferInheritanceInfo to id VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
412 template <> struct LvlTypeMap<VkCommandBufferInheritanceInfo> {
413     static const VkStructureType kSType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO;
414 };
415
416 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO> {
417     typedef VkCommandBufferInheritanceInfo Type;
418 };
419
420 // Map type VkCommandBufferBeginInfo to id VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
421 template <> struct LvlTypeMap<VkCommandBufferBeginInfo> {
422     static const VkStructureType kSType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
423 };
424
425 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO> {
426     typedef VkCommandBufferBeginInfo Type;
427 };
428
429 // Map type VkMemoryBarrier to id VK_STRUCTURE_TYPE_MEMORY_BARRIER
430 template <> struct LvlTypeMap<VkMemoryBarrier> {
431     static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_BARRIER;
432 };
433
434 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_MEMORY_BARRIER> {
435     typedef VkMemoryBarrier Type;
436 };
437
438 // Map type VkBufferMemoryBarrier to id VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
439 template <> struct LvlTypeMap<VkBufferMemoryBarrier> {
440     static const VkStructureType kSType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER;
441 };
442
443 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER> {
444     typedef VkBufferMemoryBarrier Type;
445 };
446
447 // Map type VkImageMemoryBarrier to id VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
448 template <> struct LvlTypeMap<VkImageMemoryBarrier> {
449     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
450 };
451
452 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER> {
453     typedef VkImageMemoryBarrier Type;
454 };
455
456 // Map type VkRenderPassBeginInfo to id VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
457 template <> struct LvlTypeMap<VkRenderPassBeginInfo> {
458     static const VkStructureType kSType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;
459 };
460
461 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO> {
462     typedef VkRenderPassBeginInfo Type;
463 };
464
465 // Map type VkPhysicalDeviceSubgroupProperties to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES
466 template <> struct LvlTypeMap<VkPhysicalDeviceSubgroupProperties> {
467     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
468 };
469
470 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES> {
471     typedef VkPhysicalDeviceSubgroupProperties Type;
472 };
473
474 // Map type VkBindBufferMemoryInfo to id VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO
475 template <> struct LvlTypeMap<VkBindBufferMemoryInfo> {
476     static const VkStructureType kSType = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO;
477 };
478
479 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO> {
480     typedef VkBindBufferMemoryInfo Type;
481 };
482
483 // Map type VkBindImageMemoryInfo to id VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
484 template <> struct LvlTypeMap<VkBindImageMemoryInfo> {
485     static const VkStructureType kSType = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO;
486 };
487
488 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO> {
489     typedef VkBindImageMemoryInfo Type;
490 };
491
492 // Map type VkPhysicalDevice16BitStorageFeatures to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES
493 template <> struct LvlTypeMap<VkPhysicalDevice16BitStorageFeatures> {
494     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;
495 };
496
497 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES> {
498     typedef VkPhysicalDevice16BitStorageFeatures Type;
499 };
500
501 // Map type VkMemoryDedicatedRequirements to id VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS
502 template <> struct LvlTypeMap<VkMemoryDedicatedRequirements> {
503     static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS;
504 };
505
506 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS> {
507     typedef VkMemoryDedicatedRequirements Type;
508 };
509
510 // Map type VkMemoryDedicatedAllocateInfo to id VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO
511 template <> struct LvlTypeMap<VkMemoryDedicatedAllocateInfo> {
512     static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO;
513 };
514
515 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO> {
516     typedef VkMemoryDedicatedAllocateInfo Type;
517 };
518
519 // Map type VkMemoryAllocateFlagsInfo to id VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
520 template <> struct LvlTypeMap<VkMemoryAllocateFlagsInfo> {
521     static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO;
522 };
523
524 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO> {
525     typedef VkMemoryAllocateFlagsInfo Type;
526 };
527
528 // Map type VkDeviceGroupRenderPassBeginInfo to id VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO
529 template <> struct LvlTypeMap<VkDeviceGroupRenderPassBeginInfo> {
530     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO;
531 };
532
533 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO> {
534     typedef VkDeviceGroupRenderPassBeginInfo Type;
535 };
536
537 // Map type VkDeviceGroupCommandBufferBeginInfo to id VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO
538 template <> struct LvlTypeMap<VkDeviceGroupCommandBufferBeginInfo> {
539     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO;
540 };
541
542 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO> {
543     typedef VkDeviceGroupCommandBufferBeginInfo Type;
544 };
545
546 // Map type VkDeviceGroupSubmitInfo to id VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO
547 template <> struct LvlTypeMap<VkDeviceGroupSubmitInfo> {
548     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO;
549 };
550
551 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO> {
552     typedef VkDeviceGroupSubmitInfo Type;
553 };
554
555 // Map type VkDeviceGroupBindSparseInfo to id VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO
556 template <> struct LvlTypeMap<VkDeviceGroupBindSparseInfo> {
557     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO;
558 };
559
560 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO> {
561     typedef VkDeviceGroupBindSparseInfo Type;
562 };
563
564 // Map type VkBindBufferMemoryDeviceGroupInfo to id VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO
565 template <> struct LvlTypeMap<VkBindBufferMemoryDeviceGroupInfo> {
566     static const VkStructureType kSType = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO;
567 };
568
569 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO> {
570     typedef VkBindBufferMemoryDeviceGroupInfo Type;
571 };
572
573 // Map type VkBindImageMemoryDeviceGroupInfo to id VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO
574 template <> struct LvlTypeMap<VkBindImageMemoryDeviceGroupInfo> {
575     static const VkStructureType kSType = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO;
576 };
577
578 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO> {
579     typedef VkBindImageMemoryDeviceGroupInfo Type;
580 };
581
582 // Map type VkPhysicalDeviceGroupProperties to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES
583 template <> struct LvlTypeMap<VkPhysicalDeviceGroupProperties> {
584     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES;
585 };
586
587 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES> {
588     typedef VkPhysicalDeviceGroupProperties Type;
589 };
590
591 // Map type VkDeviceGroupDeviceCreateInfo to id VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO
592 template <> struct LvlTypeMap<VkDeviceGroupDeviceCreateInfo> {
593     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO;
594 };
595
596 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO> {
597     typedef VkDeviceGroupDeviceCreateInfo Type;
598 };
599
600 // Map type VkBufferMemoryRequirementsInfo2 to id VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2
601 template <> struct LvlTypeMap<VkBufferMemoryRequirementsInfo2> {
602     static const VkStructureType kSType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2;
603 };
604
605 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2> {
606     typedef VkBufferMemoryRequirementsInfo2 Type;
607 };
608
609 // Map type VkImageMemoryRequirementsInfo2 to id VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2
610 template <> struct LvlTypeMap<VkImageMemoryRequirementsInfo2> {
611     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2;
612 };
613
614 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2> {
615     typedef VkImageMemoryRequirementsInfo2 Type;
616 };
617
618 // Map type VkImageSparseMemoryRequirementsInfo2 to id VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
619 template <> struct LvlTypeMap<VkImageSparseMemoryRequirementsInfo2> {
620     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2;
621 };
622
623 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2> {
624     typedef VkImageSparseMemoryRequirementsInfo2 Type;
625 };
626
627 // Map type VkMemoryRequirements2 to id VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2
628 template <> struct LvlTypeMap<VkMemoryRequirements2> {
629     static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
630 };
631
632 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2> {
633     typedef VkMemoryRequirements2 Type;
634 };
635
636 // Map type VkSparseImageMemoryRequirements2 to id VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2
637 template <> struct LvlTypeMap<VkSparseImageMemoryRequirements2> {
638     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2;
639 };
640
641 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2> {
642     typedef VkSparseImageMemoryRequirements2 Type;
643 };
644
645 // Map type VkPhysicalDeviceFeatures2 to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2
646 template <> struct LvlTypeMap<VkPhysicalDeviceFeatures2> {
647     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
648 };
649
650 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2> {
651     typedef VkPhysicalDeviceFeatures2 Type;
652 };
653
654 // Map type VkPhysicalDeviceProperties2 to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
655 template <> struct LvlTypeMap<VkPhysicalDeviceProperties2> {
656     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
657 };
658
659 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2> {
660     typedef VkPhysicalDeviceProperties2 Type;
661 };
662
663 // Map type VkFormatProperties2 to id VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2
664 template <> struct LvlTypeMap<VkFormatProperties2> {
665     static const VkStructureType kSType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2;
666 };
667
668 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2> {
669     typedef VkFormatProperties2 Type;
670 };
671
672 // Map type VkImageFormatProperties2 to id VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2
673 template <> struct LvlTypeMap<VkImageFormatProperties2> {
674     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2;
675 };
676
677 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2> {
678     typedef VkImageFormatProperties2 Type;
679 };
680
681 // Map type VkPhysicalDeviceImageFormatInfo2 to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2
682 template <> struct LvlTypeMap<VkPhysicalDeviceImageFormatInfo2> {
683     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2;
684 };
685
686 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2> {
687     typedef VkPhysicalDeviceImageFormatInfo2 Type;
688 };
689
690 // Map type VkQueueFamilyProperties2 to id VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2
691 template <> struct LvlTypeMap<VkQueueFamilyProperties2> {
692     static const VkStructureType kSType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2;
693 };
694
695 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2> {
696     typedef VkQueueFamilyProperties2 Type;
697 };
698
699 // Map type VkPhysicalDeviceMemoryProperties2 to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2
700 template <> struct LvlTypeMap<VkPhysicalDeviceMemoryProperties2> {
701     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2;
702 };
703
704 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2> {
705     typedef VkPhysicalDeviceMemoryProperties2 Type;
706 };
707
708 // Map type VkSparseImageFormatProperties2 to id VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2
709 template <> struct LvlTypeMap<VkSparseImageFormatProperties2> {
710     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2;
711 };
712
713 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2> {
714     typedef VkSparseImageFormatProperties2 Type;
715 };
716
717 // Map type VkPhysicalDeviceSparseImageFormatInfo2 to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
718 template <> struct LvlTypeMap<VkPhysicalDeviceSparseImageFormatInfo2> {
719     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2;
720 };
721
722 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2> {
723     typedef VkPhysicalDeviceSparseImageFormatInfo2 Type;
724 };
725
726 // Map type VkPhysicalDevicePointClippingProperties to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
727 template <> struct LvlTypeMap<VkPhysicalDevicePointClippingProperties> {
728     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES;
729 };
730
731 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES> {
732     typedef VkPhysicalDevicePointClippingProperties Type;
733 };
734
735 // Map type VkRenderPassInputAttachmentAspectCreateInfo to id VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
736 template <> struct LvlTypeMap<VkRenderPassInputAttachmentAspectCreateInfo> {
737     static const VkStructureType kSType = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO;
738 };
739
740 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO> {
741     typedef VkRenderPassInputAttachmentAspectCreateInfo Type;
742 };
743
744 // Map type VkImageViewUsageCreateInfo to id VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO
745 template <> struct LvlTypeMap<VkImageViewUsageCreateInfo> {
746     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO;
747 };
748
749 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO> {
750     typedef VkImageViewUsageCreateInfo Type;
751 };
752
753 // Map type VkPipelineTessellationDomainOriginStateCreateInfo to id VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
754 template <> struct LvlTypeMap<VkPipelineTessellationDomainOriginStateCreateInfo> {
755     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO;
756 };
757
758 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO> {
759     typedef VkPipelineTessellationDomainOriginStateCreateInfo Type;
760 };
761
762 // Map type VkRenderPassMultiviewCreateInfo to id VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO
763 template <> struct LvlTypeMap<VkRenderPassMultiviewCreateInfo> {
764     static const VkStructureType kSType = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO;
765 };
766
767 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO> {
768     typedef VkRenderPassMultiviewCreateInfo Type;
769 };
770
771 // Map type VkPhysicalDeviceMultiviewFeatures to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES
772 template <> struct LvlTypeMap<VkPhysicalDeviceMultiviewFeatures> {
773     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES;
774 };
775
776 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES> {
777     typedef VkPhysicalDeviceMultiviewFeatures Type;
778 };
779
780 // Map type VkPhysicalDeviceMultiviewProperties to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES
781 template <> struct LvlTypeMap<VkPhysicalDeviceMultiviewProperties> {
782     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES;
783 };
784
785 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES> {
786     typedef VkPhysicalDeviceMultiviewProperties Type;
787 };
788
789 // Map type VkPhysicalDeviceVariablePointersFeatures to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES
790 template <> struct LvlTypeMap<VkPhysicalDeviceVariablePointersFeatures> {
791     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;
792 };
793
794 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES> {
795     typedef VkPhysicalDeviceVariablePointersFeatures Type;
796 };
797
798 // Map type VkPhysicalDeviceProtectedMemoryFeatures to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
799 template <> struct LvlTypeMap<VkPhysicalDeviceProtectedMemoryFeatures> {
800     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES;
801 };
802
803 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES> {
804     typedef VkPhysicalDeviceProtectedMemoryFeatures Type;
805 };
806
807 // Map type VkPhysicalDeviceProtectedMemoryProperties to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
808 template <> struct LvlTypeMap<VkPhysicalDeviceProtectedMemoryProperties> {
809     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES;
810 };
811
812 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES> {
813     typedef VkPhysicalDeviceProtectedMemoryProperties Type;
814 };
815
816 // Map type VkDeviceQueueInfo2 to id VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2
817 template <> struct LvlTypeMap<VkDeviceQueueInfo2> {
818     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2;
819 };
820
821 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2> {
822     typedef VkDeviceQueueInfo2 Type;
823 };
824
825 // Map type VkProtectedSubmitInfo to id VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO
826 template <> struct LvlTypeMap<VkProtectedSubmitInfo> {
827     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO;
828 };
829
830 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO> {
831     typedef VkProtectedSubmitInfo Type;
832 };
833
834 // Map type VkSamplerYcbcrConversionCreateInfo to id VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO
835 template <> struct LvlTypeMap<VkSamplerYcbcrConversionCreateInfo> {
836     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO;
837 };
838
839 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO> {
840     typedef VkSamplerYcbcrConversionCreateInfo Type;
841 };
842
843 // Map type VkSamplerYcbcrConversionInfo to id VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO
844 template <> struct LvlTypeMap<VkSamplerYcbcrConversionInfo> {
845     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO;
846 };
847
848 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO> {
849     typedef VkSamplerYcbcrConversionInfo Type;
850 };
851
852 // Map type VkBindImagePlaneMemoryInfo to id VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO
853 template <> struct LvlTypeMap<VkBindImagePlaneMemoryInfo> {
854     static const VkStructureType kSType = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO;
855 };
856
857 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO> {
858     typedef VkBindImagePlaneMemoryInfo Type;
859 };
860
861 // Map type VkImagePlaneMemoryRequirementsInfo to id VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO
862 template <> struct LvlTypeMap<VkImagePlaneMemoryRequirementsInfo> {
863     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO;
864 };
865
866 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO> {
867     typedef VkImagePlaneMemoryRequirementsInfo Type;
868 };
869
870 // Map type VkPhysicalDeviceSamplerYcbcrConversionFeatures to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
871 template <> struct LvlTypeMap<VkPhysicalDeviceSamplerYcbcrConversionFeatures> {
872     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;
873 };
874
875 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES> {
876     typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures Type;
877 };
878
879 // Map type VkSamplerYcbcrConversionImageFormatProperties to id VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
880 template <> struct LvlTypeMap<VkSamplerYcbcrConversionImageFormatProperties> {
881     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES;
882 };
883
884 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES> {
885     typedef VkSamplerYcbcrConversionImageFormatProperties Type;
886 };
887
888 // Map type VkDescriptorUpdateTemplateCreateInfo to id VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO
889 template <> struct LvlTypeMap<VkDescriptorUpdateTemplateCreateInfo> {
890     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO;
891 };
892
893 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO> {
894     typedef VkDescriptorUpdateTemplateCreateInfo Type;
895 };
896
897 // Map type VkPhysicalDeviceExternalImageFormatInfo to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
898 template <> struct LvlTypeMap<VkPhysicalDeviceExternalImageFormatInfo> {
899     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO;
900 };
901
902 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO> {
903     typedef VkPhysicalDeviceExternalImageFormatInfo Type;
904 };
905
906 // Map type VkExternalImageFormatProperties to id VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES
907 template <> struct LvlTypeMap<VkExternalImageFormatProperties> {
908     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES;
909 };
910
911 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES> {
912     typedef VkExternalImageFormatProperties Type;
913 };
914
915 // Map type VkPhysicalDeviceExternalBufferInfo to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO
916 template <> struct LvlTypeMap<VkPhysicalDeviceExternalBufferInfo> {
917     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO;
918 };
919
920 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO> {
921     typedef VkPhysicalDeviceExternalBufferInfo Type;
922 };
923
924 // Map type VkExternalBufferProperties to id VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES
925 template <> struct LvlTypeMap<VkExternalBufferProperties> {
926     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES;
927 };
928
929 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES> {
930     typedef VkExternalBufferProperties Type;
931 };
932
933 // Map type VkPhysicalDeviceIDProperties to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
934 template <> struct LvlTypeMap<VkPhysicalDeviceIDProperties> {
935     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES;
936 };
937
938 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES> {
939     typedef VkPhysicalDeviceIDProperties Type;
940 };
941
942 // Map type VkExternalMemoryImageCreateInfo to id VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO
943 template <> struct LvlTypeMap<VkExternalMemoryImageCreateInfo> {
944     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO;
945 };
946
947 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO> {
948     typedef VkExternalMemoryImageCreateInfo Type;
949 };
950
951 // Map type VkExternalMemoryBufferCreateInfo to id VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO
952 template <> struct LvlTypeMap<VkExternalMemoryBufferCreateInfo> {
953     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO;
954 };
955
956 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO> {
957     typedef VkExternalMemoryBufferCreateInfo Type;
958 };
959
960 // Map type VkExportMemoryAllocateInfo to id VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO
961 template <> struct LvlTypeMap<VkExportMemoryAllocateInfo> {
962     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO;
963 };
964
965 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO> {
966     typedef VkExportMemoryAllocateInfo Type;
967 };
968
969 // Map type VkPhysicalDeviceExternalFenceInfo to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO
970 template <> struct LvlTypeMap<VkPhysicalDeviceExternalFenceInfo> {
971     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO;
972 };
973
974 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO> {
975     typedef VkPhysicalDeviceExternalFenceInfo Type;
976 };
977
978 // Map type VkExternalFenceProperties to id VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES
979 template <> struct LvlTypeMap<VkExternalFenceProperties> {
980     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES;
981 };
982
983 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES> {
984     typedef VkExternalFenceProperties Type;
985 };
986
987 // Map type VkExportFenceCreateInfo to id VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO
988 template <> struct LvlTypeMap<VkExportFenceCreateInfo> {
989     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO;
990 };
991
992 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO> {
993     typedef VkExportFenceCreateInfo Type;
994 };
995
996 // Map type VkExportSemaphoreCreateInfo to id VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO
997 template <> struct LvlTypeMap<VkExportSemaphoreCreateInfo> {
998     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO;
999 };
1000
1001 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO> {
1002     typedef VkExportSemaphoreCreateInfo Type;
1003 };
1004
1005 // Map type VkPhysicalDeviceExternalSemaphoreInfo to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
1006 template <> struct LvlTypeMap<VkPhysicalDeviceExternalSemaphoreInfo> {
1007     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO;
1008 };
1009
1010 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO> {
1011     typedef VkPhysicalDeviceExternalSemaphoreInfo Type;
1012 };
1013
1014 // Map type VkExternalSemaphoreProperties to id VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES
1015 template <> struct LvlTypeMap<VkExternalSemaphoreProperties> {
1016     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES;
1017 };
1018
1019 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES> {
1020     typedef VkExternalSemaphoreProperties Type;
1021 };
1022
1023 // Map type VkPhysicalDeviceMaintenance3Properties to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
1024 template <> struct LvlTypeMap<VkPhysicalDeviceMaintenance3Properties> {
1025     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES;
1026 };
1027
1028 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES> {
1029     typedef VkPhysicalDeviceMaintenance3Properties Type;
1030 };
1031
1032 // Map type VkDescriptorSetLayoutSupport to id VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT
1033 template <> struct LvlTypeMap<VkDescriptorSetLayoutSupport> {
1034     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT;
1035 };
1036
1037 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT> {
1038     typedef VkDescriptorSetLayoutSupport Type;
1039 };
1040
1041 // Map type VkPhysicalDeviceShaderDrawParametersFeatures to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES
1042 template <> struct LvlTypeMap<VkPhysicalDeviceShaderDrawParametersFeatures> {
1043     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
1044 };
1045
1046 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES> {
1047     typedef VkPhysicalDeviceShaderDrawParametersFeatures Type;
1048 };
1049
1050 // Map type VkSwapchainCreateInfoKHR to id VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR
1051 template <> struct LvlTypeMap<VkSwapchainCreateInfoKHR> {
1052     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;
1053 };
1054
1055 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR> {
1056     typedef VkSwapchainCreateInfoKHR Type;
1057 };
1058
1059 // Map type VkPresentInfoKHR to id VK_STRUCTURE_TYPE_PRESENT_INFO_KHR
1060 template <> struct LvlTypeMap<VkPresentInfoKHR> {
1061     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
1062 };
1063
1064 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PRESENT_INFO_KHR> {
1065     typedef VkPresentInfoKHR Type;
1066 };
1067
1068 // Map type VkImageSwapchainCreateInfoKHR to id VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR
1069 template <> struct LvlTypeMap<VkImageSwapchainCreateInfoKHR> {
1070     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR;
1071 };
1072
1073 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR> {
1074     typedef VkImageSwapchainCreateInfoKHR Type;
1075 };
1076
1077 // Map type VkBindImageMemorySwapchainInfoKHR to id VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR
1078 template <> struct LvlTypeMap<VkBindImageMemorySwapchainInfoKHR> {
1079     static const VkStructureType kSType = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR;
1080 };
1081
1082 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR> {
1083     typedef VkBindImageMemorySwapchainInfoKHR Type;
1084 };
1085
1086 // Map type VkAcquireNextImageInfoKHR to id VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR
1087 template <> struct LvlTypeMap<VkAcquireNextImageInfoKHR> {
1088     static const VkStructureType kSType = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR;
1089 };
1090
1091 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR> {
1092     typedef VkAcquireNextImageInfoKHR Type;
1093 };
1094
1095 // Map type VkDeviceGroupPresentCapabilitiesKHR to id VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR
1096 template <> struct LvlTypeMap<VkDeviceGroupPresentCapabilitiesKHR> {
1097     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR;
1098 };
1099
1100 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR> {
1101     typedef VkDeviceGroupPresentCapabilitiesKHR Type;
1102 };
1103
1104 // Map type VkDeviceGroupPresentInfoKHR to id VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR
1105 template <> struct LvlTypeMap<VkDeviceGroupPresentInfoKHR> {
1106     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR;
1107 };
1108
1109 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR> {
1110     typedef VkDeviceGroupPresentInfoKHR Type;
1111 };
1112
1113 // Map type VkDeviceGroupSwapchainCreateInfoKHR to id VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR
1114 template <> struct LvlTypeMap<VkDeviceGroupSwapchainCreateInfoKHR> {
1115     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR;
1116 };
1117
1118 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR> {
1119     typedef VkDeviceGroupSwapchainCreateInfoKHR Type;
1120 };
1121
1122 // Map type VkDisplayModeCreateInfoKHR to id VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR
1123 template <> struct LvlTypeMap<VkDisplayModeCreateInfoKHR> {
1124     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR;
1125 };
1126
1127 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR> {
1128     typedef VkDisplayModeCreateInfoKHR Type;
1129 };
1130
1131 // Map type VkDisplaySurfaceCreateInfoKHR to id VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR
1132 template <> struct LvlTypeMap<VkDisplaySurfaceCreateInfoKHR> {
1133     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR;
1134 };
1135
1136 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR> {
1137     typedef VkDisplaySurfaceCreateInfoKHR Type;
1138 };
1139
1140 // Map type VkDisplayPresentInfoKHR to id VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR
1141 template <> struct LvlTypeMap<VkDisplayPresentInfoKHR> {
1142     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR;
1143 };
1144
1145 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR> {
1146     typedef VkDisplayPresentInfoKHR Type;
1147 };
1148
1149 #ifdef VK_USE_PLATFORM_XLIB_KHR
1150 // Map type VkXlibSurfaceCreateInfoKHR to id VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR
1151 template <> struct LvlTypeMap<VkXlibSurfaceCreateInfoKHR> {
1152     static const VkStructureType kSType = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR;
1153 };
1154
1155 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR> {
1156     typedef VkXlibSurfaceCreateInfoKHR Type;
1157 };
1158
1159 #endif // VK_USE_PLATFORM_XLIB_KHR
1160 #ifdef VK_USE_PLATFORM_XCB_KHR
1161 // Map type VkXcbSurfaceCreateInfoKHR to id VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR
1162 template <> struct LvlTypeMap<VkXcbSurfaceCreateInfoKHR> {
1163     static const VkStructureType kSType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
1164 };
1165
1166 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR> {
1167     typedef VkXcbSurfaceCreateInfoKHR Type;
1168 };
1169
1170 #endif // VK_USE_PLATFORM_XCB_KHR
1171 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
1172 // Map type VkWaylandSurfaceCreateInfoKHR to id VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR
1173 template <> struct LvlTypeMap<VkWaylandSurfaceCreateInfoKHR> {
1174     static const VkStructureType kSType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;
1175 };
1176
1177 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR> {
1178     typedef VkWaylandSurfaceCreateInfoKHR Type;
1179 };
1180
1181 #endif // VK_USE_PLATFORM_WAYLAND_KHR
1182 #ifdef VK_USE_PLATFORM_ANDROID_KHR
1183 // Map type VkAndroidSurfaceCreateInfoKHR to id VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR
1184 template <> struct LvlTypeMap<VkAndroidSurfaceCreateInfoKHR> {
1185     static const VkStructureType kSType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
1186 };
1187
1188 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR> {
1189     typedef VkAndroidSurfaceCreateInfoKHR Type;
1190 };
1191
1192 #endif // VK_USE_PLATFORM_ANDROID_KHR
1193 #ifdef VK_USE_PLATFORM_WIN32_KHR
1194 // Map type VkWin32SurfaceCreateInfoKHR to id VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR
1195 template <> struct LvlTypeMap<VkWin32SurfaceCreateInfoKHR> {
1196     static const VkStructureType kSType = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR;
1197 };
1198
1199 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR> {
1200     typedef VkWin32SurfaceCreateInfoKHR Type;
1201 };
1202
1203 #endif // VK_USE_PLATFORM_WIN32_KHR
1204 #ifdef VK_USE_PLATFORM_WIN32_KHR
1205 // Map type VkImportMemoryWin32HandleInfoKHR to id VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR
1206 template <> struct LvlTypeMap<VkImportMemoryWin32HandleInfoKHR> {
1207     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR;
1208 };
1209
1210 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR> {
1211     typedef VkImportMemoryWin32HandleInfoKHR Type;
1212 };
1213
1214 #endif // VK_USE_PLATFORM_WIN32_KHR
1215 #ifdef VK_USE_PLATFORM_WIN32_KHR
1216 // Map type VkExportMemoryWin32HandleInfoKHR to id VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR
1217 template <> struct LvlTypeMap<VkExportMemoryWin32HandleInfoKHR> {
1218     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR;
1219 };
1220
1221 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR> {
1222     typedef VkExportMemoryWin32HandleInfoKHR Type;
1223 };
1224
1225 #endif // VK_USE_PLATFORM_WIN32_KHR
1226 #ifdef VK_USE_PLATFORM_WIN32_KHR
1227 // Map type VkMemoryWin32HandlePropertiesKHR to id VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR
1228 template <> struct LvlTypeMap<VkMemoryWin32HandlePropertiesKHR> {
1229     static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR;
1230 };
1231
1232 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR> {
1233     typedef VkMemoryWin32HandlePropertiesKHR Type;
1234 };
1235
1236 #endif // VK_USE_PLATFORM_WIN32_KHR
1237 #ifdef VK_USE_PLATFORM_WIN32_KHR
1238 // Map type VkMemoryGetWin32HandleInfoKHR to id VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR
1239 template <> struct LvlTypeMap<VkMemoryGetWin32HandleInfoKHR> {
1240     static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR;
1241 };
1242
1243 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR> {
1244     typedef VkMemoryGetWin32HandleInfoKHR Type;
1245 };
1246
1247 #endif // VK_USE_PLATFORM_WIN32_KHR
1248 // Map type VkImportMemoryFdInfoKHR to id VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR
1249 template <> struct LvlTypeMap<VkImportMemoryFdInfoKHR> {
1250     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR;
1251 };
1252
1253 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR> {
1254     typedef VkImportMemoryFdInfoKHR Type;
1255 };
1256
1257 // Map type VkMemoryFdPropertiesKHR to id VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR
1258 template <> struct LvlTypeMap<VkMemoryFdPropertiesKHR> {
1259     static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR;
1260 };
1261
1262 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR> {
1263     typedef VkMemoryFdPropertiesKHR Type;
1264 };
1265
1266 // Map type VkMemoryGetFdInfoKHR to id VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR
1267 template <> struct LvlTypeMap<VkMemoryGetFdInfoKHR> {
1268     static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR;
1269 };
1270
1271 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR> {
1272     typedef VkMemoryGetFdInfoKHR Type;
1273 };
1274
1275 #ifdef VK_USE_PLATFORM_WIN32_KHR
1276 // Map type VkWin32KeyedMutexAcquireReleaseInfoKHR to id VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR
1277 template <> struct LvlTypeMap<VkWin32KeyedMutexAcquireReleaseInfoKHR> {
1278     static const VkStructureType kSType = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR;
1279 };
1280
1281 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR> {
1282     typedef VkWin32KeyedMutexAcquireReleaseInfoKHR Type;
1283 };
1284
1285 #endif // VK_USE_PLATFORM_WIN32_KHR
1286 #ifdef VK_USE_PLATFORM_WIN32_KHR
1287 // Map type VkImportSemaphoreWin32HandleInfoKHR to id VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
1288 template <> struct LvlTypeMap<VkImportSemaphoreWin32HandleInfoKHR> {
1289     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR;
1290 };
1291
1292 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR> {
1293     typedef VkImportSemaphoreWin32HandleInfoKHR Type;
1294 };
1295
1296 #endif // VK_USE_PLATFORM_WIN32_KHR
1297 #ifdef VK_USE_PLATFORM_WIN32_KHR
1298 // Map type VkExportSemaphoreWin32HandleInfoKHR to id VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
1299 template <> struct LvlTypeMap<VkExportSemaphoreWin32HandleInfoKHR> {
1300     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR;
1301 };
1302
1303 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR> {
1304     typedef VkExportSemaphoreWin32HandleInfoKHR Type;
1305 };
1306
1307 #endif // VK_USE_PLATFORM_WIN32_KHR
1308 #ifdef VK_USE_PLATFORM_WIN32_KHR
1309 // Map type VkD3D12FenceSubmitInfoKHR to id VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR
1310 template <> struct LvlTypeMap<VkD3D12FenceSubmitInfoKHR> {
1311     static const VkStructureType kSType = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR;
1312 };
1313
1314 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR> {
1315     typedef VkD3D12FenceSubmitInfoKHR Type;
1316 };
1317
1318 #endif // VK_USE_PLATFORM_WIN32_KHR
1319 #ifdef VK_USE_PLATFORM_WIN32_KHR
1320 // Map type VkSemaphoreGetWin32HandleInfoKHR to id VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR
1321 template <> struct LvlTypeMap<VkSemaphoreGetWin32HandleInfoKHR> {
1322     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR;
1323 };
1324
1325 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR> {
1326     typedef VkSemaphoreGetWin32HandleInfoKHR Type;
1327 };
1328
1329 #endif // VK_USE_PLATFORM_WIN32_KHR
1330 // Map type VkImportSemaphoreFdInfoKHR to id VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR
1331 template <> struct LvlTypeMap<VkImportSemaphoreFdInfoKHR> {
1332     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR;
1333 };
1334
1335 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR> {
1336     typedef VkImportSemaphoreFdInfoKHR Type;
1337 };
1338
1339 // Map type VkSemaphoreGetFdInfoKHR to id VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR
1340 template <> struct LvlTypeMap<VkSemaphoreGetFdInfoKHR> {
1341     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR;
1342 };
1343
1344 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR> {
1345     typedef VkSemaphoreGetFdInfoKHR Type;
1346 };
1347
1348 // Map type VkPhysicalDevicePushDescriptorPropertiesKHR to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR
1349 template <> struct LvlTypeMap<VkPhysicalDevicePushDescriptorPropertiesKHR> {
1350     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR;
1351 };
1352
1353 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR> {
1354     typedef VkPhysicalDevicePushDescriptorPropertiesKHR Type;
1355 };
1356
1357 // Map type VkPhysicalDeviceShaderFloat16Int8FeaturesKHR to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR
1358 template <> struct LvlTypeMap<VkPhysicalDeviceShaderFloat16Int8FeaturesKHR> {
1359     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR;
1360 };
1361
1362 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR> {
1363     typedef VkPhysicalDeviceShaderFloat16Int8FeaturesKHR Type;
1364 };
1365
1366 // Map type VkPresentRegionsKHR to id VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR
1367 template <> struct LvlTypeMap<VkPresentRegionsKHR> {
1368     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR;
1369 };
1370
1371 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR> {
1372     typedef VkPresentRegionsKHR Type;
1373 };
1374
1375 // Map type VkPhysicalDeviceImagelessFramebufferFeaturesKHR to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR
1376 template <> struct LvlTypeMap<VkPhysicalDeviceImagelessFramebufferFeaturesKHR> {
1377     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR;
1378 };
1379
1380 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR> {
1381     typedef VkPhysicalDeviceImagelessFramebufferFeaturesKHR Type;
1382 };
1383
1384 // Map type VkFramebufferAttachmentImageInfoKHR to id VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR
1385 template <> struct LvlTypeMap<VkFramebufferAttachmentImageInfoKHR> {
1386     static const VkStructureType kSType = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR;
1387 };
1388
1389 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR> {
1390     typedef VkFramebufferAttachmentImageInfoKHR Type;
1391 };
1392
1393 // Map type VkFramebufferAttachmentsCreateInfoKHR to id VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR
1394 template <> struct LvlTypeMap<VkFramebufferAttachmentsCreateInfoKHR> {
1395     static const VkStructureType kSType = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR;
1396 };
1397
1398 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR> {
1399     typedef VkFramebufferAttachmentsCreateInfoKHR Type;
1400 };
1401
1402 // Map type VkRenderPassAttachmentBeginInfoKHR to id VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR
1403 template <> struct LvlTypeMap<VkRenderPassAttachmentBeginInfoKHR> {
1404     static const VkStructureType kSType = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR;
1405 };
1406
1407 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR> {
1408     typedef VkRenderPassAttachmentBeginInfoKHR Type;
1409 };
1410
1411 // Map type VkAttachmentDescription2KHR to id VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR
1412 template <> struct LvlTypeMap<VkAttachmentDescription2KHR> {
1413     static const VkStructureType kSType = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR;
1414 };
1415
1416 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR> {
1417     typedef VkAttachmentDescription2KHR Type;
1418 };
1419
1420 // Map type VkAttachmentReference2KHR to id VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR
1421 template <> struct LvlTypeMap<VkAttachmentReference2KHR> {
1422     static const VkStructureType kSType = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR;
1423 };
1424
1425 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR> {
1426     typedef VkAttachmentReference2KHR Type;
1427 };
1428
1429 // Map type VkSubpassDescription2KHR to id VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR
1430 template <> struct LvlTypeMap<VkSubpassDescription2KHR> {
1431     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR;
1432 };
1433
1434 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR> {
1435     typedef VkSubpassDescription2KHR Type;
1436 };
1437
1438 // Map type VkSubpassDependency2KHR to id VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR
1439 template <> struct LvlTypeMap<VkSubpassDependency2KHR> {
1440     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR;
1441 };
1442
1443 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR> {
1444     typedef VkSubpassDependency2KHR Type;
1445 };
1446
1447 // Map type VkRenderPassCreateInfo2KHR to id VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR
1448 template <> struct LvlTypeMap<VkRenderPassCreateInfo2KHR> {
1449     static const VkStructureType kSType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR;
1450 };
1451
1452 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR> {
1453     typedef VkRenderPassCreateInfo2KHR Type;
1454 };
1455
1456 // Map type VkSubpassBeginInfoKHR to id VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR
1457 template <> struct LvlTypeMap<VkSubpassBeginInfoKHR> {
1458     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR;
1459 };
1460
1461 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR> {
1462     typedef VkSubpassBeginInfoKHR Type;
1463 };
1464
1465 // Map type VkSubpassEndInfoKHR to id VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR
1466 template <> struct LvlTypeMap<VkSubpassEndInfoKHR> {
1467     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR;
1468 };
1469
1470 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR> {
1471     typedef VkSubpassEndInfoKHR Type;
1472 };
1473
1474 // Map type VkSharedPresentSurfaceCapabilitiesKHR to id VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR
1475 template <> struct LvlTypeMap<VkSharedPresentSurfaceCapabilitiesKHR> {
1476     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR;
1477 };
1478
1479 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR> {
1480     typedef VkSharedPresentSurfaceCapabilitiesKHR Type;
1481 };
1482
1483 #ifdef VK_USE_PLATFORM_WIN32_KHR
1484 // Map type VkImportFenceWin32HandleInfoKHR to id VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR
1485 template <> struct LvlTypeMap<VkImportFenceWin32HandleInfoKHR> {
1486     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR;
1487 };
1488
1489 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR> {
1490     typedef VkImportFenceWin32HandleInfoKHR Type;
1491 };
1492
1493 #endif // VK_USE_PLATFORM_WIN32_KHR
1494 #ifdef VK_USE_PLATFORM_WIN32_KHR
1495 // Map type VkExportFenceWin32HandleInfoKHR to id VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR
1496 template <> struct LvlTypeMap<VkExportFenceWin32HandleInfoKHR> {
1497     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR;
1498 };
1499
1500 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR> {
1501     typedef VkExportFenceWin32HandleInfoKHR Type;
1502 };
1503
1504 #endif // VK_USE_PLATFORM_WIN32_KHR
1505 #ifdef VK_USE_PLATFORM_WIN32_KHR
1506 // Map type VkFenceGetWin32HandleInfoKHR to id VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR
1507 template <> struct LvlTypeMap<VkFenceGetWin32HandleInfoKHR> {
1508     static const VkStructureType kSType = VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR;
1509 };
1510
1511 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR> {
1512     typedef VkFenceGetWin32HandleInfoKHR Type;
1513 };
1514
1515 #endif // VK_USE_PLATFORM_WIN32_KHR
1516 // Map type VkImportFenceFdInfoKHR to id VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR
1517 template <> struct LvlTypeMap<VkImportFenceFdInfoKHR> {
1518     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR;
1519 };
1520
1521 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR> {
1522     typedef VkImportFenceFdInfoKHR Type;
1523 };
1524
1525 // Map type VkFenceGetFdInfoKHR to id VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR
1526 template <> struct LvlTypeMap<VkFenceGetFdInfoKHR> {
1527     static const VkStructureType kSType = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR;
1528 };
1529
1530 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR> {
1531     typedef VkFenceGetFdInfoKHR Type;
1532 };
1533
1534 // Map type VkPhysicalDeviceSurfaceInfo2KHR to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR
1535 template <> struct LvlTypeMap<VkPhysicalDeviceSurfaceInfo2KHR> {
1536     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR;
1537 };
1538
1539 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR> {
1540     typedef VkPhysicalDeviceSurfaceInfo2KHR Type;
1541 };
1542
1543 // Map type VkSurfaceCapabilities2KHR to id VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR
1544 template <> struct LvlTypeMap<VkSurfaceCapabilities2KHR> {
1545     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR;
1546 };
1547
1548 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR> {
1549     typedef VkSurfaceCapabilities2KHR Type;
1550 };
1551
1552 // Map type VkSurfaceFormat2KHR to id VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR
1553 template <> struct LvlTypeMap<VkSurfaceFormat2KHR> {
1554     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR;
1555 };
1556
1557 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR> {
1558     typedef VkSurfaceFormat2KHR Type;
1559 };
1560
1561 // Map type VkDisplayProperties2KHR to id VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR
1562 template <> struct LvlTypeMap<VkDisplayProperties2KHR> {
1563     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR;
1564 };
1565
1566 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR> {
1567     typedef VkDisplayProperties2KHR Type;
1568 };
1569
1570 // Map type VkDisplayPlaneProperties2KHR to id VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR
1571 template <> struct LvlTypeMap<VkDisplayPlaneProperties2KHR> {
1572     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR;
1573 };
1574
1575 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR> {
1576     typedef VkDisplayPlaneProperties2KHR Type;
1577 };
1578
1579 // Map type VkDisplayModeProperties2KHR to id VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR
1580 template <> struct LvlTypeMap<VkDisplayModeProperties2KHR> {
1581     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR;
1582 };
1583
1584 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR> {
1585     typedef VkDisplayModeProperties2KHR Type;
1586 };
1587
1588 // Map type VkDisplayPlaneInfo2KHR to id VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR
1589 template <> struct LvlTypeMap<VkDisplayPlaneInfo2KHR> {
1590     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR;
1591 };
1592
1593 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR> {
1594     typedef VkDisplayPlaneInfo2KHR Type;
1595 };
1596
1597 // Map type VkDisplayPlaneCapabilities2KHR to id VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR
1598 template <> struct LvlTypeMap<VkDisplayPlaneCapabilities2KHR> {
1599     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR;
1600 };
1601
1602 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR> {
1603     typedef VkDisplayPlaneCapabilities2KHR Type;
1604 };
1605
1606 // Map type VkImageFormatListCreateInfoKHR to id VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR
1607 template <> struct LvlTypeMap<VkImageFormatListCreateInfoKHR> {
1608     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR;
1609 };
1610
1611 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR> {
1612     typedef VkImageFormatListCreateInfoKHR Type;
1613 };
1614
1615 // Map type VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR
1616 template <> struct LvlTypeMap<VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR> {
1617     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR;
1618 };
1619
1620 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR> {
1621     typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR Type;
1622 };
1623
1624 // Map type VkPhysicalDevice8BitStorageFeaturesKHR to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR
1625 template <> struct LvlTypeMap<VkPhysicalDevice8BitStorageFeaturesKHR> {
1626     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR;
1627 };
1628
1629 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR> {
1630     typedef VkPhysicalDevice8BitStorageFeaturesKHR Type;
1631 };
1632
1633 // Map type VkPhysicalDeviceShaderAtomicInt64FeaturesKHR to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR
1634 template <> struct LvlTypeMap<VkPhysicalDeviceShaderAtomicInt64FeaturesKHR> {
1635     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR;
1636 };
1637
1638 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR> {
1639     typedef VkPhysicalDeviceShaderAtomicInt64FeaturesKHR Type;
1640 };
1641
1642 // Map type VkPhysicalDeviceShaderClockFeaturesKHR to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR
1643 template <> struct LvlTypeMap<VkPhysicalDeviceShaderClockFeaturesKHR> {
1644     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR;
1645 };
1646
1647 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR> {
1648     typedef VkPhysicalDeviceShaderClockFeaturesKHR Type;
1649 };
1650
1651 // Map type VkPhysicalDeviceDriverPropertiesKHR to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR
1652 template <> struct LvlTypeMap<VkPhysicalDeviceDriverPropertiesKHR> {
1653     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR;
1654 };
1655
1656 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR> {
1657     typedef VkPhysicalDeviceDriverPropertiesKHR Type;
1658 };
1659
1660 // Map type VkPhysicalDeviceFloatControlsPropertiesKHR to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR
1661 template <> struct LvlTypeMap<VkPhysicalDeviceFloatControlsPropertiesKHR> {
1662     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR;
1663 };
1664
1665 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR> {
1666     typedef VkPhysicalDeviceFloatControlsPropertiesKHR Type;
1667 };
1668
1669 // Map type VkSubpassDescriptionDepthStencilResolveKHR to id VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR
1670 template <> struct LvlTypeMap<VkSubpassDescriptionDepthStencilResolveKHR> {
1671     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR;
1672 };
1673
1674 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR> {
1675     typedef VkSubpassDescriptionDepthStencilResolveKHR Type;
1676 };
1677
1678 // Map type VkPhysicalDeviceDepthStencilResolvePropertiesKHR to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR
1679 template <> struct LvlTypeMap<VkPhysicalDeviceDepthStencilResolvePropertiesKHR> {
1680     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR;
1681 };
1682
1683 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR> {
1684     typedef VkPhysicalDeviceDepthStencilResolvePropertiesKHR Type;
1685 };
1686
1687 // Map type VkPhysicalDeviceTimelineSemaphoreFeaturesKHR to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR
1688 template <> struct LvlTypeMap<VkPhysicalDeviceTimelineSemaphoreFeaturesKHR> {
1689     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR;
1690 };
1691
1692 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR> {
1693     typedef VkPhysicalDeviceTimelineSemaphoreFeaturesKHR Type;
1694 };
1695
1696 // Map type VkPhysicalDeviceTimelineSemaphorePropertiesKHR to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR
1697 template <> struct LvlTypeMap<VkPhysicalDeviceTimelineSemaphorePropertiesKHR> {
1698     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR;
1699 };
1700
1701 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR> {
1702     typedef VkPhysicalDeviceTimelineSemaphorePropertiesKHR Type;
1703 };
1704
1705 // Map type VkSemaphoreTypeCreateInfoKHR to id VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR
1706 template <> struct LvlTypeMap<VkSemaphoreTypeCreateInfoKHR> {
1707     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR;
1708 };
1709
1710 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR> {
1711     typedef VkSemaphoreTypeCreateInfoKHR Type;
1712 };
1713
1714 // Map type VkTimelineSemaphoreSubmitInfoKHR to id VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR
1715 template <> struct LvlTypeMap<VkTimelineSemaphoreSubmitInfoKHR> {
1716     static const VkStructureType kSType = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR;
1717 };
1718
1719 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR> {
1720     typedef VkTimelineSemaphoreSubmitInfoKHR Type;
1721 };
1722
1723 // Map type VkSemaphoreWaitInfoKHR to id VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR
1724 template <> struct LvlTypeMap<VkSemaphoreWaitInfoKHR> {
1725     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR;
1726 };
1727
1728 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR> {
1729     typedef VkSemaphoreWaitInfoKHR Type;
1730 };
1731
1732 // Map type VkSemaphoreSignalInfoKHR to id VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR
1733 template <> struct LvlTypeMap<VkSemaphoreSignalInfoKHR> {
1734     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR;
1735 };
1736
1737 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR> {
1738     typedef VkSemaphoreSignalInfoKHR Type;
1739 };
1740
1741 // Map type VkPhysicalDeviceVulkanMemoryModelFeaturesKHR to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR
1742 template <> struct LvlTypeMap<VkPhysicalDeviceVulkanMemoryModelFeaturesKHR> {
1743     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR;
1744 };
1745
1746 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR> {
1747     typedef VkPhysicalDeviceVulkanMemoryModelFeaturesKHR Type;
1748 };
1749
1750 // Map type VkSurfaceProtectedCapabilitiesKHR to id VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR
1751 template <> struct LvlTypeMap<VkSurfaceProtectedCapabilitiesKHR> {
1752     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR;
1753 };
1754
1755 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR> {
1756     typedef VkSurfaceProtectedCapabilitiesKHR Type;
1757 };
1758
1759 // Map type VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR
1760 template <> struct LvlTypeMap<VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR> {
1761     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR;
1762 };
1763
1764 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR> {
1765     typedef VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR Type;
1766 };
1767
1768 // Map type VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR
1769 template <> struct LvlTypeMap<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR> {
1770     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR;
1771 };
1772
1773 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR> {
1774     typedef VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR Type;
1775 };
1776
1777 // Map type VkPipelineInfoKHR to id VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR
1778 template <> struct LvlTypeMap<VkPipelineInfoKHR> {
1779     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR;
1780 };
1781
1782 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR> {
1783     typedef VkPipelineInfoKHR Type;
1784 };
1785
1786 // Map type VkPipelineExecutablePropertiesKHR to id VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR
1787 template <> struct LvlTypeMap<VkPipelineExecutablePropertiesKHR> {
1788     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR;
1789 };
1790
1791 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR> {
1792     typedef VkPipelineExecutablePropertiesKHR Type;
1793 };
1794
1795 // Map type VkPipelineExecutableInfoKHR to id VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR
1796 template <> struct LvlTypeMap<VkPipelineExecutableInfoKHR> {
1797     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR;
1798 };
1799
1800 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR> {
1801     typedef VkPipelineExecutableInfoKHR Type;
1802 };
1803
1804 // Map type VkPipelineExecutableStatisticKHR to id VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR
1805 template <> struct LvlTypeMap<VkPipelineExecutableStatisticKHR> {
1806     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR;
1807 };
1808
1809 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR> {
1810     typedef VkPipelineExecutableStatisticKHR Type;
1811 };
1812
1813 // Map type VkPipelineExecutableInternalRepresentationKHR to id VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR
1814 template <> struct LvlTypeMap<VkPipelineExecutableInternalRepresentationKHR> {
1815     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR;
1816 };
1817
1818 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR> {
1819     typedef VkPipelineExecutableInternalRepresentationKHR Type;
1820 };
1821
1822 // Map type VkDebugReportCallbackCreateInfoEXT to id VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
1823 template <> struct LvlTypeMap<VkDebugReportCallbackCreateInfoEXT> {
1824     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT;
1825 };
1826
1827 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT> {
1828     typedef VkDebugReportCallbackCreateInfoEXT Type;
1829 };
1830
1831 // Map type VkPipelineRasterizationStateRasterizationOrderAMD to id VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD
1832 template <> struct LvlTypeMap<VkPipelineRasterizationStateRasterizationOrderAMD> {
1833     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD;
1834 };
1835
1836 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD> {
1837     typedef VkPipelineRasterizationStateRasterizationOrderAMD Type;
1838 };
1839
1840 // Map type VkDebugMarkerObjectNameInfoEXT to id VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT
1841 template <> struct LvlTypeMap<VkDebugMarkerObjectNameInfoEXT> {
1842     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT;
1843 };
1844
1845 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT> {
1846     typedef VkDebugMarkerObjectNameInfoEXT Type;
1847 };
1848
1849 // Map type VkDebugMarkerObjectTagInfoEXT to id VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT
1850 template <> struct LvlTypeMap<VkDebugMarkerObjectTagInfoEXT> {
1851     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT;
1852 };
1853
1854 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT> {
1855     typedef VkDebugMarkerObjectTagInfoEXT Type;
1856 };
1857
1858 // Map type VkDebugMarkerMarkerInfoEXT to id VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT
1859 template <> struct LvlTypeMap<VkDebugMarkerMarkerInfoEXT> {
1860     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT;
1861 };
1862
1863 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT> {
1864     typedef VkDebugMarkerMarkerInfoEXT Type;
1865 };
1866
1867 // Map type VkDedicatedAllocationImageCreateInfoNV to id VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV
1868 template <> struct LvlTypeMap<VkDedicatedAllocationImageCreateInfoNV> {
1869     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV;
1870 };
1871
1872 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV> {
1873     typedef VkDedicatedAllocationImageCreateInfoNV Type;
1874 };
1875
1876 // Map type VkDedicatedAllocationBufferCreateInfoNV to id VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV
1877 template <> struct LvlTypeMap<VkDedicatedAllocationBufferCreateInfoNV> {
1878     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV;
1879 };
1880
1881 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV> {
1882     typedef VkDedicatedAllocationBufferCreateInfoNV Type;
1883 };
1884
1885 // Map type VkDedicatedAllocationMemoryAllocateInfoNV to id VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV
1886 template <> struct LvlTypeMap<VkDedicatedAllocationMemoryAllocateInfoNV> {
1887     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV;
1888 };
1889
1890 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV> {
1891     typedef VkDedicatedAllocationMemoryAllocateInfoNV Type;
1892 };
1893
1894 // Map type VkPhysicalDeviceTransformFeedbackFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT
1895 template <> struct LvlTypeMap<VkPhysicalDeviceTransformFeedbackFeaturesEXT> {
1896     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT;
1897 };
1898
1899 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT> {
1900     typedef VkPhysicalDeviceTransformFeedbackFeaturesEXT Type;
1901 };
1902
1903 // Map type VkPhysicalDeviceTransformFeedbackPropertiesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT
1904 template <> struct LvlTypeMap<VkPhysicalDeviceTransformFeedbackPropertiesEXT> {
1905     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT;
1906 };
1907
1908 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT> {
1909     typedef VkPhysicalDeviceTransformFeedbackPropertiesEXT Type;
1910 };
1911
1912 // Map type VkPipelineRasterizationStateStreamCreateInfoEXT to id VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT
1913 template <> struct LvlTypeMap<VkPipelineRasterizationStateStreamCreateInfoEXT> {
1914     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT;
1915 };
1916
1917 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT> {
1918     typedef VkPipelineRasterizationStateStreamCreateInfoEXT Type;
1919 };
1920
1921 // Map type VkImageViewHandleInfoNVX to id VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX
1922 template <> struct LvlTypeMap<VkImageViewHandleInfoNVX> {
1923     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX;
1924 };
1925
1926 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX> {
1927     typedef VkImageViewHandleInfoNVX Type;
1928 };
1929
1930 // Map type VkTextureLODGatherFormatPropertiesAMD to id VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD
1931 template <> struct LvlTypeMap<VkTextureLODGatherFormatPropertiesAMD> {
1932     static const VkStructureType kSType = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD;
1933 };
1934
1935 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD> {
1936     typedef VkTextureLODGatherFormatPropertiesAMD Type;
1937 };
1938
1939 #ifdef VK_USE_PLATFORM_GGP
1940 // Map type VkStreamDescriptorSurfaceCreateInfoGGP to id VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP
1941 template <> struct LvlTypeMap<VkStreamDescriptorSurfaceCreateInfoGGP> {
1942     static const VkStructureType kSType = VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP;
1943 };
1944
1945 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP> {
1946     typedef VkStreamDescriptorSurfaceCreateInfoGGP Type;
1947 };
1948
1949 #endif // VK_USE_PLATFORM_GGP
1950 // Map type VkPhysicalDeviceCornerSampledImageFeaturesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV
1951 template <> struct LvlTypeMap<VkPhysicalDeviceCornerSampledImageFeaturesNV> {
1952     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV;
1953 };
1954
1955 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV> {
1956     typedef VkPhysicalDeviceCornerSampledImageFeaturesNV Type;
1957 };
1958
1959 // Map type VkExternalMemoryImageCreateInfoNV to id VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV
1960 template <> struct LvlTypeMap<VkExternalMemoryImageCreateInfoNV> {
1961     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV;
1962 };
1963
1964 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV> {
1965     typedef VkExternalMemoryImageCreateInfoNV Type;
1966 };
1967
1968 // Map type VkExportMemoryAllocateInfoNV to id VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV
1969 template <> struct LvlTypeMap<VkExportMemoryAllocateInfoNV> {
1970     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV;
1971 };
1972
1973 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV> {
1974     typedef VkExportMemoryAllocateInfoNV Type;
1975 };
1976
1977 #ifdef VK_USE_PLATFORM_WIN32_KHR
1978 // Map type VkImportMemoryWin32HandleInfoNV to id VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV
1979 template <> struct LvlTypeMap<VkImportMemoryWin32HandleInfoNV> {
1980     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV;
1981 };
1982
1983 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV> {
1984     typedef VkImportMemoryWin32HandleInfoNV Type;
1985 };
1986
1987 #endif // VK_USE_PLATFORM_WIN32_KHR
1988 #ifdef VK_USE_PLATFORM_WIN32_KHR
1989 // Map type VkExportMemoryWin32HandleInfoNV to id VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV
1990 template <> struct LvlTypeMap<VkExportMemoryWin32HandleInfoNV> {
1991     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV;
1992 };
1993
1994 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV> {
1995     typedef VkExportMemoryWin32HandleInfoNV Type;
1996 };
1997
1998 #endif // VK_USE_PLATFORM_WIN32_KHR
1999 #ifdef VK_USE_PLATFORM_WIN32_KHR
2000 // Map type VkWin32KeyedMutexAcquireReleaseInfoNV to id VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV
2001 template <> struct LvlTypeMap<VkWin32KeyedMutexAcquireReleaseInfoNV> {
2002     static const VkStructureType kSType = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV;
2003 };
2004
2005 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV> {
2006     typedef VkWin32KeyedMutexAcquireReleaseInfoNV Type;
2007 };
2008
2009 #endif // VK_USE_PLATFORM_WIN32_KHR
2010 // Map type VkValidationFlagsEXT to id VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT
2011 template <> struct LvlTypeMap<VkValidationFlagsEXT> {
2012     static const VkStructureType kSType = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT;
2013 };
2014
2015 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT> {
2016     typedef VkValidationFlagsEXT Type;
2017 };
2018
2019 #ifdef VK_USE_PLATFORM_VI_NN
2020 // Map type VkViSurfaceCreateInfoNN to id VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN
2021 template <> struct LvlTypeMap<VkViSurfaceCreateInfoNN> {
2022     static const VkStructureType kSType = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN;
2023 };
2024
2025 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN> {
2026     typedef VkViSurfaceCreateInfoNN Type;
2027 };
2028
2029 #endif // VK_USE_PLATFORM_VI_NN
2030 // Map type VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT
2031 template <> struct LvlTypeMap<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT> {
2032     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT;
2033 };
2034
2035 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT> {
2036     typedef VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT Type;
2037 };
2038
2039 // Map type VkImageViewASTCDecodeModeEXT to id VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT
2040 template <> struct LvlTypeMap<VkImageViewASTCDecodeModeEXT> {
2041     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT;
2042 };
2043
2044 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT> {
2045     typedef VkImageViewASTCDecodeModeEXT Type;
2046 };
2047
2048 // Map type VkPhysicalDeviceASTCDecodeFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT
2049 template <> struct LvlTypeMap<VkPhysicalDeviceASTCDecodeFeaturesEXT> {
2050     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT;
2051 };
2052
2053 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT> {
2054     typedef VkPhysicalDeviceASTCDecodeFeaturesEXT Type;
2055 };
2056
2057 // Map type VkConditionalRenderingBeginInfoEXT to id VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT
2058 template <> struct LvlTypeMap<VkConditionalRenderingBeginInfoEXT> {
2059     static const VkStructureType kSType = VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT;
2060 };
2061
2062 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT> {
2063     typedef VkConditionalRenderingBeginInfoEXT Type;
2064 };
2065
2066 // Map type VkPhysicalDeviceConditionalRenderingFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT
2067 template <> struct LvlTypeMap<VkPhysicalDeviceConditionalRenderingFeaturesEXT> {
2068     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
2069 };
2070
2071 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT> {
2072     typedef VkPhysicalDeviceConditionalRenderingFeaturesEXT Type;
2073 };
2074
2075 // Map type VkCommandBufferInheritanceConditionalRenderingInfoEXT to id VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT
2076 template <> struct LvlTypeMap<VkCommandBufferInheritanceConditionalRenderingInfoEXT> {
2077     static const VkStructureType kSType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT;
2078 };
2079
2080 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT> {
2081     typedef VkCommandBufferInheritanceConditionalRenderingInfoEXT Type;
2082 };
2083
2084 // Map type VkDeviceGeneratedCommandsFeaturesNVX to id VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX
2085 template <> struct LvlTypeMap<VkDeviceGeneratedCommandsFeaturesNVX> {
2086     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX;
2087 };
2088
2089 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX> {
2090     typedef VkDeviceGeneratedCommandsFeaturesNVX Type;
2091 };
2092
2093 // Map type VkDeviceGeneratedCommandsLimitsNVX to id VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX
2094 template <> struct LvlTypeMap<VkDeviceGeneratedCommandsLimitsNVX> {
2095     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX;
2096 };
2097
2098 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX> {
2099     typedef VkDeviceGeneratedCommandsLimitsNVX Type;
2100 };
2101
2102 // Map type VkIndirectCommandsLayoutCreateInfoNVX to id VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX
2103 template <> struct LvlTypeMap<VkIndirectCommandsLayoutCreateInfoNVX> {
2104     static const VkStructureType kSType = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX;
2105 };
2106
2107 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX> {
2108     typedef VkIndirectCommandsLayoutCreateInfoNVX Type;
2109 };
2110
2111 // Map type VkCmdProcessCommandsInfoNVX to id VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX
2112 template <> struct LvlTypeMap<VkCmdProcessCommandsInfoNVX> {
2113     static const VkStructureType kSType = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX;
2114 };
2115
2116 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX> {
2117     typedef VkCmdProcessCommandsInfoNVX Type;
2118 };
2119
2120 // Map type VkCmdReserveSpaceForCommandsInfoNVX to id VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX
2121 template <> struct LvlTypeMap<VkCmdReserveSpaceForCommandsInfoNVX> {
2122     static const VkStructureType kSType = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX;
2123 };
2124
2125 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX> {
2126     typedef VkCmdReserveSpaceForCommandsInfoNVX Type;
2127 };
2128
2129 // Map type VkObjectTableCreateInfoNVX to id VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX
2130 template <> struct LvlTypeMap<VkObjectTableCreateInfoNVX> {
2131     static const VkStructureType kSType = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX;
2132 };
2133
2134 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX> {
2135     typedef VkObjectTableCreateInfoNVX Type;
2136 };
2137
2138 // Map type VkPipelineViewportWScalingStateCreateInfoNV to id VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV
2139 template <> struct LvlTypeMap<VkPipelineViewportWScalingStateCreateInfoNV> {
2140     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV;
2141 };
2142
2143 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV> {
2144     typedef VkPipelineViewportWScalingStateCreateInfoNV Type;
2145 };
2146
2147 // Map type VkSurfaceCapabilities2EXT to id VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT
2148 template <> struct LvlTypeMap<VkSurfaceCapabilities2EXT> {
2149     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT;
2150 };
2151
2152 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT> {
2153     typedef VkSurfaceCapabilities2EXT Type;
2154 };
2155
2156 // Map type VkDisplayPowerInfoEXT to id VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT
2157 template <> struct LvlTypeMap<VkDisplayPowerInfoEXT> {
2158     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT;
2159 };
2160
2161 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT> {
2162     typedef VkDisplayPowerInfoEXT Type;
2163 };
2164
2165 // Map type VkDeviceEventInfoEXT to id VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT
2166 template <> struct LvlTypeMap<VkDeviceEventInfoEXT> {
2167     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT;
2168 };
2169
2170 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT> {
2171     typedef VkDeviceEventInfoEXT Type;
2172 };
2173
2174 // Map type VkDisplayEventInfoEXT to id VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT
2175 template <> struct LvlTypeMap<VkDisplayEventInfoEXT> {
2176     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT;
2177 };
2178
2179 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT> {
2180     typedef VkDisplayEventInfoEXT Type;
2181 };
2182
2183 // Map type VkSwapchainCounterCreateInfoEXT to id VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT
2184 template <> struct LvlTypeMap<VkSwapchainCounterCreateInfoEXT> {
2185     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT;
2186 };
2187
2188 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT> {
2189     typedef VkSwapchainCounterCreateInfoEXT Type;
2190 };
2191
2192 // Map type VkPresentTimesInfoGOOGLE to id VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE
2193 template <> struct LvlTypeMap<VkPresentTimesInfoGOOGLE> {
2194     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE;
2195 };
2196
2197 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE> {
2198     typedef VkPresentTimesInfoGOOGLE Type;
2199 };
2200
2201 // Map type VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX
2202 template <> struct LvlTypeMap<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX> {
2203     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX;
2204 };
2205
2206 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX> {
2207     typedef VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX Type;
2208 };
2209
2210 // Map type VkPipelineViewportSwizzleStateCreateInfoNV to id VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV
2211 template <> struct LvlTypeMap<VkPipelineViewportSwizzleStateCreateInfoNV> {
2212     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV;
2213 };
2214
2215 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV> {
2216     typedef VkPipelineViewportSwizzleStateCreateInfoNV Type;
2217 };
2218
2219 // Map type VkPhysicalDeviceDiscardRectanglePropertiesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT
2220 template <> struct LvlTypeMap<VkPhysicalDeviceDiscardRectanglePropertiesEXT> {
2221     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT;
2222 };
2223
2224 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT> {
2225     typedef VkPhysicalDeviceDiscardRectanglePropertiesEXT Type;
2226 };
2227
2228 // Map type VkPipelineDiscardRectangleStateCreateInfoEXT to id VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT
2229 template <> struct LvlTypeMap<VkPipelineDiscardRectangleStateCreateInfoEXT> {
2230     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT;
2231 };
2232
2233 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT> {
2234     typedef VkPipelineDiscardRectangleStateCreateInfoEXT Type;
2235 };
2236
2237 // Map type VkPhysicalDeviceConservativeRasterizationPropertiesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT
2238 template <> struct LvlTypeMap<VkPhysicalDeviceConservativeRasterizationPropertiesEXT> {
2239     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT;
2240 };
2241
2242 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT> {
2243     typedef VkPhysicalDeviceConservativeRasterizationPropertiesEXT Type;
2244 };
2245
2246 // Map type VkPipelineRasterizationConservativeStateCreateInfoEXT to id VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT
2247 template <> struct LvlTypeMap<VkPipelineRasterizationConservativeStateCreateInfoEXT> {
2248     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT;
2249 };
2250
2251 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT> {
2252     typedef VkPipelineRasterizationConservativeStateCreateInfoEXT Type;
2253 };
2254
2255 // Map type VkPhysicalDeviceDepthClipEnableFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT
2256 template <> struct LvlTypeMap<VkPhysicalDeviceDepthClipEnableFeaturesEXT> {
2257     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT;
2258 };
2259
2260 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT> {
2261     typedef VkPhysicalDeviceDepthClipEnableFeaturesEXT Type;
2262 };
2263
2264 // Map type VkPipelineRasterizationDepthClipStateCreateInfoEXT to id VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT
2265 template <> struct LvlTypeMap<VkPipelineRasterizationDepthClipStateCreateInfoEXT> {
2266     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT;
2267 };
2268
2269 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT> {
2270     typedef VkPipelineRasterizationDepthClipStateCreateInfoEXT Type;
2271 };
2272
2273 // Map type VkHdrMetadataEXT to id VK_STRUCTURE_TYPE_HDR_METADATA_EXT
2274 template <> struct LvlTypeMap<VkHdrMetadataEXT> {
2275     static const VkStructureType kSType = VK_STRUCTURE_TYPE_HDR_METADATA_EXT;
2276 };
2277
2278 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_HDR_METADATA_EXT> {
2279     typedef VkHdrMetadataEXT Type;
2280 };
2281
2282 #ifdef VK_USE_PLATFORM_IOS_MVK
2283 // Map type VkIOSSurfaceCreateInfoMVK to id VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK
2284 template <> struct LvlTypeMap<VkIOSSurfaceCreateInfoMVK> {
2285     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK;
2286 };
2287
2288 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK> {
2289     typedef VkIOSSurfaceCreateInfoMVK Type;
2290 };
2291
2292 #endif // VK_USE_PLATFORM_IOS_MVK
2293 #ifdef VK_USE_PLATFORM_MACOS_MVK
2294 // Map type VkMacOSSurfaceCreateInfoMVK to id VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
2295 template <> struct LvlTypeMap<VkMacOSSurfaceCreateInfoMVK> {
2296     static const VkStructureType kSType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK;
2297 };
2298
2299 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK> {
2300     typedef VkMacOSSurfaceCreateInfoMVK Type;
2301 };
2302
2303 #endif // VK_USE_PLATFORM_MACOS_MVK
2304 // Map type VkDebugUtilsObjectNameInfoEXT to id VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT
2305 template <> struct LvlTypeMap<VkDebugUtilsObjectNameInfoEXT> {
2306     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
2307 };
2308
2309 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT> {
2310     typedef VkDebugUtilsObjectNameInfoEXT Type;
2311 };
2312
2313 // Map type VkDebugUtilsObjectTagInfoEXT to id VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT
2314 template <> struct LvlTypeMap<VkDebugUtilsObjectTagInfoEXT> {
2315     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT;
2316 };
2317
2318 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT> {
2319     typedef VkDebugUtilsObjectTagInfoEXT Type;
2320 };
2321
2322 // Map type VkDebugUtilsLabelEXT to id VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT
2323 template <> struct LvlTypeMap<VkDebugUtilsLabelEXT> {
2324     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT;
2325 };
2326
2327 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT> {
2328     typedef VkDebugUtilsLabelEXT Type;
2329 };
2330
2331 // Map type VkDebugUtilsMessengerCallbackDataEXT to id VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT
2332 template <> struct LvlTypeMap<VkDebugUtilsMessengerCallbackDataEXT> {
2333     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT;
2334 };
2335
2336 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT> {
2337     typedef VkDebugUtilsMessengerCallbackDataEXT Type;
2338 };
2339
2340 // Map type VkDebugUtilsMessengerCreateInfoEXT to id VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT
2341 template <> struct LvlTypeMap<VkDebugUtilsMessengerCreateInfoEXT> {
2342     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
2343 };
2344
2345 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT> {
2346     typedef VkDebugUtilsMessengerCreateInfoEXT Type;
2347 };
2348
2349 #ifdef VK_USE_PLATFORM_ANDROID_KHR
2350 // Map type VkAndroidHardwareBufferUsageANDROID to id VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID
2351 template <> struct LvlTypeMap<VkAndroidHardwareBufferUsageANDROID> {
2352     static const VkStructureType kSType = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID;
2353 };
2354
2355 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID> {
2356     typedef VkAndroidHardwareBufferUsageANDROID Type;
2357 };
2358
2359 #endif // VK_USE_PLATFORM_ANDROID_KHR
2360 #ifdef VK_USE_PLATFORM_ANDROID_KHR
2361 // Map type VkAndroidHardwareBufferPropertiesANDROID to id VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID
2362 template <> struct LvlTypeMap<VkAndroidHardwareBufferPropertiesANDROID> {
2363     static const VkStructureType kSType = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID;
2364 };
2365
2366 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID> {
2367     typedef VkAndroidHardwareBufferPropertiesANDROID Type;
2368 };
2369
2370 #endif // VK_USE_PLATFORM_ANDROID_KHR
2371 #ifdef VK_USE_PLATFORM_ANDROID_KHR
2372 // Map type VkAndroidHardwareBufferFormatPropertiesANDROID to id VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID
2373 template <> struct LvlTypeMap<VkAndroidHardwareBufferFormatPropertiesANDROID> {
2374     static const VkStructureType kSType = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID;
2375 };
2376
2377 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID> {
2378     typedef VkAndroidHardwareBufferFormatPropertiesANDROID Type;
2379 };
2380
2381 #endif // VK_USE_PLATFORM_ANDROID_KHR
2382 #ifdef VK_USE_PLATFORM_ANDROID_KHR
2383 // Map type VkImportAndroidHardwareBufferInfoANDROID to id VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
2384 template <> struct LvlTypeMap<VkImportAndroidHardwareBufferInfoANDROID> {
2385     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;
2386 };
2387
2388 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID> {
2389     typedef VkImportAndroidHardwareBufferInfoANDROID Type;
2390 };
2391
2392 #endif // VK_USE_PLATFORM_ANDROID_KHR
2393 #ifdef VK_USE_PLATFORM_ANDROID_KHR
2394 // Map type VkMemoryGetAndroidHardwareBufferInfoANDROID to id VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
2395 template <> struct LvlTypeMap<VkMemoryGetAndroidHardwareBufferInfoANDROID> {
2396     static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;
2397 };
2398
2399 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID> {
2400     typedef VkMemoryGetAndroidHardwareBufferInfoANDROID Type;
2401 };
2402
2403 #endif // VK_USE_PLATFORM_ANDROID_KHR
2404 #ifdef VK_USE_PLATFORM_ANDROID_KHR
2405 // Map type VkExternalFormatANDROID to id VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID
2406 template <> struct LvlTypeMap<VkExternalFormatANDROID> {
2407     static const VkStructureType kSType = VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID;
2408 };
2409
2410 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID> {
2411     typedef VkExternalFormatANDROID Type;
2412 };
2413
2414 #endif // VK_USE_PLATFORM_ANDROID_KHR
2415 // Map type VkSamplerReductionModeCreateInfoEXT to id VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT
2416 template <> struct LvlTypeMap<VkSamplerReductionModeCreateInfoEXT> {
2417     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT;
2418 };
2419
2420 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT> {
2421     typedef VkSamplerReductionModeCreateInfoEXT Type;
2422 };
2423
2424 // Map type VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT
2425 template <> struct LvlTypeMap<VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT> {
2426     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT;
2427 };
2428
2429 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT> {
2430     typedef VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT Type;
2431 };
2432
2433 // Map type VkPhysicalDeviceInlineUniformBlockFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT
2434 template <> struct LvlTypeMap<VkPhysicalDeviceInlineUniformBlockFeaturesEXT> {
2435     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT;
2436 };
2437
2438 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT> {
2439     typedef VkPhysicalDeviceInlineUniformBlockFeaturesEXT Type;
2440 };
2441
2442 // Map type VkPhysicalDeviceInlineUniformBlockPropertiesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT
2443 template <> struct LvlTypeMap<VkPhysicalDeviceInlineUniformBlockPropertiesEXT> {
2444     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT;
2445 };
2446
2447 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT> {
2448     typedef VkPhysicalDeviceInlineUniformBlockPropertiesEXT Type;
2449 };
2450
2451 // Map type VkWriteDescriptorSetInlineUniformBlockEXT to id VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT
2452 template <> struct LvlTypeMap<VkWriteDescriptorSetInlineUniformBlockEXT> {
2453     static const VkStructureType kSType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT;
2454 };
2455
2456 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT> {
2457     typedef VkWriteDescriptorSetInlineUniformBlockEXT Type;
2458 };
2459
2460 // Map type VkDescriptorPoolInlineUniformBlockCreateInfoEXT to id VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT
2461 template <> struct LvlTypeMap<VkDescriptorPoolInlineUniformBlockCreateInfoEXT> {
2462     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT;
2463 };
2464
2465 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT> {
2466     typedef VkDescriptorPoolInlineUniformBlockCreateInfoEXT Type;
2467 };
2468
2469 // Map type VkSampleLocationsInfoEXT to id VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT
2470 template <> struct LvlTypeMap<VkSampleLocationsInfoEXT> {
2471     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT;
2472 };
2473
2474 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT> {
2475     typedef VkSampleLocationsInfoEXT Type;
2476 };
2477
2478 // Map type VkRenderPassSampleLocationsBeginInfoEXT to id VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT
2479 template <> struct LvlTypeMap<VkRenderPassSampleLocationsBeginInfoEXT> {
2480     static const VkStructureType kSType = VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT;
2481 };
2482
2483 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT> {
2484     typedef VkRenderPassSampleLocationsBeginInfoEXT Type;
2485 };
2486
2487 // Map type VkPipelineSampleLocationsStateCreateInfoEXT to id VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT
2488 template <> struct LvlTypeMap<VkPipelineSampleLocationsStateCreateInfoEXT> {
2489     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT;
2490 };
2491
2492 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT> {
2493     typedef VkPipelineSampleLocationsStateCreateInfoEXT Type;
2494 };
2495
2496 // Map type VkPhysicalDeviceSampleLocationsPropertiesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT
2497 template <> struct LvlTypeMap<VkPhysicalDeviceSampleLocationsPropertiesEXT> {
2498     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT;
2499 };
2500
2501 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT> {
2502     typedef VkPhysicalDeviceSampleLocationsPropertiesEXT Type;
2503 };
2504
2505 // Map type VkMultisamplePropertiesEXT to id VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT
2506 template <> struct LvlTypeMap<VkMultisamplePropertiesEXT> {
2507     static const VkStructureType kSType = VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT;
2508 };
2509
2510 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT> {
2511     typedef VkMultisamplePropertiesEXT Type;
2512 };
2513
2514 // Map type VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT
2515 template <> struct LvlTypeMap<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT> {
2516     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT;
2517 };
2518
2519 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT> {
2520     typedef VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT Type;
2521 };
2522
2523 // Map type VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT
2524 template <> struct LvlTypeMap<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT> {
2525     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT;
2526 };
2527
2528 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT> {
2529     typedef VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT Type;
2530 };
2531
2532 // Map type VkPipelineColorBlendAdvancedStateCreateInfoEXT to id VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT
2533 template <> struct LvlTypeMap<VkPipelineColorBlendAdvancedStateCreateInfoEXT> {
2534     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT;
2535 };
2536
2537 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT> {
2538     typedef VkPipelineColorBlendAdvancedStateCreateInfoEXT Type;
2539 };
2540
2541 // Map type VkPipelineCoverageToColorStateCreateInfoNV to id VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV
2542 template <> struct LvlTypeMap<VkPipelineCoverageToColorStateCreateInfoNV> {
2543     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV;
2544 };
2545
2546 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV> {
2547     typedef VkPipelineCoverageToColorStateCreateInfoNV Type;
2548 };
2549
2550 // Map type VkPipelineCoverageModulationStateCreateInfoNV to id VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV
2551 template <> struct LvlTypeMap<VkPipelineCoverageModulationStateCreateInfoNV> {
2552     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV;
2553 };
2554
2555 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV> {
2556     typedef VkPipelineCoverageModulationStateCreateInfoNV Type;
2557 };
2558
2559 // Map type VkPhysicalDeviceShaderSMBuiltinsPropertiesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV
2560 template <> struct LvlTypeMap<VkPhysicalDeviceShaderSMBuiltinsPropertiesNV> {
2561     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV;
2562 };
2563
2564 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV> {
2565     typedef VkPhysicalDeviceShaderSMBuiltinsPropertiesNV Type;
2566 };
2567
2568 // Map type VkPhysicalDeviceShaderSMBuiltinsFeaturesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV
2569 template <> struct LvlTypeMap<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV> {
2570     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV;
2571 };
2572
2573 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV> {
2574     typedef VkPhysicalDeviceShaderSMBuiltinsFeaturesNV Type;
2575 };
2576
2577 // Map type VkDrmFormatModifierPropertiesListEXT to id VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT
2578 template <> struct LvlTypeMap<VkDrmFormatModifierPropertiesListEXT> {
2579     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT;
2580 };
2581
2582 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT> {
2583     typedef VkDrmFormatModifierPropertiesListEXT Type;
2584 };
2585
2586 // Map type VkPhysicalDeviceImageDrmFormatModifierInfoEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT
2587 template <> struct LvlTypeMap<VkPhysicalDeviceImageDrmFormatModifierInfoEXT> {
2588     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT;
2589 };
2590
2591 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT> {
2592     typedef VkPhysicalDeviceImageDrmFormatModifierInfoEXT Type;
2593 };
2594
2595 // Map type VkImageDrmFormatModifierListCreateInfoEXT to id VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT
2596 template <> struct LvlTypeMap<VkImageDrmFormatModifierListCreateInfoEXT> {
2597     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT;
2598 };
2599
2600 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT> {
2601     typedef VkImageDrmFormatModifierListCreateInfoEXT Type;
2602 };
2603
2604 // Map type VkImageDrmFormatModifierExplicitCreateInfoEXT to id VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT
2605 template <> struct LvlTypeMap<VkImageDrmFormatModifierExplicitCreateInfoEXT> {
2606     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT;
2607 };
2608
2609 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT> {
2610     typedef VkImageDrmFormatModifierExplicitCreateInfoEXT Type;
2611 };
2612
2613 // Map type VkImageDrmFormatModifierPropertiesEXT to id VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT
2614 template <> struct LvlTypeMap<VkImageDrmFormatModifierPropertiesEXT> {
2615     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT;
2616 };
2617
2618 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT> {
2619     typedef VkImageDrmFormatModifierPropertiesEXT Type;
2620 };
2621
2622 // Map type VkValidationCacheCreateInfoEXT to id VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT
2623 template <> struct LvlTypeMap<VkValidationCacheCreateInfoEXT> {
2624     static const VkStructureType kSType = VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT;
2625 };
2626
2627 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT> {
2628     typedef VkValidationCacheCreateInfoEXT Type;
2629 };
2630
2631 // Map type VkShaderModuleValidationCacheCreateInfoEXT to id VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT
2632 template <> struct LvlTypeMap<VkShaderModuleValidationCacheCreateInfoEXT> {
2633     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT;
2634 };
2635
2636 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT> {
2637     typedef VkShaderModuleValidationCacheCreateInfoEXT Type;
2638 };
2639
2640 // Map type VkDescriptorSetLayoutBindingFlagsCreateInfoEXT to id VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT
2641 template <> struct LvlTypeMap<VkDescriptorSetLayoutBindingFlagsCreateInfoEXT> {
2642     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT;
2643 };
2644
2645 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT> {
2646     typedef VkDescriptorSetLayoutBindingFlagsCreateInfoEXT Type;
2647 };
2648
2649 // Map type VkPhysicalDeviceDescriptorIndexingFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT
2650 template <> struct LvlTypeMap<VkPhysicalDeviceDescriptorIndexingFeaturesEXT> {
2651     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT;
2652 };
2653
2654 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT> {
2655     typedef VkPhysicalDeviceDescriptorIndexingFeaturesEXT Type;
2656 };
2657
2658 // Map type VkPhysicalDeviceDescriptorIndexingPropertiesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT
2659 template <> struct LvlTypeMap<VkPhysicalDeviceDescriptorIndexingPropertiesEXT> {
2660     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT;
2661 };
2662
2663 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT> {
2664     typedef VkPhysicalDeviceDescriptorIndexingPropertiesEXT Type;
2665 };
2666
2667 // Map type VkDescriptorSetVariableDescriptorCountAllocateInfoEXT to id VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT
2668 template <> struct LvlTypeMap<VkDescriptorSetVariableDescriptorCountAllocateInfoEXT> {
2669     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT;
2670 };
2671
2672 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT> {
2673     typedef VkDescriptorSetVariableDescriptorCountAllocateInfoEXT Type;
2674 };
2675
2676 // Map type VkDescriptorSetVariableDescriptorCountLayoutSupportEXT to id VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT
2677 template <> struct LvlTypeMap<VkDescriptorSetVariableDescriptorCountLayoutSupportEXT> {
2678     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT;
2679 };
2680
2681 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT> {
2682     typedef VkDescriptorSetVariableDescriptorCountLayoutSupportEXT Type;
2683 };
2684
2685 // Map type VkPipelineViewportShadingRateImageStateCreateInfoNV to id VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV
2686 template <> struct LvlTypeMap<VkPipelineViewportShadingRateImageStateCreateInfoNV> {
2687     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV;
2688 };
2689
2690 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV> {
2691     typedef VkPipelineViewportShadingRateImageStateCreateInfoNV Type;
2692 };
2693
2694 // Map type VkPhysicalDeviceShadingRateImageFeaturesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV
2695 template <> struct LvlTypeMap<VkPhysicalDeviceShadingRateImageFeaturesNV> {
2696     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV;
2697 };
2698
2699 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV> {
2700     typedef VkPhysicalDeviceShadingRateImageFeaturesNV Type;
2701 };
2702
2703 // Map type VkPhysicalDeviceShadingRateImagePropertiesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV
2704 template <> struct LvlTypeMap<VkPhysicalDeviceShadingRateImagePropertiesNV> {
2705     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV;
2706 };
2707
2708 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV> {
2709     typedef VkPhysicalDeviceShadingRateImagePropertiesNV Type;
2710 };
2711
2712 // Map type VkPipelineViewportCoarseSampleOrderStateCreateInfoNV to id VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV
2713 template <> struct LvlTypeMap<VkPipelineViewportCoarseSampleOrderStateCreateInfoNV> {
2714     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV;
2715 };
2716
2717 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV> {
2718     typedef VkPipelineViewportCoarseSampleOrderStateCreateInfoNV Type;
2719 };
2720
2721 // Map type VkRayTracingShaderGroupCreateInfoNV to id VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV
2722 template <> struct LvlTypeMap<VkRayTracingShaderGroupCreateInfoNV> {
2723     static const VkStructureType kSType = VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV;
2724 };
2725
2726 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV> {
2727     typedef VkRayTracingShaderGroupCreateInfoNV Type;
2728 };
2729
2730 // Map type VkRayTracingPipelineCreateInfoNV to id VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV
2731 template <> struct LvlTypeMap<VkRayTracingPipelineCreateInfoNV> {
2732     static const VkStructureType kSType = VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV;
2733 };
2734
2735 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV> {
2736     typedef VkRayTracingPipelineCreateInfoNV Type;
2737 };
2738
2739 // Map type VkGeometryTrianglesNV to id VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV
2740 template <> struct LvlTypeMap<VkGeometryTrianglesNV> {
2741     static const VkStructureType kSType = VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV;
2742 };
2743
2744 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV> {
2745     typedef VkGeometryTrianglesNV Type;
2746 };
2747
2748 // Map type VkGeometryAABBNV to id VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV
2749 template <> struct LvlTypeMap<VkGeometryAABBNV> {
2750     static const VkStructureType kSType = VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV;
2751 };
2752
2753 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV> {
2754     typedef VkGeometryAABBNV Type;
2755 };
2756
2757 // Map type VkGeometryNV to id VK_STRUCTURE_TYPE_GEOMETRY_NV
2758 template <> struct LvlTypeMap<VkGeometryNV> {
2759     static const VkStructureType kSType = VK_STRUCTURE_TYPE_GEOMETRY_NV;
2760 };
2761
2762 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_GEOMETRY_NV> {
2763     typedef VkGeometryNV Type;
2764 };
2765
2766 // Map type VkAccelerationStructureInfoNV to id VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV
2767 template <> struct LvlTypeMap<VkAccelerationStructureInfoNV> {
2768     static const VkStructureType kSType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV;
2769 };
2770
2771 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV> {
2772     typedef VkAccelerationStructureInfoNV Type;
2773 };
2774
2775 // Map type VkAccelerationStructureCreateInfoNV to id VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV
2776 template <> struct LvlTypeMap<VkAccelerationStructureCreateInfoNV> {
2777     static const VkStructureType kSType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV;
2778 };
2779
2780 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV> {
2781     typedef VkAccelerationStructureCreateInfoNV Type;
2782 };
2783
2784 // Map type VkBindAccelerationStructureMemoryInfoNV to id VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV
2785 template <> struct LvlTypeMap<VkBindAccelerationStructureMemoryInfoNV> {
2786     static const VkStructureType kSType = VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV;
2787 };
2788
2789 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV> {
2790     typedef VkBindAccelerationStructureMemoryInfoNV Type;
2791 };
2792
2793 // Map type VkWriteDescriptorSetAccelerationStructureNV to id VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV
2794 template <> struct LvlTypeMap<VkWriteDescriptorSetAccelerationStructureNV> {
2795     static const VkStructureType kSType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV;
2796 };
2797
2798 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV> {
2799     typedef VkWriteDescriptorSetAccelerationStructureNV Type;
2800 };
2801
2802 // Map type VkAccelerationStructureMemoryRequirementsInfoNV to id VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV
2803 template <> struct LvlTypeMap<VkAccelerationStructureMemoryRequirementsInfoNV> {
2804     static const VkStructureType kSType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV;
2805 };
2806
2807 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV> {
2808     typedef VkAccelerationStructureMemoryRequirementsInfoNV Type;
2809 };
2810
2811 // Map type VkPhysicalDeviceRayTracingPropertiesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV
2812 template <> struct LvlTypeMap<VkPhysicalDeviceRayTracingPropertiesNV> {
2813     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV;
2814 };
2815
2816 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV> {
2817     typedef VkPhysicalDeviceRayTracingPropertiesNV Type;
2818 };
2819
2820 // Map type VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV
2821 template <> struct LvlTypeMap<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV> {
2822     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV;
2823 };
2824
2825 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV> {
2826     typedef VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV Type;
2827 };
2828
2829 // Map type VkPipelineRepresentativeFragmentTestStateCreateInfoNV to id VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV
2830 template <> struct LvlTypeMap<VkPipelineRepresentativeFragmentTestStateCreateInfoNV> {
2831     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV;
2832 };
2833
2834 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV> {
2835     typedef VkPipelineRepresentativeFragmentTestStateCreateInfoNV Type;
2836 };
2837
2838 // Map type VkPhysicalDeviceImageViewImageFormatInfoEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT
2839 template <> struct LvlTypeMap<VkPhysicalDeviceImageViewImageFormatInfoEXT> {
2840     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT;
2841 };
2842
2843 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT> {
2844     typedef VkPhysicalDeviceImageViewImageFormatInfoEXT Type;
2845 };
2846
2847 // Map type VkFilterCubicImageViewImageFormatPropertiesEXT to id VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT
2848 template <> struct LvlTypeMap<VkFilterCubicImageViewImageFormatPropertiesEXT> {
2849     static const VkStructureType kSType = VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT;
2850 };
2851
2852 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT> {
2853     typedef VkFilterCubicImageViewImageFormatPropertiesEXT Type;
2854 };
2855
2856 // Map type VkDeviceQueueGlobalPriorityCreateInfoEXT to id VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT
2857 template <> struct LvlTypeMap<VkDeviceQueueGlobalPriorityCreateInfoEXT> {
2858     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT;
2859 };
2860
2861 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT> {
2862     typedef VkDeviceQueueGlobalPriorityCreateInfoEXT Type;
2863 };
2864
2865 // Map type VkImportMemoryHostPointerInfoEXT to id VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT
2866 template <> struct LvlTypeMap<VkImportMemoryHostPointerInfoEXT> {
2867     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT;
2868 };
2869
2870 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT> {
2871     typedef VkImportMemoryHostPointerInfoEXT Type;
2872 };
2873
2874 // Map type VkMemoryHostPointerPropertiesEXT to id VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT
2875 template <> struct LvlTypeMap<VkMemoryHostPointerPropertiesEXT> {
2876     static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT;
2877 };
2878
2879 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT> {
2880     typedef VkMemoryHostPointerPropertiesEXT Type;
2881 };
2882
2883 // Map type VkPhysicalDeviceExternalMemoryHostPropertiesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT
2884 template <> struct LvlTypeMap<VkPhysicalDeviceExternalMemoryHostPropertiesEXT> {
2885     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT;
2886 };
2887
2888 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT> {
2889     typedef VkPhysicalDeviceExternalMemoryHostPropertiesEXT Type;
2890 };
2891
2892 // Map type VkPipelineCompilerControlCreateInfoAMD to id VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD
2893 template <> struct LvlTypeMap<VkPipelineCompilerControlCreateInfoAMD> {
2894     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD;
2895 };
2896
2897 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD> {
2898     typedef VkPipelineCompilerControlCreateInfoAMD Type;
2899 };
2900
2901 // Map type VkCalibratedTimestampInfoEXT to id VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT
2902 template <> struct LvlTypeMap<VkCalibratedTimestampInfoEXT> {
2903     static const VkStructureType kSType = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT;
2904 };
2905
2906 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT> {
2907     typedef VkCalibratedTimestampInfoEXT Type;
2908 };
2909
2910 // Map type VkPhysicalDeviceShaderCorePropertiesAMD to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD
2911 template <> struct LvlTypeMap<VkPhysicalDeviceShaderCorePropertiesAMD> {
2912     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD;
2913 };
2914
2915 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD> {
2916     typedef VkPhysicalDeviceShaderCorePropertiesAMD Type;
2917 };
2918
2919 // Map type VkDeviceMemoryOverallocationCreateInfoAMD to id VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD
2920 template <> struct LvlTypeMap<VkDeviceMemoryOverallocationCreateInfoAMD> {
2921     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD;
2922 };
2923
2924 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD> {
2925     typedef VkDeviceMemoryOverallocationCreateInfoAMD Type;
2926 };
2927
2928 // Map type VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT
2929 template <> struct LvlTypeMap<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT> {
2930     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT;
2931 };
2932
2933 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT> {
2934     typedef VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT Type;
2935 };
2936
2937 // Map type VkPipelineVertexInputDivisorStateCreateInfoEXT to id VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT
2938 template <> struct LvlTypeMap<VkPipelineVertexInputDivisorStateCreateInfoEXT> {
2939     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT;
2940 };
2941
2942 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT> {
2943     typedef VkPipelineVertexInputDivisorStateCreateInfoEXT Type;
2944 };
2945
2946 // Map type VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT
2947 template <> struct LvlTypeMap<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT> {
2948     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT;
2949 };
2950
2951 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT> {
2952     typedef VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT Type;
2953 };
2954
2955 #ifdef VK_USE_PLATFORM_GGP
2956 // Map type VkPresentFrameTokenGGP to id VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP
2957 template <> struct LvlTypeMap<VkPresentFrameTokenGGP> {
2958     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP;
2959 };
2960
2961 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP> {
2962     typedef VkPresentFrameTokenGGP Type;
2963 };
2964
2965 #endif // VK_USE_PLATFORM_GGP
2966 // Map type VkPipelineCreationFeedbackCreateInfoEXT to id VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT
2967 template <> struct LvlTypeMap<VkPipelineCreationFeedbackCreateInfoEXT> {
2968     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT;
2969 };
2970
2971 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT> {
2972     typedef VkPipelineCreationFeedbackCreateInfoEXT Type;
2973 };
2974
2975 // Map type VkPhysicalDeviceComputeShaderDerivativesFeaturesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV
2976 template <> struct LvlTypeMap<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV> {
2977     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV;
2978 };
2979
2980 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV> {
2981     typedef VkPhysicalDeviceComputeShaderDerivativesFeaturesNV Type;
2982 };
2983
2984 // Map type VkPhysicalDeviceMeshShaderFeaturesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV
2985 template <> struct LvlTypeMap<VkPhysicalDeviceMeshShaderFeaturesNV> {
2986     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV;
2987 };
2988
2989 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV> {
2990     typedef VkPhysicalDeviceMeshShaderFeaturesNV Type;
2991 };
2992
2993 // Map type VkPhysicalDeviceMeshShaderPropertiesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV
2994 template <> struct LvlTypeMap<VkPhysicalDeviceMeshShaderPropertiesNV> {
2995     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV;
2996 };
2997
2998 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV> {
2999     typedef VkPhysicalDeviceMeshShaderPropertiesNV Type;
3000 };
3001
3002 // Map type VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV
3003 template <> struct LvlTypeMap<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV> {
3004     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV;
3005 };
3006
3007 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV> {
3008     typedef VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV Type;
3009 };
3010
3011 // Map type VkPhysicalDeviceShaderImageFootprintFeaturesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV
3012 template <> struct LvlTypeMap<VkPhysicalDeviceShaderImageFootprintFeaturesNV> {
3013     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV;
3014 };
3015
3016 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV> {
3017     typedef VkPhysicalDeviceShaderImageFootprintFeaturesNV Type;
3018 };
3019
3020 // Map type VkPipelineViewportExclusiveScissorStateCreateInfoNV to id VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV
3021 template <> struct LvlTypeMap<VkPipelineViewportExclusiveScissorStateCreateInfoNV> {
3022     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV;
3023 };
3024
3025 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV> {
3026     typedef VkPipelineViewportExclusiveScissorStateCreateInfoNV Type;
3027 };
3028
3029 // Map type VkPhysicalDeviceExclusiveScissorFeaturesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV
3030 template <> struct LvlTypeMap<VkPhysicalDeviceExclusiveScissorFeaturesNV> {
3031     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV;
3032 };
3033
3034 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV> {
3035     typedef VkPhysicalDeviceExclusiveScissorFeaturesNV Type;
3036 };
3037
3038 // Map type VkQueueFamilyCheckpointPropertiesNV to id VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV
3039 template <> struct LvlTypeMap<VkQueueFamilyCheckpointPropertiesNV> {
3040     static const VkStructureType kSType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV;
3041 };
3042
3043 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV> {
3044     typedef VkQueueFamilyCheckpointPropertiesNV Type;
3045 };
3046
3047 // Map type VkCheckpointDataNV to id VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV
3048 template <> struct LvlTypeMap<VkCheckpointDataNV> {
3049     static const VkStructureType kSType = VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV;
3050 };
3051
3052 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV> {
3053     typedef VkCheckpointDataNV Type;
3054 };
3055
3056 // Map type VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL
3057 template <> struct LvlTypeMap<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL> {
3058     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL;
3059 };
3060
3061 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL> {
3062     typedef VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL Type;
3063 };
3064
3065 // Map type VkInitializePerformanceApiInfoINTEL to id VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL
3066 template <> struct LvlTypeMap<VkInitializePerformanceApiInfoINTEL> {
3067     static const VkStructureType kSType = VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL;
3068 };
3069
3070 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL> {
3071     typedef VkInitializePerformanceApiInfoINTEL Type;
3072 };
3073
3074 // Map type VkQueryPoolCreateInfoINTEL to id VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL
3075 template <> struct LvlTypeMap<VkQueryPoolCreateInfoINTEL> {
3076     static const VkStructureType kSType = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL;
3077 };
3078
3079 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL> {
3080     typedef VkQueryPoolCreateInfoINTEL Type;
3081 };
3082
3083 // Map type VkPerformanceMarkerInfoINTEL to id VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL
3084 template <> struct LvlTypeMap<VkPerformanceMarkerInfoINTEL> {
3085     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL;
3086 };
3087
3088 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL> {
3089     typedef VkPerformanceMarkerInfoINTEL Type;
3090 };
3091
3092 // Map type VkPerformanceStreamMarkerInfoINTEL to id VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL
3093 template <> struct LvlTypeMap<VkPerformanceStreamMarkerInfoINTEL> {
3094     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL;
3095 };
3096
3097 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL> {
3098     typedef VkPerformanceStreamMarkerInfoINTEL Type;
3099 };
3100
3101 // Map type VkPerformanceOverrideInfoINTEL to id VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL
3102 template <> struct LvlTypeMap<VkPerformanceOverrideInfoINTEL> {
3103     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL;
3104 };
3105
3106 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL> {
3107     typedef VkPerformanceOverrideInfoINTEL Type;
3108 };
3109
3110 // Map type VkPerformanceConfigurationAcquireInfoINTEL to id VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL
3111 template <> struct LvlTypeMap<VkPerformanceConfigurationAcquireInfoINTEL> {
3112     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL;
3113 };
3114
3115 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL> {
3116     typedef VkPerformanceConfigurationAcquireInfoINTEL Type;
3117 };
3118
3119 // Map type VkPhysicalDevicePCIBusInfoPropertiesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT
3120 template <> struct LvlTypeMap<VkPhysicalDevicePCIBusInfoPropertiesEXT> {
3121     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT;
3122 };
3123
3124 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT> {
3125     typedef VkPhysicalDevicePCIBusInfoPropertiesEXT Type;
3126 };
3127
3128 // Map type VkDisplayNativeHdrSurfaceCapabilitiesAMD to id VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD
3129 template <> struct LvlTypeMap<VkDisplayNativeHdrSurfaceCapabilitiesAMD> {
3130     static const VkStructureType kSType = VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD;
3131 };
3132
3133 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD> {
3134     typedef VkDisplayNativeHdrSurfaceCapabilitiesAMD Type;
3135 };
3136
3137 // Map type VkSwapchainDisplayNativeHdrCreateInfoAMD to id VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD
3138 template <> struct LvlTypeMap<VkSwapchainDisplayNativeHdrCreateInfoAMD> {
3139     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD;
3140 };
3141
3142 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD> {
3143     typedef VkSwapchainDisplayNativeHdrCreateInfoAMD Type;
3144 };
3145
3146 #ifdef VK_USE_PLATFORM_FUCHSIA
3147 // Map type VkImagePipeSurfaceCreateInfoFUCHSIA to id VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA
3148 template <> struct LvlTypeMap<VkImagePipeSurfaceCreateInfoFUCHSIA> {
3149     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA;
3150 };
3151
3152 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA> {
3153     typedef VkImagePipeSurfaceCreateInfoFUCHSIA Type;
3154 };
3155
3156 #endif // VK_USE_PLATFORM_FUCHSIA
3157 #ifdef VK_USE_PLATFORM_METAL_EXT
3158 // Map type VkMetalSurfaceCreateInfoEXT to id VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT
3159 template <> struct LvlTypeMap<VkMetalSurfaceCreateInfoEXT> {
3160     static const VkStructureType kSType = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT;
3161 };
3162
3163 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT> {
3164     typedef VkMetalSurfaceCreateInfoEXT Type;
3165 };
3166
3167 #endif // VK_USE_PLATFORM_METAL_EXT
3168 // Map type VkPhysicalDeviceFragmentDensityMapFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT
3169 template <> struct LvlTypeMap<VkPhysicalDeviceFragmentDensityMapFeaturesEXT> {
3170     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT;
3171 };
3172
3173 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT> {
3174     typedef VkPhysicalDeviceFragmentDensityMapFeaturesEXT Type;
3175 };
3176
3177 // Map type VkPhysicalDeviceFragmentDensityMapPropertiesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT
3178 template <> struct LvlTypeMap<VkPhysicalDeviceFragmentDensityMapPropertiesEXT> {
3179     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT;
3180 };
3181
3182 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT> {
3183     typedef VkPhysicalDeviceFragmentDensityMapPropertiesEXT Type;
3184 };
3185
3186 // Map type VkRenderPassFragmentDensityMapCreateInfoEXT to id VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT
3187 template <> struct LvlTypeMap<VkRenderPassFragmentDensityMapCreateInfoEXT> {
3188     static const VkStructureType kSType = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT;
3189 };
3190
3191 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT> {
3192     typedef VkRenderPassFragmentDensityMapCreateInfoEXT Type;
3193 };
3194
3195 // Map type VkPhysicalDeviceScalarBlockLayoutFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT
3196 template <> struct LvlTypeMap<VkPhysicalDeviceScalarBlockLayoutFeaturesEXT> {
3197     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT;
3198 };
3199
3200 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT> {
3201     typedef VkPhysicalDeviceScalarBlockLayoutFeaturesEXT Type;
3202 };
3203
3204 // Map type VkPhysicalDeviceSubgroupSizeControlFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT
3205 template <> struct LvlTypeMap<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT> {
3206     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT;
3207 };
3208
3209 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT> {
3210     typedef VkPhysicalDeviceSubgroupSizeControlFeaturesEXT Type;
3211 };
3212
3213 // Map type VkPhysicalDeviceSubgroupSizeControlPropertiesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT
3214 template <> struct LvlTypeMap<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT> {
3215     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT;
3216 };
3217
3218 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT> {
3219     typedef VkPhysicalDeviceSubgroupSizeControlPropertiesEXT Type;
3220 };
3221
3222 // Map type VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT to id VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT
3223 template <> struct LvlTypeMap<VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT> {
3224     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT;
3225 };
3226
3227 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT> {
3228     typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT Type;
3229 };
3230
3231 // Map type VkPhysicalDeviceShaderCoreProperties2AMD to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD
3232 template <> struct LvlTypeMap<VkPhysicalDeviceShaderCoreProperties2AMD> {
3233     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD;
3234 };
3235
3236 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD> {
3237     typedef VkPhysicalDeviceShaderCoreProperties2AMD Type;
3238 };
3239
3240 // Map type VkPhysicalDeviceCoherentMemoryFeaturesAMD to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD
3241 template <> struct LvlTypeMap<VkPhysicalDeviceCoherentMemoryFeaturesAMD> {
3242     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD;
3243 };
3244
3245 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD> {
3246     typedef VkPhysicalDeviceCoherentMemoryFeaturesAMD Type;
3247 };
3248
3249 // Map type VkPhysicalDeviceMemoryBudgetPropertiesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT
3250 template <> struct LvlTypeMap<VkPhysicalDeviceMemoryBudgetPropertiesEXT> {
3251     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT;
3252 };
3253
3254 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT> {
3255     typedef VkPhysicalDeviceMemoryBudgetPropertiesEXT Type;
3256 };
3257
3258 // Map type VkPhysicalDeviceMemoryPriorityFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT
3259 template <> struct LvlTypeMap<VkPhysicalDeviceMemoryPriorityFeaturesEXT> {
3260     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT;
3261 };
3262
3263 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT> {
3264     typedef VkPhysicalDeviceMemoryPriorityFeaturesEXT Type;
3265 };
3266
3267 // Map type VkMemoryPriorityAllocateInfoEXT to id VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT
3268 template <> struct LvlTypeMap<VkMemoryPriorityAllocateInfoEXT> {
3269     static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT;
3270 };
3271
3272 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT> {
3273     typedef VkMemoryPriorityAllocateInfoEXT Type;
3274 };
3275
3276 // Map type VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV
3277 template <> struct LvlTypeMap<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV> {
3278     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV;
3279 };
3280
3281 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV> {
3282     typedef VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV Type;
3283 };
3284
3285 // Map type VkPhysicalDeviceBufferDeviceAddressFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT
3286 template <> struct LvlTypeMap<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT> {
3287     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT;
3288 };
3289
3290 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT> {
3291     typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT Type;
3292 };
3293
3294 // Map type VkBufferDeviceAddressInfoEXT to id VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT
3295 template <> struct LvlTypeMap<VkBufferDeviceAddressInfoEXT> {
3296     static const VkStructureType kSType = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT;
3297 };
3298
3299 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT> {
3300     typedef VkBufferDeviceAddressInfoEXT Type;
3301 };
3302
3303 // Map type VkBufferDeviceAddressCreateInfoEXT to id VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT
3304 template <> struct LvlTypeMap<VkBufferDeviceAddressCreateInfoEXT> {
3305     static const VkStructureType kSType = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT;
3306 };
3307
3308 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT> {
3309     typedef VkBufferDeviceAddressCreateInfoEXT Type;
3310 };
3311
3312 // Map type VkImageStencilUsageCreateInfoEXT to id VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT
3313 template <> struct LvlTypeMap<VkImageStencilUsageCreateInfoEXT> {
3314     static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT;
3315 };
3316
3317 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT> {
3318     typedef VkImageStencilUsageCreateInfoEXT Type;
3319 };
3320
3321 // Map type VkValidationFeaturesEXT to id VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT
3322 template <> struct LvlTypeMap<VkValidationFeaturesEXT> {
3323     static const VkStructureType kSType = VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT;
3324 };
3325
3326 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT> {
3327     typedef VkValidationFeaturesEXT Type;
3328 };
3329
3330 // Map type VkCooperativeMatrixPropertiesNV to id VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV
3331 template <> struct LvlTypeMap<VkCooperativeMatrixPropertiesNV> {
3332     static const VkStructureType kSType = VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV;
3333 };
3334
3335 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV> {
3336     typedef VkCooperativeMatrixPropertiesNV Type;
3337 };
3338
3339 // Map type VkPhysicalDeviceCooperativeMatrixFeaturesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV
3340 template <> struct LvlTypeMap<VkPhysicalDeviceCooperativeMatrixFeaturesNV> {
3341     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV;
3342 };
3343
3344 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV> {
3345     typedef VkPhysicalDeviceCooperativeMatrixFeaturesNV Type;
3346 };
3347
3348 // Map type VkPhysicalDeviceCooperativeMatrixPropertiesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV
3349 template <> struct LvlTypeMap<VkPhysicalDeviceCooperativeMatrixPropertiesNV> {
3350     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV;
3351 };
3352
3353 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV> {
3354     typedef VkPhysicalDeviceCooperativeMatrixPropertiesNV Type;
3355 };
3356
3357 // Map type VkPhysicalDeviceCoverageReductionModeFeaturesNV to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV
3358 template <> struct LvlTypeMap<VkPhysicalDeviceCoverageReductionModeFeaturesNV> {
3359     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV;
3360 };
3361
3362 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV> {
3363     typedef VkPhysicalDeviceCoverageReductionModeFeaturesNV Type;
3364 };
3365
3366 // Map type VkPipelineCoverageReductionStateCreateInfoNV to id VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV
3367 template <> struct LvlTypeMap<VkPipelineCoverageReductionStateCreateInfoNV> {
3368     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV;
3369 };
3370
3371 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV> {
3372     typedef VkPipelineCoverageReductionStateCreateInfoNV Type;
3373 };
3374
3375 // Map type VkFramebufferMixedSamplesCombinationNV to id VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV
3376 template <> struct LvlTypeMap<VkFramebufferMixedSamplesCombinationNV> {
3377     static const VkStructureType kSType = VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV;
3378 };
3379
3380 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV> {
3381     typedef VkFramebufferMixedSamplesCombinationNV Type;
3382 };
3383
3384 // Map type VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT
3385 template <> struct LvlTypeMap<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT> {
3386     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT;
3387 };
3388
3389 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT> {
3390     typedef VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT Type;
3391 };
3392
3393 // Map type VkPhysicalDeviceYcbcrImageArraysFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT
3394 template <> struct LvlTypeMap<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT> {
3395     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT;
3396 };
3397
3398 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT> {
3399     typedef VkPhysicalDeviceYcbcrImageArraysFeaturesEXT Type;
3400 };
3401
3402 #ifdef VK_USE_PLATFORM_WIN32_KHR
3403 // Map type VkSurfaceFullScreenExclusiveInfoEXT to id VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT
3404 template <> struct LvlTypeMap<VkSurfaceFullScreenExclusiveInfoEXT> {
3405     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT;
3406 };
3407
3408 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT> {
3409     typedef VkSurfaceFullScreenExclusiveInfoEXT Type;
3410 };
3411
3412 #endif // VK_USE_PLATFORM_WIN32_KHR
3413 #ifdef VK_USE_PLATFORM_WIN32_KHR
3414 // Map type VkSurfaceCapabilitiesFullScreenExclusiveEXT to id VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT
3415 template <> struct LvlTypeMap<VkSurfaceCapabilitiesFullScreenExclusiveEXT> {
3416     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT;
3417 };
3418
3419 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT> {
3420     typedef VkSurfaceCapabilitiesFullScreenExclusiveEXT Type;
3421 };
3422
3423 #endif // VK_USE_PLATFORM_WIN32_KHR
3424 #ifdef VK_USE_PLATFORM_WIN32_KHR
3425 // Map type VkSurfaceFullScreenExclusiveWin32InfoEXT to id VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT
3426 template <> struct LvlTypeMap<VkSurfaceFullScreenExclusiveWin32InfoEXT> {
3427     static const VkStructureType kSType = VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT;
3428 };
3429
3430 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT> {
3431     typedef VkSurfaceFullScreenExclusiveWin32InfoEXT Type;
3432 };
3433
3434 #endif // VK_USE_PLATFORM_WIN32_KHR
3435 // Map type VkHeadlessSurfaceCreateInfoEXT to id VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT
3436 template <> struct LvlTypeMap<VkHeadlessSurfaceCreateInfoEXT> {
3437     static const VkStructureType kSType = VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT;
3438 };
3439
3440 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT> {
3441     typedef VkHeadlessSurfaceCreateInfoEXT Type;
3442 };
3443
3444 // Map type VkPhysicalDeviceLineRasterizationFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT
3445 template <> struct LvlTypeMap<VkPhysicalDeviceLineRasterizationFeaturesEXT> {
3446     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT;
3447 };
3448
3449 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT> {
3450     typedef VkPhysicalDeviceLineRasterizationFeaturesEXT Type;
3451 };
3452
3453 // Map type VkPhysicalDeviceLineRasterizationPropertiesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT
3454 template <> struct LvlTypeMap<VkPhysicalDeviceLineRasterizationPropertiesEXT> {
3455     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT;
3456 };
3457
3458 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT> {
3459     typedef VkPhysicalDeviceLineRasterizationPropertiesEXT Type;
3460 };
3461
3462 // Map type VkPipelineRasterizationLineStateCreateInfoEXT to id VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT
3463 template <> struct LvlTypeMap<VkPipelineRasterizationLineStateCreateInfoEXT> {
3464     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT;
3465 };
3466
3467 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT> {
3468     typedef VkPipelineRasterizationLineStateCreateInfoEXT Type;
3469 };
3470
3471 // Map type VkPhysicalDeviceHostQueryResetFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT
3472 template <> struct LvlTypeMap<VkPhysicalDeviceHostQueryResetFeaturesEXT> {
3473     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT;
3474 };
3475
3476 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT> {
3477     typedef VkPhysicalDeviceHostQueryResetFeaturesEXT Type;
3478 };
3479
3480 // Map type VkPhysicalDeviceIndexTypeUint8FeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT
3481 template <> struct LvlTypeMap<VkPhysicalDeviceIndexTypeUint8FeaturesEXT> {
3482     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT;
3483 };
3484
3485 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT> {
3486     typedef VkPhysicalDeviceIndexTypeUint8FeaturesEXT Type;
3487 };
3488
3489 // Map type VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT
3490 template <> struct LvlTypeMap<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT> {
3491     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT;
3492 };
3493
3494 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT> {
3495     typedef VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT Type;
3496 };
3497
3498 // Map type VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT
3499 template <> struct LvlTypeMap<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT> {
3500     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT;
3501 };
3502
3503 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT> {
3504     typedef VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT Type;
3505 };
3506
3507 // Map type VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT
3508 template <> struct LvlTypeMap<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT> {
3509     static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT;
3510 };
3511
3512 template <> struct LvlSTypeMap<VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT> {
3513     typedef VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT Type;
3514 };
3515
3516 // Header "base class" for pNext chain traversal
3517 struct LvlGenericHeader {
3518    VkStructureType sType;
3519    const LvlGenericHeader *pNext;
3520 };
3521
3522 // Find an entry of the given type in the pNext chain
3523 template <typename T> const T *lvl_find_in_chain(const void *next) {
3524     const LvlGenericHeader *current = reinterpret_cast<const LvlGenericHeader *>(next);
3525     const T *found = nullptr;
3526     while (current) {
3527         if (LvlTypeMap<T>::kSType == current->sType) {
3528             found = reinterpret_cast<const T*>(current);
3529             current = nullptr;
3530         } else {
3531             current = current->pNext;
3532         }
3533     }
3534     return found;
3535 }
3536
3537 // Init the header of an sType struct with pNext
3538 template <typename T> T lvl_init_struct(void *p_next) {
3539     T out = {};
3540     out.sType = LvlTypeMap<T>::kSType;
3541     out.pNext = p_next;
3542     return out;
3543 }
3544
3545 // Init the header of an sType struct
3546 template <typename T> T lvl_init_struct() {
3547     T out = {};
3548     out.sType = LvlTypeMap<T>::kSType;
3549     return out;
3550 }
3551