• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2019 The SwiftShader Authors. All Rights Reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //    http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #include "VkStringify.hpp"
16 
17 #include "System/Debug.hpp"
18 
19 #include "vulkan/vk_ext_provoking_vertex.h"
20 
21 #include <iostream>
22 #include <map>
23 #include <string>
24 
25 namespace vk {
26 
Stringify(VkStructureType value)27 std::string Stringify(VkStructureType value)
28 {
29 #ifndef NDEBUG
30 	// Since C++ hasn't given us introspection on enums, we can't just "get" an
31 	// enum name from an enum value (at least not without some crazy header
32 	// file hacks). So I copied the entire list of VK_STRUCTURE_TYPE defined in
33 	// vulkan/vulkan_core.h.
34 	//
35 	// If vulkan_core.h is updated to include new structure types, and this list
36 	// becomes out of date, then this function will throw a warning if someone
37 	// tries to stringify that enum value.
38 	static const std::map<VkStructureType, const char *> strings = {
39 #	define INSERT_ELEMENT(p) std::make_pair(p, #    p)
40 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_APPLICATION_INFO),
41 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO),
42 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO),
43 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO),
44 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SUBMIT_INFO),
45 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO),
46 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE),
47 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BIND_SPARSE_INFO),
48 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_FENCE_CREATE_INFO),
49 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO),
50 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EVENT_CREATE_INFO),
51 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO),
52 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO),
53 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO),
54 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO),
55 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO),
56 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO),
57 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO),
58 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO),
59 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO),
60 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO),
61 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO),
62 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO),
63 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO),
64 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO),
65 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO),
66 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO),
67 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO),
68 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO),
69 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO),
70 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO),
71 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO),
72 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO),
73 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO),
74 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO),
75 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET),
76 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET),
77 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO),
78 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO),
79 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO),
80 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO),
81 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO),
82 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO),
83 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO),
84 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER),
85 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER),
86 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_BARRIER),
87 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO),
88 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO),
89 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES),
90 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO),
91 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO),
92 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES),
93 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS),
94 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO),
95 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO),
96 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO),
97 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO),
98 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO),
99 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO),
100 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO),
101 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO),
102 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES),
103 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO),
104 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2),
105 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2),
106 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2),
107 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2),
108 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2),
109 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2),
110 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2),
111 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2),
112 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2),
113 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2),
114 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2),
115 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2),
116 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2),
117 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2),
118 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES),
119 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO),
120 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO),
121 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO),
122 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO),
123 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES),
124 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES),
125 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES),
126 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO),
127 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES),
128 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES),
129 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2),
130 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO),
131 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO),
132 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO),
133 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO),
134 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES),
135 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES),
136 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO),
137 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO),
138 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES),
139 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO),
140 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES),
141 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES),
142 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO),
143 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO),
144 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO),
145 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO),
146 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES),
147 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO),
148 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO),
149 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO),
150 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES),
151 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES),
152 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT),
153 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES),
154 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR),
155 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PRESENT_INFO_KHR),
156 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR),
157 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR),
158 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR),
159 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR),
160 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR),
161 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR),
162 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR),
163 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR),
164 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR),
165 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR),
166 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR),
167 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR),
168 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR),
169 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR),
170 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT),
171 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD),
172 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT),
173 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT),
174 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT),
175 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV),
176 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV),
177 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV),
178 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT),
179 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT),
180 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT),
181 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX),
182 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD),
183 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP),
184 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV),
185 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV),
186 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV),
187 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV),
188 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV),
189 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV),
190 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT),
191 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN),
192 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT),
193 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT),
194 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR),
195 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR),
196 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR),
197 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR),
198 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR),
199 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR),
200 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR),
201 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR),
202 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR),
203 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR),
204 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR),
205 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR),
206 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR),
207 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR),
208 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR),
209 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT),
210 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT),
211 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT),
212 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR),
213 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR),
214 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX),
215 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX),
216 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX),
217 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX),
218 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX),
219 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX),
220 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV),
221 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT),
222 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT),
223 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT),
224 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT),
225 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT),
226 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE),
227 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX),
228 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV),
229 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT),
230 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT),
231 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT),
232 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT),
233 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT),
234 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT),
235 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_HDR_METADATA_EXT),
236 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR),
237 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR),
238 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR),
239 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR),
240 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR),
241 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR),
242 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR),
243 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR),
244 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR),
245 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR),
246 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR),
247 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR),
248 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR),
249 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR),
250 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR),
251 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR),
252 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR),
253 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR),
254 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR),
255 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR),
256 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR),
257 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK),
258 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK),
259 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT),
260 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT),
261 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT),
262 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT),
263 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT),
264 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID),
265 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID),
266 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID),
267 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID),
268 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID),
269 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID),
270 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT),
271 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT),
272 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT),
273 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT),
274 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT),
275 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT),
276 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT),
277 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT),
278 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT),
279 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT),
280 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT),
281 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR),
282 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT),
283 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT),
284 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT),
285 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV),
286 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV),
287 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV),
288 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV),
289 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT),
290 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT),
291 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT),
292 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT),
293 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT),
294 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT),
295 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT),
296 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT),
297 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT),
298 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT),
299 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT),
300 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT),
301 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT),
302 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV),
303 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV),
304 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV),
305 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV),
306 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV),
307 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV),
308 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_GEOMETRY_NV),
309 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV),
310 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV),
311 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV),
312 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV),
313 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV),
314 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV),
315 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV),
316 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV),
317 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV),
318 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV),
319 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT),
320 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT),
321 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT),
322 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR),
323 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT),
324 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT),
325 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT),
326 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR),
327 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT),
328 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD),
329 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD),
330 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT),
331 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT),
332 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT),
333 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP),
334 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT),
335 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR),
336 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR),
337 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR),
338 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR),
339 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV),
340 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV),
341 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV),
342 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV),
343 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV),
344 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV),
345 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV),
346 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV),
347 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV),
348 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL),
349 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL),
350 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL),
351 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL),
352 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL),
353 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL),
354 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR),
355 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT),
356 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD),
357 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD),
358 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA),
359 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT),
360 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT),
361 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT),
362 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT),
363 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT),
364 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT),
365 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT),
366 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT),
367 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR),
368 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV),
369 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT),
370 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT),
371 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT),
372 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT),
373 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT),
374 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV),
375 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV),
376 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV),
377 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV),
378 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV),
379 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV),
380 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT),
381 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT),
382 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR),
383 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT),
384 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT),
385 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT),
386 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT),
387 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT),
388 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES),
389 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES),
390 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT),
391 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR),
392 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR),
393 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR),
394 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR),
395 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR),
396 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR),
397 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR),
398 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR),
399 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR),
400 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR),
401 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR),
402 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR),
403 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR),
404 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR),
405 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR),
406 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR),
407 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR),
408 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR),
409 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR),
410 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR),
411 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR),
412 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR),
413 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR),
414 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR),
415 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR),
416 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR),
417 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR),
418 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR),
419 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR),
420 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR),
421 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR),
422 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR),
423 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR),
424 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR),
425 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT),
426 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR),
427 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR),
428 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR),
429 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR),
430 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR),
431 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR),
432 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR),
433 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR),
434 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR),
435 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR),
436 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR),
437 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR),
438 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR),
439 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR),
440 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR),
441 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR),
442 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR),
443 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR),
444 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR),
445 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR),
446 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR),
447 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR),
448 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR),
449 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR),
450 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR),
451 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR),
452 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT),
453 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT),
454 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT),
455 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT),
456 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_BEGIN_RANGE),
457 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_END_RANGE),
458 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_RANGE_SIZE),
459 		INSERT_ELEMENT(VK_STRUCTURE_TYPE_MAX_ENUM)
460 #	undef INSERT_ELEMENT
461 	};
462 	auto it = strings.find(value);
463 	if(it != strings.end())
464 	{
465 		return std::string(it->second);
466 	}
467 	else
468 	{
469 		WARN("Stringify(VkStructureType v) is out of date. Please update it to match vulkan/vulkan_core.h");
470 		return std::to_string(value);
471 	}
472 #else  // if not debug:
473 	return std::to_string(value);
474 #endif
475 }
476 
477 }  // namespace vk
478