xref: /aosp_15_r20/external/deqp/external/vulkancts/framework/vulkan/generated/vulkansc/vulkan_json_parser.hpp (revision 35238bce31c2a825756842865a792f8cf7f89930)
1 #ifndef _VULKAN_JSON_PARSER_HPP
2 #define _VULKAN_JSON_PARSER_HPP
3 
4 /*
5  * Copyright (c) 2021 The Khronos Group Inc.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  *//*!
20  * \file
21  * \brief Defines JSON generators for Vulkan structures
22  */
23 
24 /********************************************************************************************/
25 /** This code is generated. To make changes, please modify the scripts or the relevant xml **/
26 /********************************************************************************************/
27 
28 #pragma once
29 #include <iostream>
30 #include <map>
31 #include <cinttypes>
32 #include <algorithm>
33 #include <bitset>
34 #include <functional>
35 #include <sstream>
36 #include <cinttypes>
37 #include <json/json.h>
38 
39 namespace vk_json_parser
40 {
41 
42 template <typename T1, typename T2>
43 class GlobalMem
44 {
45     static constexpr size_t MAX_ALIGNMENT = alignof(std::max_align_t);
46 
grow(T1 size=0)47     void grow(T1 size = 0)
48     {
49         //push_back new single vector of size m_tabSize onto vec
50         void *p = calloc(size > m_tabSize ? size : m_tabSize, sizeof(T2));
51         assert(p);
52         m_vec.push_back(p);
53         m_pointer = 0U;
54     }
alloc(T1 size)55     void *alloc(T1 size)
56     {
57         // Align to the next multiple of MAX_ALIGNMENT.
58         size = (size + static_cast<T1>(MAX_ALIGNMENT) - 1) & ~(static_cast<T1>(MAX_ALIGNMENT) - 1);
59 
60         void *result = static_cast<uint8_t *>(m_vec.back()) + m_pointer;
61         m_pointer += size;
62         return result;
63     }
64 
65 public:
GlobalMem(T1 tabSize_=32768U)66     GlobalMem(T1 tabSize_ = 32768U) : m_tabSize(tabSize_), m_pointer(0U)
67     {
68     }
69 
allocate(T1 size)70     void *allocate(T1 size)
71     {
72         if (m_vec.empty() || m_pointer + size >= m_tabSize)
73         {
74             grow();
75         }
76         return alloc(size);
77     }
78 
allocate(T1 count,T1 size)79     void *allocate(T1 count, T1 size)
80     {
81         T1 totalSize = count * size;
82         if (m_vec.empty() || m_pointer + totalSize >= m_tabSize)
83         {
84             grow(totalSize);
85         }
86         return alloc(totalSize);
87     }
88     // deallocates all memory. Any use of earlier allocated elements is forbidden
clear()89     void clear()
90     {
91         // remove all vectors from vec excluding the one with index 0
92         for (size_t i = 1; i < m_vec.size(); i++)
93         {
94             free(m_vec[i]);
95         }
96         if (!m_vec.empty())
97         {
98             m_vec.resize(1);
99         }
100         m_pointer = 0;
101     }
102 
~GlobalMem()103     ~GlobalMem()
104     {
105         clear();
106         if (!m_vec.empty())
107         {
108             free(m_vec[0]);
109         }
110     }
111 
112 private:
113     std::vector<void *> m_vec;
114     T1 m_tabSize;
115     T1 m_pointer;
116 };
117 
118 static thread_local GlobalMem<uint32_t, uint8_t> s_globalMem(32768U);
119 
120 // To make sure the generated data is consistent across platforms,
121 // we typecast to 32-bit.
parse_size_t(const char * s,Json::Value & obj,size_t & o)122 static void parse_size_t(const char *s, Json::Value &obj, size_t &o)
123 {
124     uint32_t _res = static_cast<uint32_t>(obj.asUInt());
125     o             = _res;
126 }
127 
parse_char(const char * s,Json::Value & obj,char o[])128 static void parse_char(const char *s, Json::Value &obj, char o[])
129 {
130     std::string _res = obj.asString();
131     memcpy((void *)o, _res.c_str(), static_cast<uint32_t>(_res.size()));
132     o[_res.size()] = '\0';
133 }
parse_char(const char * s,Json::Value & obj,const char * const *)134 static void parse_char(const char *s, Json::Value &obj, const char *const *)
135 {
136 }
parse_char(const char * s,Json::Value & obj,const char ** o)137 static void parse_char(const char *s, Json::Value &obj, const char **o)
138 {
139     std::string _res = obj.asString();
140     char *writePtr   = (char *)s_globalMem.allocate(static_cast<uint32_t>(_res.size()) + 1);
141     memcpy((void *)writePtr, _res.c_str(), _res.size());
142     writePtr[_res.size()] = '\0';
143     *o                    = writePtr;
144 }
145 
parse_int32_t(const char * s,Json::Value & obj,int32_t & o)146 static void parse_int32_t(const char *s, Json::Value &obj, int32_t &o)
147 {
148     o = obj.asInt();
149 }
150 
parse_uint32_t(const char * s,Json::Value & obj,uint32_t & o)151 static void parse_uint32_t(const char *s, Json::Value &obj, uint32_t &o)
152 {
153     if (obj.isString())
154         if (obj.asString() == "VK_MAX_PHYSICAL_DEVICE_NAME_SIZE")
155             o = 256;
156         else if (obj.asString() == "VK_UUID_SIZE")
157             o = 16;
158         else if (obj.asString() == "VK_LUID_SIZE")
159             o = 8;
160         else if (obj.asString() == "VK_MAX_EXTENSION_NAME_SIZE")
161             o = 256;
162         else if (obj.asString() == "VK_MAX_DESCRIPTION_SIZE")
163             o = 256;
164         else if (obj.asString() == "VK_MAX_MEMORY_TYPES")
165             o = 32;
166         else if (obj.asString() == "VK_MAX_MEMORY_HEAPS")
167             o = 16;
168         else if (obj.asString() == "VK_REMAINING_MIP_LEVELS")
169             o = (~0U);
170         else if (obj.asString() == "VK_REMAINING_ARRAY_LAYERS")
171             o = (~0U);
172         else if (obj.asString() == "VK_ATTACHMENT_UNUSED")
173             o = (~0U);
174         else if (obj.asString() == "VK_TRUE")
175             o = 1;
176         else if (obj.asString() == "VK_FALSE")
177             o = 0;
178         else if (obj.asString() == "VK_QUEUE_FAMILY_IGNORED")
179             o = (~0U);
180         else if (obj.asString() == "VK_QUEUE_FAMILY_EXTERNAL")
181             o = (~1U);
182         else if (obj.asString() == "VK_QUEUE_FAMILY_FOREIGN_EXT")
183             o = (~2U);
184         else if (obj.asString() == "VK_SUBPASS_EXTERNAL")
185             o = (~0U);
186         else if (obj.asString() == "VK_MAX_DEVICE_GROUP_SIZE")
187             o = 32;
188         else if (obj.asString() == "VK_MAX_DRIVER_NAME_SIZE")
189             o = 256;
190         else if (obj.asString() == "VK_MAX_DRIVER_INFO_SIZE")
191             o = 256;
192         else if (obj.asString() == "VK_SHADER_UNUSED_KHR")
193             o = (~0U);
194         else if (obj.asString() == "VK_MAX_GLOBAL_PRIORITY_SIZE_EXT")
195             o = 16;
196         else
197             assert(false);
198     else
199         o = obj.asUInt();
200 }
201 
parse_uint8_t(const char * s,Json::Value & obj,uint8_t & o)202 static void parse_uint8_t(const char *s, Json::Value &obj, uint8_t &o)
203 {
204     o = static_cast<uint8_t>(obj.asUInt());
205 }
206 
parse_uint64_t(const char * s,Json::Value & obj,uint64_t & o)207 static void parse_uint64_t(const char *s, Json::Value &obj, uint64_t &o)
208 {
209     if (obj.isString())
210         if (obj.asString() == "VK_WHOLE_SIZE")
211             o = (~0ULL);
212         else
213             assert(false);
214     else
215         o = obj.asUInt64();
216 }
217 
parse_float(const char * s,Json::Value & obj,float & o)218 static void parse_float(const char *s, Json::Value &obj, float &o)
219 {
220     if (obj.isString())
221         if (obj.asString() == "VK_LOD_CLAMP_NONE")
222             o = 1000.0F;
223         else if (obj.asString() == "NaN")
224             o = std::numeric_limits<float>::quiet_NaN();
225         else
226             assert(false);
227     else
228         o = obj.asFloat();
229 }
230 
parse_int(const char * s,Json::Value & obj,int & o)231 static void parse_int(const char *s, Json::Value &obj, int &o)
232 {
233     o = obj.asInt();
234 }
235 
parse_double(const char * s,Json::Value & obj,double & o)236 static void parse_double(const char *s, Json::Value &obj, double &o)
237 {
238     o = obj.asDouble();
239 }
240 
parse_int64_t(const char * s,Json::Value & obj,int64_t & o)241 static void parse_int64_t(const char *s, Json::Value &obj, int64_t &o)
242 {
243     o = obj.asInt64();
244 }
245 
parse_uint16_t(const char * s,Json::Value & obj,uint16_t & o)246 static void parse_uint16_t(const char *s, Json::Value &obj, uint16_t &o)
247 {
248     o = static_cast<uint16_t>(obj.asUInt());
249 }
250 
parse_NvSciBufAttrList(const char * s,Json::Value & obj,vk::pt::NvSciBufAttrList & o)251 static void parse_NvSciBufAttrList(const char *s, Json::Value &obj, vk::pt::NvSciBufAttrList &o)
252 {
253     o = static_cast<vk::pt::NvSciBufAttrList>(obj.asInt());
254 }
255 
parse_NvSciBufObj(const char * s,Json::Value & obj,vk::pt::NvSciBufObj & o)256 static void parse_NvSciBufObj(const char *s, Json::Value &obj, vk::pt::NvSciBufObj &o)
257 {
258     o = static_cast<vk::pt::NvSciBufObj>(obj.asInt());
259 }
260 
parse_NvSciSyncAttrList(const char * s,Json::Value & obj,vk::pt::NvSciSyncAttrList & o)261 static void parse_NvSciSyncAttrList(const char *s, Json::Value &obj, vk::pt::NvSciSyncAttrList &o)
262 {
263     o = static_cast<vk::pt::NvSciSyncAttrList>(obj.asInt());
264 }
265 
parse_NvSciSyncObj(const char * s,Json::Value & obj,vk::pt::NvSciSyncObj & o)266 static void parse_NvSciSyncObj(const char *s, Json::Value &obj, vk::pt::NvSciSyncObj &o)
267 {
268     o = static_cast<vk::pt::NvSciSyncObj>(obj.asInt());
269 }
270 
271 // base64 encoder taken from executor/xeTestResultParser.cpp
272 
base64decode(const std::string encoded)273 static std::vector<uint8_t> base64decode(const std::string encoded)
274 {
275     int base64DecodeOffset = 0;
276     std::vector<uint8_t> result;
277 
278     for (std::size_t inNdx = 0; inNdx < encoded.size(); inNdx++)
279     {
280         uint8_t byte        = encoded[inNdx];
281         uint8_t decodedBits = 0;
282 
283         if (de::inRange<uint8_t>(byte, 'A', 'Z'))
284             decodedBits = (uint8_t)(byte - 'A');
285         else if (de::inRange<uint8_t>(byte, 'a', 'z'))
286             decodedBits = (uint8_t)(('Z' - 'A' + 1) + (byte - 'a'));
287         else if (de::inRange<uint8_t>(byte, '0', '9'))
288             decodedBits = (uint8_t)(('Z' - 'A' + 1) + ('z' - 'a' + 1) + (byte - '0'));
289         else if (byte == '+')
290             decodedBits = ('Z' - 'A' + 1) + ('z' - 'a' + 1) + ('9' - '0' + 1);
291         else if (byte == '/')
292             decodedBits = ('Z' - 'A' + 1) + ('z' - 'a' + 1) + ('9' - '0' + 2);
293         else
294             continue; // Not an B64 input character.
295 
296         int phase = base64DecodeOffset % 4;
297 
298         if (phase == 0)
299             result.resize(result.size() + 3, 0);
300 
301         //        if ((int)image->data.size() < (base64DecodeOffset >> 2) * 3 + 3)
302         // throw TestResultParseError("Malformed base64 data");
303         uint8_t *outPtr = result.data() + (base64DecodeOffset >> 2) * 3;
304 
305         switch (phase)
306         {
307         case 0:
308             outPtr[0] |= (uint8_t)(decodedBits << 2);
309             break;
310         case 1:
311             outPtr[0] = (uint8_t)(outPtr[0] | (uint8_t)(decodedBits >> 4));
312             outPtr[1] = (uint8_t)(outPtr[1] | (uint8_t)((decodedBits & 0xF) << 4));
313             break;
314         case 2:
315             outPtr[1] = (uint8_t)(outPtr[1] | (uint8_t)(decodedBits >> 2));
316             outPtr[2] = (uint8_t)(outPtr[2] | (uint8_t)((decodedBits & 0x3) << 6));
317             break;
318         case 3:
319             outPtr[2] |= decodedBits;
320             break;
321         default:
322             DE_ASSERT(false);
323         }
324 
325         base64DecodeOffset++;
326     }
327     return result;
328 }
329 
parse_void_data(const void * s,Json::Value & obj,void * o,int oSize)330 static void parse_void_data(const void *s, Json::Value &obj, void *o, int oSize)
331 {
332     std::vector<uint8_t> data;
333     if (obj.isString())
334     {
335         data = base64decode(obj.asString());
336     }
337     else
338     {
339         data.resize(oSize);
340         for (int i = 0; i < std::min(oSize, (int)obj.size()); i++)
341         {
342             parse_uint8_t("pData", obj[i], const_cast<uint8_t &>(data[i]));
343         }
344     }
345     memcpy(o, data.data(), oSize);
346 }
347 
348 /*************************************** Begin prototypes ***********************************/
349 static void parse_VkSampleMask(const char *s, Json::Value &obj, VkSampleMask &o);
350 static void parse_VkBool32(const char *s, Json::Value &obj, VkBool32 &o);
351 static void parse_VkFlags(const char *s, Json::Value &obj, VkFlags &o);
352 static void parse_VkFlags64(const char *s, Json::Value &obj, VkFlags64 &o);
353 static void parse_VkDeviceSize(const char *s, Json::Value &obj, VkDeviceSize &o);
354 static void parse_VkDeviceAddress(const char *s, Json::Value &obj, VkDeviceAddress &o);
355 static void parse_VkFramebufferCreateFlags(const char *s, Json::Value &obj, VkFramebufferCreateFlags &o);
356 static void parse_VkQueryPoolCreateFlags(const char *s, Json::Value &obj, VkQueryPoolCreateFlags &o);
357 static void parse_VkRenderPassCreateFlags(const char *s, Json::Value &obj, VkRenderPassCreateFlags &o);
358 static void parse_VkSamplerCreateFlags(const char *s, Json::Value &obj, VkSamplerCreateFlags &o);
359 static void parse_VkPipelineLayoutCreateFlags(const char *s, Json::Value &obj, VkPipelineLayoutCreateFlags &o);
360 static void parse_VkPipelineCacheCreateFlags(const char *s, Json::Value &obj, VkPipelineCacheCreateFlags &o);
361 static void parse_VkPipelineDepthStencilStateCreateFlags(const char *s, Json::Value &obj,
362                                                          VkPipelineDepthStencilStateCreateFlags &o);
363 static void parse_VkPipelineDynamicStateCreateFlags(const char *s, Json::Value &obj,
364                                                     VkPipelineDynamicStateCreateFlags &o);
365 static void parse_VkPipelineColorBlendStateCreateFlags(const char *s, Json::Value &obj,
366                                                        VkPipelineColorBlendStateCreateFlags &o);
367 static void parse_VkPipelineMultisampleStateCreateFlags(const char *s, Json::Value &obj,
368                                                         VkPipelineMultisampleStateCreateFlags &o);
369 static void parse_VkPipelineRasterizationStateCreateFlags(const char *s, Json::Value &obj,
370                                                           VkPipelineRasterizationStateCreateFlags &o);
371 static void parse_VkPipelineViewportStateCreateFlags(const char *s, Json::Value &obj,
372                                                      VkPipelineViewportStateCreateFlags &o);
373 static void parse_VkPipelineTessellationStateCreateFlags(const char *s, Json::Value &obj,
374                                                          VkPipelineTessellationStateCreateFlags &o);
375 static void parse_VkPipelineInputAssemblyStateCreateFlags(const char *s, Json::Value &obj,
376                                                           VkPipelineInputAssemblyStateCreateFlags &o);
377 static void parse_VkPipelineVertexInputStateCreateFlags(const char *s, Json::Value &obj,
378                                                         VkPipelineVertexInputStateCreateFlags &o);
379 static void parse_VkPipelineShaderStageCreateFlags(const char *s, Json::Value &obj,
380                                                    VkPipelineShaderStageCreateFlags &o);
381 static void parse_VkDescriptorSetLayoutCreateFlags(const char *s, Json::Value &obj,
382                                                    VkDescriptorSetLayoutCreateFlags &o);
383 static void parse_VkBufferViewCreateFlags(const char *s, Json::Value &obj, VkBufferViewCreateFlags &o);
384 static void parse_VkInstanceCreateFlags(const char *s, Json::Value &obj, VkInstanceCreateFlags &o);
385 static void parse_VkDeviceCreateFlags(const char *s, Json::Value &obj, VkDeviceCreateFlags &o);
386 static void parse_VkDeviceQueueCreateFlags(const char *s, Json::Value &obj, VkDeviceQueueCreateFlags &o);
387 static void parse_VkQueueFlags(const char *s, Json::Value &obj, VkQueueFlags &o);
388 static void parse_VkMemoryPropertyFlags(const char *s, Json::Value &obj, VkMemoryPropertyFlags &o);
389 static void parse_VkMemoryHeapFlags(const char *s, Json::Value &obj, VkMemoryHeapFlags &o);
390 static void parse_VkAccessFlags(const char *s, Json::Value &obj, VkAccessFlags &o);
391 static void parse_VkBufferUsageFlags(const char *s, Json::Value &obj, VkBufferUsageFlags &o);
392 static void parse_VkBufferCreateFlags(const char *s, Json::Value &obj, VkBufferCreateFlags &o);
393 static void parse_VkShaderStageFlags(const char *s, Json::Value &obj, VkShaderStageFlags &o);
394 static void parse_VkImageUsageFlags(const char *s, Json::Value &obj, VkImageUsageFlags &o);
395 static void parse_VkImageCreateFlags(const char *s, Json::Value &obj, VkImageCreateFlags &o);
396 static void parse_VkImageViewCreateFlags(const char *s, Json::Value &obj, VkImageViewCreateFlags &o);
397 static void parse_VkPipelineCreateFlags(const char *s, Json::Value &obj, VkPipelineCreateFlags &o);
398 static void parse_VkColorComponentFlags(const char *s, Json::Value &obj, VkColorComponentFlags &o);
399 static void parse_VkFenceCreateFlags(const char *s, Json::Value &obj, VkFenceCreateFlags &o);
400 static void parse_VkSemaphoreCreateFlags(const char *s, Json::Value &obj, VkSemaphoreCreateFlags &o);
401 static void parse_VkFormatFeatureFlags(const char *s, Json::Value &obj, VkFormatFeatureFlags &o);
402 static void parse_VkQueryControlFlags(const char *s, Json::Value &obj, VkQueryControlFlags &o);
403 static void parse_VkQueryResultFlags(const char *s, Json::Value &obj, VkQueryResultFlags &o);
404 static void parse_VkEventCreateFlags(const char *s, Json::Value &obj, VkEventCreateFlags &o);
405 static void parse_VkCommandPoolCreateFlags(const char *s, Json::Value &obj, VkCommandPoolCreateFlags &o);
406 static void parse_VkCommandPoolResetFlags(const char *s, Json::Value &obj, VkCommandPoolResetFlags &o);
407 static void parse_VkCommandBufferResetFlags(const char *s, Json::Value &obj, VkCommandBufferResetFlags &o);
408 static void parse_VkCommandBufferUsageFlags(const char *s, Json::Value &obj, VkCommandBufferUsageFlags &o);
409 static void parse_VkQueryPipelineStatisticFlags(const char *s, Json::Value &obj, VkQueryPipelineStatisticFlags &o);
410 static void parse_VkMemoryMapFlags(const char *s, Json::Value &obj, VkMemoryMapFlags &o);
411 static void parse_VkImageAspectFlags(const char *s, Json::Value &obj, VkImageAspectFlags &o);
412 static void parse_VkSubpassDescriptionFlags(const char *s, Json::Value &obj, VkSubpassDescriptionFlags &o);
413 static void parse_VkPipelineStageFlags(const char *s, Json::Value &obj, VkPipelineStageFlags &o);
414 static void parse_VkSampleCountFlags(const char *s, Json::Value &obj, VkSampleCountFlags &o);
415 static void parse_VkAttachmentDescriptionFlags(const char *s, Json::Value &obj, VkAttachmentDescriptionFlags &o);
416 static void parse_VkStencilFaceFlags(const char *s, Json::Value &obj, VkStencilFaceFlags &o);
417 static void parse_VkCullModeFlags(const char *s, Json::Value &obj, VkCullModeFlags &o);
418 static void parse_VkDescriptorPoolCreateFlags(const char *s, Json::Value &obj, VkDescriptorPoolCreateFlags &o);
419 static void parse_VkDescriptorPoolResetFlags(const char *s, Json::Value &obj, VkDescriptorPoolResetFlags &o);
420 static void parse_VkDependencyFlags(const char *s, Json::Value &obj, VkDependencyFlags &o);
421 static void parse_VkSubgroupFeatureFlags(const char *s, Json::Value &obj, VkSubgroupFeatureFlags &o);
422 static void parse_VkPerformanceCounterDescriptionFlagsKHR(const char *s, Json::Value &obj,
423                                                           VkPerformanceCounterDescriptionFlagsKHR &o);
424 static void parse_VkAcquireProfilingLockFlagsKHR(const char *s, Json::Value &obj, VkAcquireProfilingLockFlagsKHR &o);
425 static void parse_VkSemaphoreWaitFlags(const char *s, Json::Value &obj, VkSemaphoreWaitFlags &o);
426 static void parse_VkRefreshObjectFlagsKHR(const char *s, Json::Value &obj, VkRefreshObjectFlagsKHR &o);
427 static void parse_VkAccessFlags2KHR(const char *s, Json::Value &obj, VkAccessFlags2KHR &o);
428 static void parse_VkPipelineStageFlags2KHR(const char *s, Json::Value &obj, VkPipelineStageFlags2KHR &o);
429 static void parse_VkCompositeAlphaFlagsKHR(const char *s, Json::Value &obj, VkCompositeAlphaFlagsKHR &o);
430 static void parse_VkDisplayPlaneAlphaFlagsKHR(const char *s, Json::Value &obj, VkDisplayPlaneAlphaFlagsKHR &o);
431 static void parse_VkSurfaceTransformFlagsKHR(const char *s, Json::Value &obj, VkSurfaceTransformFlagsKHR &o);
432 static void parse_VkSwapchainCreateFlagsKHR(const char *s, Json::Value &obj, VkSwapchainCreateFlagsKHR &o);
433 static void parse_VkDisplayModeCreateFlagsKHR(const char *s, Json::Value &obj, VkDisplayModeCreateFlagsKHR &o);
434 static void parse_VkDisplaySurfaceCreateFlagsKHR(const char *s, Json::Value &obj, VkDisplaySurfaceCreateFlagsKHR &o);
435 static void parse_VkHeadlessSurfaceCreateFlagsEXT(const char *s, Json::Value &obj, VkHeadlessSurfaceCreateFlagsEXT &o);
436 static void parse_VkPeerMemoryFeatureFlags(const char *s, Json::Value &obj, VkPeerMemoryFeatureFlags &o);
437 static void parse_VkMemoryAllocateFlags(const char *s, Json::Value &obj, VkMemoryAllocateFlags &o);
438 static void parse_VkDeviceGroupPresentModeFlagsKHR(const char *s, Json::Value &obj,
439                                                    VkDeviceGroupPresentModeFlagsKHR &o);
440 static void parse_VkExternalMemoryHandleTypeFlags(const char *s, Json::Value &obj, VkExternalMemoryHandleTypeFlags &o);
441 static void parse_VkExternalMemoryFeatureFlags(const char *s, Json::Value &obj, VkExternalMemoryFeatureFlags &o);
442 static void parse_VkExternalSemaphoreHandleTypeFlags(const char *s, Json::Value &obj,
443                                                      VkExternalSemaphoreHandleTypeFlags &o);
444 static void parse_VkExternalSemaphoreFeatureFlags(const char *s, Json::Value &obj, VkExternalSemaphoreFeatureFlags &o);
445 static void parse_VkSemaphoreImportFlags(const char *s, Json::Value &obj, VkSemaphoreImportFlags &o);
446 static void parse_VkExternalFenceHandleTypeFlags(const char *s, Json::Value &obj, VkExternalFenceHandleTypeFlags &o);
447 static void parse_VkExternalFenceFeatureFlags(const char *s, Json::Value &obj, VkExternalFenceFeatureFlags &o);
448 static void parse_VkFenceImportFlags(const char *s, Json::Value &obj, VkFenceImportFlags &o);
449 static void parse_VkSurfaceCounterFlagsEXT(const char *s, Json::Value &obj, VkSurfaceCounterFlagsEXT &o);
450 static void parse_VkPipelineDiscardRectangleStateCreateFlagsEXT(const char *s, Json::Value &obj,
451                                                                 VkPipelineDiscardRectangleStateCreateFlagsEXT &o);
452 static void parse_VkDebugUtilsMessageSeverityFlagsEXT(const char *s, Json::Value &obj,
453                                                       VkDebugUtilsMessageSeverityFlagsEXT &o);
454 static void parse_VkDebugUtilsMessageTypeFlagsEXT(const char *s, Json::Value &obj, VkDebugUtilsMessageTypeFlagsEXT &o);
455 static void parse_VkDebugUtilsMessengerCreateFlagsEXT(const char *s, Json::Value &obj,
456                                                       VkDebugUtilsMessengerCreateFlagsEXT &o);
457 static void parse_VkDebugUtilsMessengerCallbackDataFlagsEXT(const char *s, Json::Value &obj,
458                                                             VkDebugUtilsMessengerCallbackDataFlagsEXT &o);
459 static void parse_VkPipelineRasterizationConservativeStateCreateFlagsEXT(
460     const char *s, Json::Value &obj, VkPipelineRasterizationConservativeStateCreateFlagsEXT &o);
461 static void parse_VkDescriptorBindingFlags(const char *s, Json::Value &obj, VkDescriptorBindingFlags &o);
462 static void parse_VkResolveModeFlags(const char *s, Json::Value &obj, VkResolveModeFlags &o);
463 static void parse_VkPipelineRasterizationDepthClipStateCreateFlagsEXT(
464     const char *s, Json::Value &obj, VkPipelineRasterizationDepthClipStateCreateFlagsEXT &o);
465 static void parse_VkSubmitFlagsKHR(const char *s, Json::Value &obj, VkSubmitFlagsKHR &o);
466 static void parse_VkInstance(const char *s, Json::Value &obj, VkInstance &o);
467 static void parse_VkPhysicalDevice(const char *s, Json::Value &obj, VkPhysicalDevice &o);
468 static void parse_VkDevice(const char *s, Json::Value &obj, VkDevice &o);
469 static void parse_VkQueue(const char *s, Json::Value &obj, VkQueue &o);
470 static void parse_VkCommandBuffer(const char *s, Json::Value &obj, VkCommandBuffer &o);
471 static void parse_VkDeviceMemory(const char *s, Json::Value &obj, VkDeviceMemory &o);
472 static void parse_VkCommandPool(const char *s, Json::Value &obj, VkCommandPool &o);
473 static void parse_VkBuffer(const char *s, Json::Value &obj, VkBuffer &o);
474 static void parse_VkBufferView(const char *s, Json::Value &obj, VkBufferView &o);
475 static void parse_VkImage(const char *s, Json::Value &obj, VkImage &o);
476 static void parse_VkImageView(const char *s, Json::Value &obj, VkImageView &o);
477 static void parse_VkShaderModule(const char *s, Json::Value &obj, VkShaderModule &o);
478 static void parse_VkPipeline(const char *s, Json::Value &obj, VkPipeline &o);
479 static void parse_VkPipelineLayout(const char *s, Json::Value &obj, VkPipelineLayout &o);
480 static void parse_VkSampler(const char *s, Json::Value &obj, VkSampler &o);
481 static void parse_VkDescriptorSet(const char *s, Json::Value &obj, VkDescriptorSet &o);
482 static void parse_VkDescriptorSetLayout(const char *s, Json::Value &obj, VkDescriptorSetLayout &o);
483 static void parse_VkDescriptorPool(const char *s, Json::Value &obj, VkDescriptorPool &o);
484 static void parse_VkFence(const char *s, Json::Value &obj, VkFence &o);
485 static void parse_VkSemaphore(const char *s, Json::Value &obj, VkSemaphore &o);
486 static void parse_VkEvent(const char *s, Json::Value &obj, VkEvent &o);
487 static void parse_VkQueryPool(const char *s, Json::Value &obj, VkQueryPool &o);
488 static void parse_VkFramebuffer(const char *s, Json::Value &obj, VkFramebuffer &o);
489 static void parse_VkRenderPass(const char *s, Json::Value &obj, VkRenderPass &o);
490 static void parse_VkPipelineCache(const char *s, Json::Value &obj, VkPipelineCache &o);
491 static void parse_VkSamplerYcbcrConversion(const char *s, Json::Value &obj, VkSamplerYcbcrConversion &o);
492 static void parse_VkDisplayKHR(const char *s, Json::Value &obj, VkDisplayKHR &o);
493 static void parse_VkDisplayModeKHR(const char *s, Json::Value &obj, VkDisplayModeKHR &o);
494 static void parse_VkSurfaceKHR(const char *s, Json::Value &obj, VkSurfaceKHR &o);
495 static void parse_VkSwapchainKHR(const char *s, Json::Value &obj, VkSwapchainKHR &o);
496 static void parse_VkDebugUtilsMessengerEXT(const char *s, Json::Value &obj, VkDebugUtilsMessengerEXT &o);
497 static void parse_VkSemaphoreSciSyncPoolNV(const char *s, Json::Value &obj, VkSemaphoreSciSyncPoolNV &o);
498 static void parse_VkAttachmentLoadOp(const char *s, Json::Value &obj, VkAttachmentLoadOp &o);
499 static void parse_VkAttachmentStoreOp(const char *s, Json::Value &obj, VkAttachmentStoreOp &o);
500 static void parse_VkBlendFactor(const char *s, Json::Value &obj, VkBlendFactor &o);
501 static void parse_VkBlendOp(const char *s, Json::Value &obj, VkBlendOp &o);
502 static void parse_VkBorderColor(const char *s, Json::Value &obj, VkBorderColor &o);
503 static void parse_VkFramebufferCreateFlagBits(const char *s, Json::Value &obj, VkFramebufferCreateFlagBits &o);
504 static void parse_VkRenderPassCreateFlagBits(const char *s, Json::Value &obj, VkRenderPassCreateFlagBits &o);
505 static void parse_VkSamplerCreateFlagBits(const char *s, Json::Value &obj, VkSamplerCreateFlagBits &o);
506 static void parse_VkPipelineCacheHeaderVersion(const char *s, Json::Value &obj, VkPipelineCacheHeaderVersion &o);
507 static void parse_VkPipelineCacheCreateFlagBits(const char *s, Json::Value &obj, VkPipelineCacheCreateFlagBits &o);
508 static void parse_VkPipelineShaderStageCreateFlagBits(const char *s, Json::Value &obj,
509                                                       VkPipelineShaderStageCreateFlagBits &o);
510 static void parse_VkDescriptorSetLayoutCreateFlagBits(const char *s, Json::Value &obj,
511                                                       VkDescriptorSetLayoutCreateFlagBits &o);
512 static void parse_VkDeviceQueueCreateFlagBits(const char *s, Json::Value &obj, VkDeviceQueueCreateFlagBits &o);
513 static void parse_VkBufferCreateFlagBits(const char *s, Json::Value &obj, VkBufferCreateFlagBits &o);
514 static void parse_VkBufferUsageFlagBits(const char *s, Json::Value &obj, VkBufferUsageFlagBits &o);
515 static void parse_VkColorComponentFlagBits(const char *s, Json::Value &obj, VkColorComponentFlagBits &o);
516 static void parse_VkComponentSwizzle(const char *s, Json::Value &obj, VkComponentSwizzle &o);
517 static void parse_VkCommandPoolCreateFlagBits(const char *s, Json::Value &obj, VkCommandPoolCreateFlagBits &o);
518 static void parse_VkCommandPoolResetFlagBits(const char *s, Json::Value &obj, VkCommandPoolResetFlagBits &o);
519 static void parse_VkCommandBufferResetFlagBits(const char *s, Json::Value &obj, VkCommandBufferResetFlagBits &o);
520 static void parse_VkCommandBufferLevel(const char *s, Json::Value &obj, VkCommandBufferLevel &o);
521 static void parse_VkCommandBufferUsageFlagBits(const char *s, Json::Value &obj, VkCommandBufferUsageFlagBits &o);
522 static void parse_VkCompareOp(const char *s, Json::Value &obj, VkCompareOp &o);
523 static void parse_VkCullModeFlagBits(const char *s, Json::Value &obj, VkCullModeFlagBits &o);
524 static void parse_VkDescriptorType(const char *s, Json::Value &obj, VkDescriptorType &o);
525 static void parse_VkDynamicState(const char *s, Json::Value &obj, VkDynamicState &o);
526 static void parse_VkFenceCreateFlagBits(const char *s, Json::Value &obj, VkFenceCreateFlagBits &o);
527 static void parse_VkPolygonMode(const char *s, Json::Value &obj, VkPolygonMode &o);
528 static void parse_VkFormat(const char *s, Json::Value &obj, VkFormat &o);
529 static void parse_VkFormatFeatureFlagBits(const char *s, Json::Value &obj, VkFormatFeatureFlagBits &o);
530 static void parse_VkFrontFace(const char *s, Json::Value &obj, VkFrontFace &o);
531 static void parse_VkImageAspectFlagBits(const char *s, Json::Value &obj, VkImageAspectFlagBits &o);
532 static void parse_VkImageCreateFlagBits(const char *s, Json::Value &obj, VkImageCreateFlagBits &o);
533 static void parse_VkImageLayout(const char *s, Json::Value &obj, VkImageLayout &o);
534 static void parse_VkImageTiling(const char *s, Json::Value &obj, VkImageTiling &o);
535 static void parse_VkImageType(const char *s, Json::Value &obj, VkImageType &o);
536 static void parse_VkImageUsageFlagBits(const char *s, Json::Value &obj, VkImageUsageFlagBits &o);
537 static void parse_VkImageViewCreateFlagBits(const char *s, Json::Value &obj, VkImageViewCreateFlagBits &o);
538 static void parse_VkImageViewType(const char *s, Json::Value &obj, VkImageViewType &o);
539 static void parse_VkSharingMode(const char *s, Json::Value &obj, VkSharingMode &o);
540 static void parse_VkIndexType(const char *s, Json::Value &obj, VkIndexType &o);
541 static void parse_VkLogicOp(const char *s, Json::Value &obj, VkLogicOp &o);
542 static void parse_VkMemoryHeapFlagBits(const char *s, Json::Value &obj, VkMemoryHeapFlagBits &o);
543 static void parse_VkAccessFlagBits(const char *s, Json::Value &obj, VkAccessFlagBits &o);
544 static void parse_VkMemoryPropertyFlagBits(const char *s, Json::Value &obj, VkMemoryPropertyFlagBits &o);
545 static void parse_VkPhysicalDeviceType(const char *s, Json::Value &obj, VkPhysicalDeviceType &o);
546 static void parse_VkPipelineBindPoint(const char *s, Json::Value &obj, VkPipelineBindPoint &o);
547 static void parse_VkPipelineCreateFlagBits(const char *s, Json::Value &obj, VkPipelineCreateFlagBits &o);
548 static void parse_VkPrimitiveTopology(const char *s, Json::Value &obj, VkPrimitiveTopology &o);
549 static void parse_VkQueryControlFlagBits(const char *s, Json::Value &obj, VkQueryControlFlagBits &o);
550 static void parse_VkQueryPipelineStatisticFlagBits(const char *s, Json::Value &obj,
551                                                    VkQueryPipelineStatisticFlagBits &o);
552 static void parse_VkQueryResultFlagBits(const char *s, Json::Value &obj, VkQueryResultFlagBits &o);
553 static void parse_VkQueryType(const char *s, Json::Value &obj, VkQueryType &o);
554 static void parse_VkQueueFlagBits(const char *s, Json::Value &obj, VkQueueFlagBits &o);
555 static void parse_VkSubpassContents(const char *s, Json::Value &obj, VkSubpassContents &o);
556 static void parse_VkResult(const char *s, Json::Value &obj, VkResult &o);
557 static void parse_VkShaderStageFlagBits(const char *s, Json::Value &obj, VkShaderStageFlagBits &o);
558 static void parse_VkStencilFaceFlagBits(const char *s, Json::Value &obj, VkStencilFaceFlagBits &o);
559 static void parse_VkStencilOp(const char *s, Json::Value &obj, VkStencilOp &o);
560 static void parse_VkStructureType(const char *s, Json::Value &obj, VkStructureType &o);
561 static void parse_VkSystemAllocationScope(const char *s, Json::Value &obj, VkSystemAllocationScope &o);
562 static void parse_VkInternalAllocationType(const char *s, Json::Value &obj, VkInternalAllocationType &o);
563 static void parse_VkSamplerAddressMode(const char *s, Json::Value &obj, VkSamplerAddressMode &o);
564 static void parse_VkFilter(const char *s, Json::Value &obj, VkFilter &o);
565 static void parse_VkSamplerMipmapMode(const char *s, Json::Value &obj, VkSamplerMipmapMode &o);
566 static void parse_VkVertexInputRate(const char *s, Json::Value &obj, VkVertexInputRate &o);
567 static void parse_VkPipelineStageFlagBits(const char *s, Json::Value &obj, VkPipelineStageFlagBits &o);
568 static void parse_VkSampleCountFlagBits(const char *s, Json::Value &obj, VkSampleCountFlagBits &o);
569 static void parse_VkAttachmentDescriptionFlagBits(const char *s, Json::Value &obj, VkAttachmentDescriptionFlagBits &o);
570 static void parse_VkDescriptorPoolCreateFlagBits(const char *s, Json::Value &obj, VkDescriptorPoolCreateFlagBits &o);
571 static void parse_VkDependencyFlagBits(const char *s, Json::Value &obj, VkDependencyFlagBits &o);
572 static void parse_VkObjectType(const char *s, Json::Value &obj, VkObjectType &o);
573 static void parse_VkEventCreateFlagBits(const char *s, Json::Value &obj, VkEventCreateFlagBits &o);
574 static void parse_VkDiscardRectangleModeEXT(const char *s, Json::Value &obj, VkDiscardRectangleModeEXT &o);
575 static void parse_VkSubpassDescriptionFlagBits(const char *s, Json::Value &obj, VkSubpassDescriptionFlagBits &o);
576 static void parse_VkPointClippingBehavior(const char *s, Json::Value &obj, VkPointClippingBehavior &o);
577 static void parse_VkQueueGlobalPriorityEXT(const char *s, Json::Value &obj, VkQueueGlobalPriorityEXT &o);
578 static void parse_VkTimeDomainEXT(const char *s, Json::Value &obj, VkTimeDomainEXT &o);
579 static void parse_VkConservativeRasterizationModeEXT(const char *s, Json::Value &obj,
580                                                      VkConservativeRasterizationModeEXT &o);
581 static void parse_VkResolveModeFlagBits(const char *s, Json::Value &obj, VkResolveModeFlagBits &o);
582 static void parse_VkDescriptorBindingFlagBits(const char *s, Json::Value &obj, VkDescriptorBindingFlagBits &o);
583 static void parse_VkSemaphoreType(const char *s, Json::Value &obj, VkSemaphoreType &o);
584 static void parse_VkPerformanceCounterScopeKHR(const char *s, Json::Value &obj, VkPerformanceCounterScopeKHR &o);
585 static void parse_VkPerformanceCounterUnitKHR(const char *s, Json::Value &obj, VkPerformanceCounterUnitKHR &o);
586 static void parse_VkPerformanceCounterStorageKHR(const char *s, Json::Value &obj, VkPerformanceCounterStorageKHR &o);
587 static void parse_VkPerformanceCounterDescriptionFlagBitsKHR(const char *s, Json::Value &obj,
588                                                              VkPerformanceCounterDescriptionFlagBitsKHR &o);
589 static void parse_VkAcquireProfilingLockFlagBitsKHR(const char *s, Json::Value &obj,
590                                                     VkAcquireProfilingLockFlagBitsKHR &o);
591 static void parse_VkSemaphoreWaitFlagBits(const char *s, Json::Value &obj, VkSemaphoreWaitFlagBits &o);
592 static void parse_VkLineRasterizationModeEXT(const char *s, Json::Value &obj, VkLineRasterizationModeEXT &o);
593 static void parse_VkRefreshObjectFlagBitsKHR(const char *s, Json::Value &obj, VkRefreshObjectFlagBitsKHR &o);
594 static void parse_VkFaultLevel(const char *s, Json::Value &obj, VkFaultLevel &o);
595 static void parse_VkFaultType(const char *s, Json::Value &obj, VkFaultType &o);
596 static void parse_VkFaultQueryBehavior(const char *s, Json::Value &obj, VkFaultQueryBehavior &o);
597 static void parse_VkPipelineMatchControl(const char *s, Json::Value &obj, VkPipelineMatchControl &o);
598 static void parse_VkAccessFlagBits2KHR(const char *s, Json::Value &obj, VkAccessFlagBits2KHR &o);
599 static void parse_VkPipelineStageFlagBits2KHR(const char *s, Json::Value &obj, VkPipelineStageFlagBits2KHR &o);
600 static void parse_VkSciSyncClientTypeNV(const char *s, Json::Value &obj, VkSciSyncClientTypeNV &o);
601 static void parse_VkSciSyncPrimitiveTypeNV(const char *s, Json::Value &obj, VkSciSyncPrimitiveTypeNV &o);
602 static void parse_VkPipelineCacheValidationVersion(const char *s, Json::Value &obj,
603                                                    VkPipelineCacheValidationVersion &o);
604 static void parse_VkColorSpaceKHR(const char *s, Json::Value &obj, VkColorSpaceKHR &o);
605 static void parse_VkCompositeAlphaFlagBitsKHR(const char *s, Json::Value &obj, VkCompositeAlphaFlagBitsKHR &o);
606 static void parse_VkDisplayPlaneAlphaFlagBitsKHR(const char *s, Json::Value &obj, VkDisplayPlaneAlphaFlagBitsKHR &o);
607 static void parse_VkPresentModeKHR(const char *s, Json::Value &obj, VkPresentModeKHR &o);
608 static void parse_VkSurfaceTransformFlagBitsKHR(const char *s, Json::Value &obj, VkSurfaceTransformFlagBitsKHR &o);
609 static void parse_VkValidationFeatureEnableEXT(const char *s, Json::Value &obj, VkValidationFeatureEnableEXT &o);
610 static void parse_VkValidationFeatureDisableEXT(const char *s, Json::Value &obj, VkValidationFeatureDisableEXT &o);
611 static void parse_VkExternalMemoryHandleTypeFlagBits(const char *s, Json::Value &obj,
612                                                      VkExternalMemoryHandleTypeFlagBits &o);
613 static void parse_VkExternalMemoryFeatureFlagBits(const char *s, Json::Value &obj, VkExternalMemoryFeatureFlagBits &o);
614 static void parse_VkExternalSemaphoreHandleTypeFlagBits(const char *s, Json::Value &obj,
615                                                         VkExternalSemaphoreHandleTypeFlagBits &o);
616 static void parse_VkExternalSemaphoreFeatureFlagBits(const char *s, Json::Value &obj,
617                                                      VkExternalSemaphoreFeatureFlagBits &o);
618 static void parse_VkSemaphoreImportFlagBits(const char *s, Json::Value &obj, VkSemaphoreImportFlagBits &o);
619 static void parse_VkExternalFenceHandleTypeFlagBits(const char *s, Json::Value &obj,
620                                                     VkExternalFenceHandleTypeFlagBits &o);
621 static void parse_VkExternalFenceFeatureFlagBits(const char *s, Json::Value &obj, VkExternalFenceFeatureFlagBits &o);
622 static void parse_VkFenceImportFlagBits(const char *s, Json::Value &obj, VkFenceImportFlagBits &o);
623 static void parse_VkSurfaceCounterFlagBitsEXT(const char *s, Json::Value &obj, VkSurfaceCounterFlagBitsEXT &o);
624 static void parse_VkDisplayPowerStateEXT(const char *s, Json::Value &obj, VkDisplayPowerStateEXT &o);
625 static void parse_VkDeviceEventTypeEXT(const char *s, Json::Value &obj, VkDeviceEventTypeEXT &o);
626 static void parse_VkDisplayEventTypeEXT(const char *s, Json::Value &obj, VkDisplayEventTypeEXT &o);
627 static void parse_VkPeerMemoryFeatureFlagBits(const char *s, Json::Value &obj, VkPeerMemoryFeatureFlagBits &o);
628 static void parse_VkMemoryAllocateFlagBits(const char *s, Json::Value &obj, VkMemoryAllocateFlagBits &o);
629 static void parse_VkDeviceGroupPresentModeFlagBitsKHR(const char *s, Json::Value &obj,
630                                                       VkDeviceGroupPresentModeFlagBitsKHR &o);
631 static void parse_VkSwapchainCreateFlagBitsKHR(const char *s, Json::Value &obj, VkSwapchainCreateFlagBitsKHR &o);
632 static void parse_VkSubgroupFeatureFlagBits(const char *s, Json::Value &obj, VkSubgroupFeatureFlagBits &o);
633 static void parse_VkTessellationDomainOrigin(const char *s, Json::Value &obj, VkTessellationDomainOrigin &o);
634 static void parse_VkSamplerYcbcrModelConversion(const char *s, Json::Value &obj, VkSamplerYcbcrModelConversion &o);
635 static void parse_VkSamplerYcbcrRange(const char *s, Json::Value &obj, VkSamplerYcbcrRange &o);
636 static void parse_VkChromaLocation(const char *s, Json::Value &obj, VkChromaLocation &o);
637 static void parse_VkSamplerReductionMode(const char *s, Json::Value &obj, VkSamplerReductionMode &o);
638 static void parse_VkBlendOverlapEXT(const char *s, Json::Value &obj, VkBlendOverlapEXT &o);
639 static void parse_VkDebugUtilsMessageSeverityFlagBitsEXT(const char *s, Json::Value &obj,
640                                                          VkDebugUtilsMessageSeverityFlagBitsEXT &o);
641 static void parse_VkDebugUtilsMessageTypeFlagBitsEXT(const char *s, Json::Value &obj,
642                                                      VkDebugUtilsMessageTypeFlagBitsEXT &o);
643 static void parse_VkShaderFloatControlsIndependence(const char *s, Json::Value &obj,
644                                                     VkShaderFloatControlsIndependence &o);
645 static void parse_VkFragmentShadingRateCombinerOpKHR(const char *s, Json::Value &obj,
646                                                      VkFragmentShadingRateCombinerOpKHR &o);
647 static void parse_VkSubmitFlagBitsKHR(const char *s, Json::Value &obj, VkSubmitFlagBitsKHR &o);
648 static void parse_VkVendorId(const char *s, Json::Value &obj, VkVendorId &o);
649 static void parse_VkDriverId(const char *s, Json::Value &obj, VkDriverId &o);
650 static void parse_VkBaseOutStructure(const char *s, Json::Value &obj, VkBaseOutStructure &o);
651 static void parse_VkBaseInStructure(const char *s, Json::Value &obj, VkBaseInStructure &o);
652 static void parse_VkOffset2D(const char *s, Json::Value &obj, VkOffset2D &o);
653 static void parse_VkOffset3D(const char *s, Json::Value &obj, VkOffset3D &o);
654 static void parse_VkExtent2D(const char *s, Json::Value &obj, VkExtent2D &o);
655 static void parse_VkExtent3D(const char *s, Json::Value &obj, VkExtent3D &o);
656 static void parse_VkViewport(const char *s, Json::Value &obj, VkViewport &o);
657 static void parse_VkRect2D(const char *s, Json::Value &obj, VkRect2D &o);
658 static void parse_VkClearRect(const char *s, Json::Value &obj, VkClearRect &o);
659 static void parse_VkComponentMapping(const char *s, Json::Value &obj, VkComponentMapping &o);
660 static void parse_VkPhysicalDeviceProperties(const char *s, Json::Value &obj, VkPhysicalDeviceProperties &o);
661 static void parse_VkExtensionProperties(const char *s, Json::Value &obj, VkExtensionProperties &o);
662 static void parse_VkLayerProperties(const char *s, Json::Value &obj, VkLayerProperties &o);
663 static void parse_VkApplicationInfo(const char *s, Json::Value &obj, VkApplicationInfo &o);
664 static void parse_VkAllocationCallbacks(const char *s, Json::Value &obj, VkAllocationCallbacks &o);
665 static void parse_VkDeviceQueueCreateInfo(const char *s, Json::Value &obj, VkDeviceQueueCreateInfo &o);
666 static void parse_VkDeviceCreateInfo(const char *s, Json::Value &obj, VkDeviceCreateInfo &o);
667 static void parse_VkInstanceCreateInfo(const char *s, Json::Value &obj, VkInstanceCreateInfo &o);
668 static void parse_VkQueueFamilyProperties(const char *s, Json::Value &obj, VkQueueFamilyProperties &o);
669 static void parse_VkPhysicalDeviceMemoryProperties(const char *s, Json::Value &obj,
670                                                    VkPhysicalDeviceMemoryProperties &o);
671 static void parse_VkMemoryAllocateInfo(const char *s, Json::Value &obj, VkMemoryAllocateInfo &o);
672 static void parse_VkMemoryRequirements(const char *s, Json::Value &obj, VkMemoryRequirements &o);
673 static void parse_VkMemoryType(const char *s, Json::Value &obj, VkMemoryType &o);
674 static void parse_VkMemoryHeap(const char *s, Json::Value &obj, VkMemoryHeap &o);
675 static void parse_VkMappedMemoryRange(const char *s, Json::Value &obj, VkMappedMemoryRange &o);
676 static void parse_VkFormatProperties(const char *s, Json::Value &obj, VkFormatProperties &o);
677 static void parse_VkImageFormatProperties(const char *s, Json::Value &obj, VkImageFormatProperties &o);
678 static void parse_VkDescriptorBufferInfo(const char *s, Json::Value &obj, VkDescriptorBufferInfo &o);
679 static void parse_VkDescriptorImageInfo(const char *s, Json::Value &obj, VkDescriptorImageInfo &o);
680 static void parse_VkWriteDescriptorSet(const char *s, Json::Value &obj, VkWriteDescriptorSet &o);
681 static void parse_VkCopyDescriptorSet(const char *s, Json::Value &obj, VkCopyDescriptorSet &o);
682 static void parse_VkBufferCreateInfo(const char *s, Json::Value &obj, VkBufferCreateInfo &o);
683 static void parse_VkBufferViewCreateInfo(const char *s, Json::Value &obj, VkBufferViewCreateInfo &o);
684 static void parse_VkImageSubresource(const char *s, Json::Value &obj, VkImageSubresource &o);
685 static void parse_VkImageSubresourceLayers(const char *s, Json::Value &obj, VkImageSubresourceLayers &o);
686 static void parse_VkImageSubresourceRange(const char *s, Json::Value &obj, VkImageSubresourceRange &o);
687 static void parse_VkMemoryBarrier(const char *s, Json::Value &obj, VkMemoryBarrier &o);
688 static void parse_VkBufferMemoryBarrier(const char *s, Json::Value &obj, VkBufferMemoryBarrier &o);
689 static void parse_VkImageMemoryBarrier(const char *s, Json::Value &obj, VkImageMemoryBarrier &o);
690 static void parse_VkImageCreateInfo(const char *s, Json::Value &obj, VkImageCreateInfo &o);
691 static void parse_VkSubresourceLayout(const char *s, Json::Value &obj, VkSubresourceLayout &o);
692 static void parse_VkImageViewCreateInfo(const char *s, Json::Value &obj, VkImageViewCreateInfo &o);
693 static void parse_VkBufferCopy(const char *s, Json::Value &obj, VkBufferCopy &o);
694 static void parse_VkImageCopy(const char *s, Json::Value &obj, VkImageCopy &o);
695 static void parse_VkImageBlit(const char *s, Json::Value &obj, VkImageBlit &o);
696 static void parse_VkBufferImageCopy(const char *s, Json::Value &obj, VkBufferImageCopy &o);
697 static void parse_VkImageResolve(const char *s, Json::Value &obj, VkImageResolve &o);
698 static void parse_VkDescriptorSetLayoutBinding(const char *s, Json::Value &obj, VkDescriptorSetLayoutBinding &o);
699 static void parse_VkDescriptorSetLayoutCreateInfo(const char *s, Json::Value &obj, VkDescriptorSetLayoutCreateInfo &o);
700 static void parse_VkDescriptorPoolSize(const char *s, Json::Value &obj, VkDescriptorPoolSize &o);
701 static void parse_VkDescriptorPoolCreateInfo(const char *s, Json::Value &obj, VkDescriptorPoolCreateInfo &o);
702 static void parse_VkDescriptorSetAllocateInfo(const char *s, Json::Value &obj, VkDescriptorSetAllocateInfo &o);
703 static void parse_VkSpecializationMapEntry(const char *s, Json::Value &obj, VkSpecializationMapEntry &o);
704 static void parse_VkSpecializationInfo(const char *s, Json::Value &obj, VkSpecializationInfo &o);
705 static void parse_VkPipelineShaderStageCreateInfo(const char *s, Json::Value &obj, VkPipelineShaderStageCreateInfo &o);
706 static void parse_VkComputePipelineCreateInfo(const char *s, Json::Value &obj, VkComputePipelineCreateInfo &o);
707 static void parse_VkVertexInputBindingDescription(const char *s, Json::Value &obj, VkVertexInputBindingDescription &o);
708 static void parse_VkVertexInputAttributeDescription(const char *s, Json::Value &obj,
709                                                     VkVertexInputAttributeDescription &o);
710 static void parse_VkPipelineVertexInputStateCreateInfo(const char *s, Json::Value &obj,
711                                                        VkPipelineVertexInputStateCreateInfo &o);
712 static void parse_VkPipelineInputAssemblyStateCreateInfo(const char *s, Json::Value &obj,
713                                                          VkPipelineInputAssemblyStateCreateInfo &o);
714 static void parse_VkPipelineTessellationStateCreateInfo(const char *s, Json::Value &obj,
715                                                         VkPipelineTessellationStateCreateInfo &o);
716 static void parse_VkPipelineViewportStateCreateInfo(const char *s, Json::Value &obj,
717                                                     VkPipelineViewportStateCreateInfo &o);
718 static void parse_VkPipelineRasterizationStateCreateInfo(const char *s, Json::Value &obj,
719                                                          VkPipelineRasterizationStateCreateInfo &o);
720 static void parse_VkPipelineMultisampleStateCreateInfo(const char *s, Json::Value &obj,
721                                                        VkPipelineMultisampleStateCreateInfo &o);
722 static void parse_VkPipelineColorBlendAttachmentState(const char *s, Json::Value &obj,
723                                                       VkPipelineColorBlendAttachmentState &o);
724 static void parse_VkPipelineColorBlendStateCreateInfo(const char *s, Json::Value &obj,
725                                                       VkPipelineColorBlendStateCreateInfo &o);
726 static void parse_VkPipelineDynamicStateCreateInfo(const char *s, Json::Value &obj,
727                                                    VkPipelineDynamicStateCreateInfo &o);
728 static void parse_VkStencilOpState(const char *s, Json::Value &obj, VkStencilOpState &o);
729 static void parse_VkPipelineDepthStencilStateCreateInfo(const char *s, Json::Value &obj,
730                                                         VkPipelineDepthStencilStateCreateInfo &o);
731 static void parse_VkGraphicsPipelineCreateInfo(const char *s, Json::Value &obj, VkGraphicsPipelineCreateInfo &o);
732 static void parse_VkPipelineCacheCreateInfo(const char *s, Json::Value &obj, VkPipelineCacheCreateInfo &o);
733 static void parse_VkPipelineCacheHeaderVersionOne(const char *s, Json::Value &obj, VkPipelineCacheHeaderVersionOne &o);
734 static void parse_VkPipelineCacheStageValidationIndexEntry(const char *s, Json::Value &obj,
735                                                            VkPipelineCacheStageValidationIndexEntry &o);
736 static void parse_VkPipelineCacheSafetyCriticalIndexEntry(const char *s, Json::Value &obj,
737                                                           VkPipelineCacheSafetyCriticalIndexEntry &o);
738 static void parse_VkPipelineCacheHeaderVersionSafetyCriticalOne(const char *s, Json::Value &obj,
739                                                                 VkPipelineCacheHeaderVersionSafetyCriticalOne &o);
740 static void parse_VkPushConstantRange(const char *s, Json::Value &obj, VkPushConstantRange &o);
741 static void parse_VkPipelineLayoutCreateInfo(const char *s, Json::Value &obj, VkPipelineLayoutCreateInfo &o);
742 static void parse_VkSamplerCreateInfo(const char *s, Json::Value &obj, VkSamplerCreateInfo &o);
743 static void parse_VkCommandPoolCreateInfo(const char *s, Json::Value &obj, VkCommandPoolCreateInfo &o);
744 static void parse_VkCommandBufferAllocateInfo(const char *s, Json::Value &obj, VkCommandBufferAllocateInfo &o);
745 static void parse_VkCommandBufferInheritanceInfo(const char *s, Json::Value &obj, VkCommandBufferInheritanceInfo &o);
746 static void parse_VkCommandBufferBeginInfo(const char *s, Json::Value &obj, VkCommandBufferBeginInfo &o);
747 static void parse_VkRenderPassBeginInfo(const char *s, Json::Value &obj, VkRenderPassBeginInfo &o);
748 static void parse_VkClearDepthStencilValue(const char *s, Json::Value &obj, VkClearDepthStencilValue &o);
749 static void parse_VkClearAttachment(const char *s, Json::Value &obj, VkClearAttachment &o);
750 static void parse_VkAttachmentDescription(const char *s, Json::Value &obj, VkAttachmentDescription &o);
751 static void parse_VkAttachmentReference(const char *s, Json::Value &obj, VkAttachmentReference &o);
752 static void parse_VkSubpassDescription(const char *s, Json::Value &obj, VkSubpassDescription &o);
753 static void parse_VkSubpassDependency(const char *s, Json::Value &obj, VkSubpassDependency &o);
754 static void parse_VkRenderPassCreateInfo(const char *s, Json::Value &obj, VkRenderPassCreateInfo &o);
755 static void parse_VkEventCreateInfo(const char *s, Json::Value &obj, VkEventCreateInfo &o);
756 static void parse_VkFenceCreateInfo(const char *s, Json::Value &obj, VkFenceCreateInfo &o);
757 static void parse_VkPhysicalDeviceFeatures(const char *s, Json::Value &obj, VkPhysicalDeviceFeatures &o);
758 static void parse_VkPhysicalDeviceSparseProperties(const char *s, Json::Value &obj,
759                                                    VkPhysicalDeviceSparseProperties &o);
760 static void parse_VkPhysicalDeviceLimits(const char *s, Json::Value &obj, VkPhysicalDeviceLimits &o);
761 static void parse_VkSemaphoreCreateInfo(const char *s, Json::Value &obj, VkSemaphoreCreateInfo &o);
762 static void parse_VkQueryPoolCreateInfo(const char *s, Json::Value &obj, VkQueryPoolCreateInfo &o);
763 static void parse_VkFramebufferCreateInfo(const char *s, Json::Value &obj, VkFramebufferCreateInfo &o);
764 static void parse_VkDrawIndirectCommand(const char *s, Json::Value &obj, VkDrawIndirectCommand &o);
765 static void parse_VkDrawIndexedIndirectCommand(const char *s, Json::Value &obj, VkDrawIndexedIndirectCommand &o);
766 static void parse_VkDispatchIndirectCommand(const char *s, Json::Value &obj, VkDispatchIndirectCommand &o);
767 static void parse_VkSubmitInfo(const char *s, Json::Value &obj, VkSubmitInfo &o);
768 static void parse_VkDisplayPropertiesKHR(const char *s, Json::Value &obj, VkDisplayPropertiesKHR &o);
769 static void parse_VkDisplayPlanePropertiesKHR(const char *s, Json::Value &obj, VkDisplayPlanePropertiesKHR &o);
770 static void parse_VkDisplayModeParametersKHR(const char *s, Json::Value &obj, VkDisplayModeParametersKHR &o);
771 static void parse_VkDisplayModePropertiesKHR(const char *s, Json::Value &obj, VkDisplayModePropertiesKHR &o);
772 static void parse_VkDisplayModeCreateInfoKHR(const char *s, Json::Value &obj, VkDisplayModeCreateInfoKHR &o);
773 static void parse_VkDisplayPlaneCapabilitiesKHR(const char *s, Json::Value &obj, VkDisplayPlaneCapabilitiesKHR &o);
774 static void parse_VkDisplaySurfaceCreateInfoKHR(const char *s, Json::Value &obj, VkDisplaySurfaceCreateInfoKHR &o);
775 static void parse_VkDisplayPresentInfoKHR(const char *s, Json::Value &obj, VkDisplayPresentInfoKHR &o);
776 static void parse_VkSurfaceCapabilitiesKHR(const char *s, Json::Value &obj, VkSurfaceCapabilitiesKHR &o);
777 static void parse_VkSurfaceFormatKHR(const char *s, Json::Value &obj, VkSurfaceFormatKHR &o);
778 static void parse_VkSwapchainCreateInfoKHR(const char *s, Json::Value &obj, VkSwapchainCreateInfoKHR &o);
779 static void parse_VkPresentInfoKHR(const char *s, Json::Value &obj, VkPresentInfoKHR &o);
780 static void parse_VkValidationFeaturesEXT(const char *s, Json::Value &obj, VkValidationFeaturesEXT &o);
781 static void parse_VkApplicationParametersEXT(const char *s, Json::Value &obj, VkApplicationParametersEXT &o);
782 static void parse_VkExportMemorySciBufInfoNV(const char *s, Json::Value &obj, VkExportMemorySciBufInfoNV &o);
783 static void parse_VkImportMemorySciBufInfoNV(const char *s, Json::Value &obj, VkImportMemorySciBufInfoNV &o);
784 static void parse_VkMemoryGetSciBufInfoNV(const char *s, Json::Value &obj, VkMemoryGetSciBufInfoNV &o);
785 static void parse_VkMemorySciBufPropertiesNV(const char *s, Json::Value &obj, VkMemorySciBufPropertiesNV &o);
786 static void parse_VkPhysicalDeviceExternalMemorySciBufFeaturesNV(const char *s, Json::Value &obj,
787                                                                  VkPhysicalDeviceExternalMemorySciBufFeaturesNV &o);
788 static void parse_VkPhysicalDeviceExternalSciBufFeaturesNV(const char *s, Json::Value &obj,
789                                                            VkPhysicalDeviceExternalSciBufFeaturesNV &o);
790 static void parse_VkPhysicalDeviceFeatures2(const char *s, Json::Value &obj, VkPhysicalDeviceFeatures2 &o);
791 static void parse_VkPhysicalDeviceProperties2(const char *s, Json::Value &obj, VkPhysicalDeviceProperties2 &o);
792 static void parse_VkFormatProperties2(const char *s, Json::Value &obj, VkFormatProperties2 &o);
793 static void parse_VkImageFormatProperties2(const char *s, Json::Value &obj, VkImageFormatProperties2 &o);
794 static void parse_VkPhysicalDeviceImageFormatInfo2(const char *s, Json::Value &obj,
795                                                    VkPhysicalDeviceImageFormatInfo2 &o);
796 static void parse_VkQueueFamilyProperties2(const char *s, Json::Value &obj, VkQueueFamilyProperties2 &o);
797 static void parse_VkPhysicalDeviceMemoryProperties2(const char *s, Json::Value &obj,
798                                                     VkPhysicalDeviceMemoryProperties2 &o);
799 static void parse_VkConformanceVersion(const char *s, Json::Value &obj, VkConformanceVersion &o);
800 static void parse_VkPhysicalDeviceDriverProperties(const char *s, Json::Value &obj,
801                                                    VkPhysicalDeviceDriverProperties &o);
802 static void parse_VkPresentRegionsKHR(const char *s, Json::Value &obj, VkPresentRegionsKHR &o);
803 static void parse_VkPresentRegionKHR(const char *s, Json::Value &obj, VkPresentRegionKHR &o);
804 static void parse_VkRectLayerKHR(const char *s, Json::Value &obj, VkRectLayerKHR &o);
805 static void parse_VkPhysicalDeviceVariablePointersFeatures(const char *s, Json::Value &obj,
806                                                            VkPhysicalDeviceVariablePointersFeatures &o);
807 static void parse_VkPhysicalDeviceVariablePointerFeatures(const char *s, Json::Value &obj,
808                                                           VkPhysicalDeviceVariablePointerFeatures &o);
809 static void parse_VkExternalMemoryProperties(const char *s, Json::Value &obj, VkExternalMemoryProperties &o);
810 static void parse_VkPhysicalDeviceExternalImageFormatInfo(const char *s, Json::Value &obj,
811                                                           VkPhysicalDeviceExternalImageFormatInfo &o);
812 static void parse_VkExternalImageFormatProperties(const char *s, Json::Value &obj, VkExternalImageFormatProperties &o);
813 static void parse_VkPhysicalDeviceExternalBufferInfo(const char *s, Json::Value &obj,
814                                                      VkPhysicalDeviceExternalBufferInfo &o);
815 static void parse_VkExternalBufferProperties(const char *s, Json::Value &obj, VkExternalBufferProperties &o);
816 static void parse_VkPhysicalDeviceIDProperties(const char *s, Json::Value &obj, VkPhysicalDeviceIDProperties &o);
817 static void parse_VkExternalMemoryImageCreateInfo(const char *s, Json::Value &obj, VkExternalMemoryImageCreateInfo &o);
818 static void parse_VkExternalMemoryBufferCreateInfo(const char *s, Json::Value &obj,
819                                                    VkExternalMemoryBufferCreateInfo &o);
820 static void parse_VkExportMemoryAllocateInfo(const char *s, Json::Value &obj, VkExportMemoryAllocateInfo &o);
821 static void parse_VkImportMemoryFdInfoKHR(const char *s, Json::Value &obj, VkImportMemoryFdInfoKHR &o);
822 static void parse_VkMemoryFdPropertiesKHR(const char *s, Json::Value &obj, VkMemoryFdPropertiesKHR &o);
823 static void parse_VkMemoryGetFdInfoKHR(const char *s, Json::Value &obj, VkMemoryGetFdInfoKHR &o);
824 static void parse_VkPhysicalDeviceExternalSemaphoreInfo(const char *s, Json::Value &obj,
825                                                         VkPhysicalDeviceExternalSemaphoreInfo &o);
826 static void parse_VkExternalSemaphoreProperties(const char *s, Json::Value &obj, VkExternalSemaphoreProperties &o);
827 static void parse_VkExportSemaphoreCreateInfo(const char *s, Json::Value &obj, VkExportSemaphoreCreateInfo &o);
828 static void parse_VkImportSemaphoreFdInfoKHR(const char *s, Json::Value &obj, VkImportSemaphoreFdInfoKHR &o);
829 static void parse_VkSemaphoreGetFdInfoKHR(const char *s, Json::Value &obj, VkSemaphoreGetFdInfoKHR &o);
830 static void parse_VkPhysicalDeviceExternalFenceInfo(const char *s, Json::Value &obj,
831                                                     VkPhysicalDeviceExternalFenceInfo &o);
832 static void parse_VkExternalFenceProperties(const char *s, Json::Value &obj, VkExternalFenceProperties &o);
833 static void parse_VkExportFenceCreateInfo(const char *s, Json::Value &obj, VkExportFenceCreateInfo &o);
834 static void parse_VkImportFenceFdInfoKHR(const char *s, Json::Value &obj, VkImportFenceFdInfoKHR &o);
835 static void parse_VkFenceGetFdInfoKHR(const char *s, Json::Value &obj, VkFenceGetFdInfoKHR &o);
836 static void parse_VkExportFenceSciSyncInfoNV(const char *s, Json::Value &obj, VkExportFenceSciSyncInfoNV &o);
837 static void parse_VkImportFenceSciSyncInfoNV(const char *s, Json::Value &obj, VkImportFenceSciSyncInfoNV &o);
838 static void parse_VkFenceGetSciSyncInfoNV(const char *s, Json::Value &obj, VkFenceGetSciSyncInfoNV &o);
839 static void parse_VkExportSemaphoreSciSyncInfoNV(const char *s, Json::Value &obj, VkExportSemaphoreSciSyncInfoNV &o);
840 static void parse_VkImportSemaphoreSciSyncInfoNV(const char *s, Json::Value &obj, VkImportSemaphoreSciSyncInfoNV &o);
841 static void parse_VkSemaphoreGetSciSyncInfoNV(const char *s, Json::Value &obj, VkSemaphoreGetSciSyncInfoNV &o);
842 static void parse_VkSciSyncAttributesInfoNV(const char *s, Json::Value &obj, VkSciSyncAttributesInfoNV &o);
843 static void parse_VkPhysicalDeviceExternalSciSyncFeaturesNV(const char *s, Json::Value &obj,
844                                                             VkPhysicalDeviceExternalSciSyncFeaturesNV &o);
845 static void parse_VkPhysicalDeviceExternalSciSync2FeaturesNV(const char *s, Json::Value &obj,
846                                                              VkPhysicalDeviceExternalSciSync2FeaturesNV &o);
847 static void parse_VkSemaphoreSciSyncPoolCreateInfoNV(const char *s, Json::Value &obj,
848                                                      VkSemaphoreSciSyncPoolCreateInfoNV &o);
849 static void parse_VkSemaphoreSciSyncCreateInfoNV(const char *s, Json::Value &obj, VkSemaphoreSciSyncCreateInfoNV &o);
850 static void parse_VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV(
851     const char *s, Json::Value &obj, VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV &o);
852 static void parse_VkPhysicalDeviceMultiviewFeatures(const char *s, Json::Value &obj,
853                                                     VkPhysicalDeviceMultiviewFeatures &o);
854 static void parse_VkPhysicalDeviceMultiviewProperties(const char *s, Json::Value &obj,
855                                                       VkPhysicalDeviceMultiviewProperties &o);
856 static void parse_VkRenderPassMultiviewCreateInfo(const char *s, Json::Value &obj, VkRenderPassMultiviewCreateInfo &o);
857 static void parse_VkSurfaceCapabilities2EXT(const char *s, Json::Value &obj, VkSurfaceCapabilities2EXT &o);
858 static void parse_VkDisplayPowerInfoEXT(const char *s, Json::Value &obj, VkDisplayPowerInfoEXT &o);
859 static void parse_VkDeviceEventInfoEXT(const char *s, Json::Value &obj, VkDeviceEventInfoEXT &o);
860 static void parse_VkDisplayEventInfoEXT(const char *s, Json::Value &obj, VkDisplayEventInfoEXT &o);
861 static void parse_VkSwapchainCounterCreateInfoEXT(const char *s, Json::Value &obj, VkSwapchainCounterCreateInfoEXT &o);
862 static void parse_VkPhysicalDeviceGroupProperties(const char *s, Json::Value &obj, VkPhysicalDeviceGroupProperties &o);
863 static void parse_VkMemoryAllocateFlagsInfo(const char *s, Json::Value &obj, VkMemoryAllocateFlagsInfo &o);
864 static void parse_VkBindBufferMemoryInfo(const char *s, Json::Value &obj, VkBindBufferMemoryInfo &o);
865 static void parse_VkBindBufferMemoryDeviceGroupInfo(const char *s, Json::Value &obj,
866                                                     VkBindBufferMemoryDeviceGroupInfo &o);
867 static void parse_VkBindImageMemoryInfo(const char *s, Json::Value &obj, VkBindImageMemoryInfo &o);
868 static void parse_VkBindImageMemoryDeviceGroupInfo(const char *s, Json::Value &obj,
869                                                    VkBindImageMemoryDeviceGroupInfo &o);
870 static void parse_VkDeviceGroupRenderPassBeginInfo(const char *s, Json::Value &obj,
871                                                    VkDeviceGroupRenderPassBeginInfo &o);
872 static void parse_VkDeviceGroupCommandBufferBeginInfo(const char *s, Json::Value &obj,
873                                                       VkDeviceGroupCommandBufferBeginInfo &o);
874 static void parse_VkDeviceGroupSubmitInfo(const char *s, Json::Value &obj, VkDeviceGroupSubmitInfo &o);
875 static void parse_VkDeviceGroupPresentCapabilitiesKHR(const char *s, Json::Value &obj,
876                                                       VkDeviceGroupPresentCapabilitiesKHR &o);
877 static void parse_VkImageSwapchainCreateInfoKHR(const char *s, Json::Value &obj, VkImageSwapchainCreateInfoKHR &o);
878 static void parse_VkBindImageMemorySwapchainInfoKHR(const char *s, Json::Value &obj,
879                                                     VkBindImageMemorySwapchainInfoKHR &o);
880 static void parse_VkAcquireNextImageInfoKHR(const char *s, Json::Value &obj, VkAcquireNextImageInfoKHR &o);
881 static void parse_VkDeviceGroupPresentInfoKHR(const char *s, Json::Value &obj, VkDeviceGroupPresentInfoKHR &o);
882 static void parse_VkDeviceGroupDeviceCreateInfo(const char *s, Json::Value &obj, VkDeviceGroupDeviceCreateInfo &o);
883 static void parse_VkDeviceGroupSwapchainCreateInfoKHR(const char *s, Json::Value &obj,
884                                                       VkDeviceGroupSwapchainCreateInfoKHR &o);
885 static void parse_VkXYColorEXT(const char *s, Json::Value &obj, VkXYColorEXT &o);
886 static void parse_VkHdrMetadataEXT(const char *s, Json::Value &obj, VkHdrMetadataEXT &o);
887 static void parse_VkPhysicalDeviceDiscardRectanglePropertiesEXT(const char *s, Json::Value &obj,
888                                                                 VkPhysicalDeviceDiscardRectanglePropertiesEXT &o);
889 static void parse_VkPipelineDiscardRectangleStateCreateInfoEXT(const char *s, Json::Value &obj,
890                                                                VkPipelineDiscardRectangleStateCreateInfoEXT &o);
891 static void parse_VkInputAttachmentAspectReference(const char *s, Json::Value &obj,
892                                                    VkInputAttachmentAspectReference &o);
893 static void parse_VkRenderPassInputAttachmentAspectCreateInfo(const char *s, Json::Value &obj,
894                                                               VkRenderPassInputAttachmentAspectCreateInfo &o);
895 static void parse_VkPhysicalDeviceSurfaceInfo2KHR(const char *s, Json::Value &obj, VkPhysicalDeviceSurfaceInfo2KHR &o);
896 static void parse_VkSurfaceCapabilities2KHR(const char *s, Json::Value &obj, VkSurfaceCapabilities2KHR &o);
897 static void parse_VkSurfaceFormat2KHR(const char *s, Json::Value &obj, VkSurfaceFormat2KHR &o);
898 static void parse_VkDisplayProperties2KHR(const char *s, Json::Value &obj, VkDisplayProperties2KHR &o);
899 static void parse_VkDisplayPlaneProperties2KHR(const char *s, Json::Value &obj, VkDisplayPlaneProperties2KHR &o);
900 static void parse_VkDisplayModeProperties2KHR(const char *s, Json::Value &obj, VkDisplayModeProperties2KHR &o);
901 static void parse_VkDisplayPlaneInfo2KHR(const char *s, Json::Value &obj, VkDisplayPlaneInfo2KHR &o);
902 static void parse_VkDisplayPlaneCapabilities2KHR(const char *s, Json::Value &obj, VkDisplayPlaneCapabilities2KHR &o);
903 static void parse_VkSharedPresentSurfaceCapabilitiesKHR(const char *s, Json::Value &obj,
904                                                         VkSharedPresentSurfaceCapabilitiesKHR &o);
905 static void parse_VkPhysicalDevice16BitStorageFeatures(const char *s, Json::Value &obj,
906                                                        VkPhysicalDevice16BitStorageFeatures &o);
907 static void parse_VkPhysicalDeviceSubgroupProperties(const char *s, Json::Value &obj,
908                                                      VkPhysicalDeviceSubgroupProperties &o);
909 static void parse_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
910     const char *s, Json::Value &obj, VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures &o);
911 static void parse_VkBufferMemoryRequirementsInfo2(const char *s, Json::Value &obj, VkBufferMemoryRequirementsInfo2 &o);
912 static void parse_VkImageMemoryRequirementsInfo2(const char *s, Json::Value &obj, VkImageMemoryRequirementsInfo2 &o);
913 static void parse_VkMemoryRequirements2(const char *s, Json::Value &obj, VkMemoryRequirements2 &o);
914 static void parse_VkPhysicalDevicePointClippingProperties(const char *s, Json::Value &obj,
915                                                           VkPhysicalDevicePointClippingProperties &o);
916 static void parse_VkMemoryDedicatedRequirements(const char *s, Json::Value &obj, VkMemoryDedicatedRequirements &o);
917 static void parse_VkMemoryDedicatedAllocateInfo(const char *s, Json::Value &obj, VkMemoryDedicatedAllocateInfo &o);
918 static void parse_VkImageViewUsageCreateInfo(const char *s, Json::Value &obj, VkImageViewUsageCreateInfo &o);
919 static void parse_VkPipelineTessellationDomainOriginStateCreateInfo(
920     const char *s, Json::Value &obj, VkPipelineTessellationDomainOriginStateCreateInfo &o);
921 static void parse_VkSamplerYcbcrConversionInfo(const char *s, Json::Value &obj, VkSamplerYcbcrConversionInfo &o);
922 static void parse_VkSamplerYcbcrConversionCreateInfo(const char *s, Json::Value &obj,
923                                                      VkSamplerYcbcrConversionCreateInfo &o);
924 static void parse_VkBindImagePlaneMemoryInfo(const char *s, Json::Value &obj, VkBindImagePlaneMemoryInfo &o);
925 static void parse_VkImagePlaneMemoryRequirementsInfo(const char *s, Json::Value &obj,
926                                                      VkImagePlaneMemoryRequirementsInfo &o);
927 static void parse_VkPhysicalDeviceSamplerYcbcrConversionFeatures(const char *s, Json::Value &obj,
928                                                                  VkPhysicalDeviceSamplerYcbcrConversionFeatures &o);
929 static void parse_VkSamplerYcbcrConversionImageFormatProperties(const char *s, Json::Value &obj,
930                                                                 VkSamplerYcbcrConversionImageFormatProperties &o);
931 static void parse_VkProtectedSubmitInfo(const char *s, Json::Value &obj, VkProtectedSubmitInfo &o);
932 static void parse_VkPhysicalDeviceProtectedMemoryFeatures(const char *s, Json::Value &obj,
933                                                           VkPhysicalDeviceProtectedMemoryFeatures &o);
934 static void parse_VkPhysicalDeviceProtectedMemoryProperties(const char *s, Json::Value &obj,
935                                                             VkPhysicalDeviceProtectedMemoryProperties &o);
936 static void parse_VkDeviceQueueInfo2(const char *s, Json::Value &obj, VkDeviceQueueInfo2 &o);
937 static void parse_VkPhysicalDeviceSamplerFilterMinmaxProperties(const char *s, Json::Value &obj,
938                                                                 VkPhysicalDeviceSamplerFilterMinmaxProperties &o);
939 static void parse_VkSampleLocationEXT(const char *s, Json::Value &obj, VkSampleLocationEXT &o);
940 static void parse_VkSampleLocationsInfoEXT(const char *s, Json::Value &obj, VkSampleLocationsInfoEXT &o);
941 static void parse_VkAttachmentSampleLocationsEXT(const char *s, Json::Value &obj, VkAttachmentSampleLocationsEXT &o);
942 static void parse_VkSubpassSampleLocationsEXT(const char *s, Json::Value &obj, VkSubpassSampleLocationsEXT &o);
943 static void parse_VkRenderPassSampleLocationsBeginInfoEXT(const char *s, Json::Value &obj,
944                                                           VkRenderPassSampleLocationsBeginInfoEXT &o);
945 static void parse_VkPipelineSampleLocationsStateCreateInfoEXT(const char *s, Json::Value &obj,
946                                                               VkPipelineSampleLocationsStateCreateInfoEXT &o);
947 static void parse_VkPhysicalDeviceSampleLocationsPropertiesEXT(const char *s, Json::Value &obj,
948                                                                VkPhysicalDeviceSampleLocationsPropertiesEXT &o);
949 static void parse_VkMultisamplePropertiesEXT(const char *s, Json::Value &obj, VkMultisamplePropertiesEXT &o);
950 static void parse_VkSamplerReductionModeCreateInfo(const char *s, Json::Value &obj,
951                                                    VkSamplerReductionModeCreateInfo &o);
952 static void parse_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
953     const char *s, Json::Value &obj, VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT &o);
954 static void parse_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
955     const char *s, Json::Value &obj, VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT &o);
956 static void parse_VkPipelineColorBlendAdvancedStateCreateInfoEXT(const char *s, Json::Value &obj,
957                                                                  VkPipelineColorBlendAdvancedStateCreateInfoEXT &o);
958 static void parse_VkImageFormatListCreateInfo(const char *s, Json::Value &obj, VkImageFormatListCreateInfo &o);
959 static void parse_VkPhysicalDeviceMaintenance3Properties(const char *s, Json::Value &obj,
960                                                          VkPhysicalDeviceMaintenance3Properties &o);
961 static void parse_VkDescriptorSetLayoutSupport(const char *s, Json::Value &obj, VkDescriptorSetLayoutSupport &o);
962 static void parse_VkPhysicalDeviceShaderDrawParametersFeatures(const char *s, Json::Value &obj,
963                                                                VkPhysicalDeviceShaderDrawParametersFeatures &o);
964 static void parse_VkPhysicalDeviceShaderDrawParameterFeatures(const char *s, Json::Value &obj,
965                                                               VkPhysicalDeviceShaderDrawParameterFeatures &o);
966 static void parse_VkPhysicalDeviceShaderFloat16Int8Features(const char *s, Json::Value &obj,
967                                                             VkPhysicalDeviceShaderFloat16Int8Features &o);
968 static void parse_VkPhysicalDeviceFloatControlsProperties(const char *s, Json::Value &obj,
969                                                           VkPhysicalDeviceFloatControlsProperties &o);
970 static void parse_VkPhysicalDeviceHostQueryResetFeatures(const char *s, Json::Value &obj,
971                                                          VkPhysicalDeviceHostQueryResetFeatures &o);
972 static void parse_VkDeviceQueueGlobalPriorityCreateInfoEXT(const char *s, Json::Value &obj,
973                                                            VkDeviceQueueGlobalPriorityCreateInfoEXT &o);
974 static void parse_VkDebugUtilsObjectNameInfoEXT(const char *s, Json::Value &obj, VkDebugUtilsObjectNameInfoEXT &o);
975 static void parse_VkDebugUtilsObjectTagInfoEXT(const char *s, Json::Value &obj, VkDebugUtilsObjectTagInfoEXT &o);
976 static void parse_VkDebugUtilsLabelEXT(const char *s, Json::Value &obj, VkDebugUtilsLabelEXT &o);
977 static void parse_VkDebugUtilsMessengerCreateInfoEXT(const char *s, Json::Value &obj,
978                                                      VkDebugUtilsMessengerCreateInfoEXT &o);
979 static void parse_VkDebugUtilsMessengerCallbackDataEXT(const char *s, Json::Value &obj,
980                                                        VkDebugUtilsMessengerCallbackDataEXT &o);
981 static void parse_VkImportMemoryHostPointerInfoEXT(const char *s, Json::Value &obj,
982                                                    VkImportMemoryHostPointerInfoEXT &o);
983 static void parse_VkMemoryHostPointerPropertiesEXT(const char *s, Json::Value &obj,
984                                                    VkMemoryHostPointerPropertiesEXT &o);
985 static void parse_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(const char *s, Json::Value &obj,
986                                                                   VkPhysicalDeviceExternalMemoryHostPropertiesEXT &o);
987 static void parse_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
988     const char *s, Json::Value &obj, VkPhysicalDeviceConservativeRasterizationPropertiesEXT &o);
989 static void parse_VkCalibratedTimestampInfoEXT(const char *s, Json::Value &obj, VkCalibratedTimestampInfoEXT &o);
990 static void parse_VkPipelineRasterizationConservativeStateCreateInfoEXT(
991     const char *s, Json::Value &obj, VkPipelineRasterizationConservativeStateCreateInfoEXT &o);
992 static void parse_VkPhysicalDeviceDescriptorIndexingFeatures(const char *s, Json::Value &obj,
993                                                              VkPhysicalDeviceDescriptorIndexingFeatures &o);
994 static void parse_VkPhysicalDeviceDescriptorIndexingProperties(const char *s, Json::Value &obj,
995                                                                VkPhysicalDeviceDescriptorIndexingProperties &o);
996 static void parse_VkDescriptorSetLayoutBindingFlagsCreateInfo(const char *s, Json::Value &obj,
997                                                               VkDescriptorSetLayoutBindingFlagsCreateInfo &o);
998 static void parse_VkDescriptorSetVariableDescriptorCountAllocateInfo(
999     const char *s, Json::Value &obj, VkDescriptorSetVariableDescriptorCountAllocateInfo &o);
1000 static void parse_VkDescriptorSetVariableDescriptorCountLayoutSupport(
1001     const char *s, Json::Value &obj, VkDescriptorSetVariableDescriptorCountLayoutSupport &o);
1002 static void parse_VkAttachmentDescription2(const char *s, Json::Value &obj, VkAttachmentDescription2 &o);
1003 static void parse_VkAttachmentReference2(const char *s, Json::Value &obj, VkAttachmentReference2 &o);
1004 static void parse_VkSubpassDescription2(const char *s, Json::Value &obj, VkSubpassDescription2 &o);
1005 static void parse_VkSubpassDependency2(const char *s, Json::Value &obj, VkSubpassDependency2 &o);
1006 static void parse_VkRenderPassCreateInfo2(const char *s, Json::Value &obj, VkRenderPassCreateInfo2 &o);
1007 static void parse_VkSubpassBeginInfo(const char *s, Json::Value &obj, VkSubpassBeginInfo &o);
1008 static void parse_VkSubpassEndInfo(const char *s, Json::Value &obj, VkSubpassEndInfo &o);
1009 static void parse_VkPhysicalDeviceTimelineSemaphoreFeatures(const char *s, Json::Value &obj,
1010                                                             VkPhysicalDeviceTimelineSemaphoreFeatures &o);
1011 static void parse_VkPhysicalDeviceTimelineSemaphoreProperties(const char *s, Json::Value &obj,
1012                                                               VkPhysicalDeviceTimelineSemaphoreProperties &o);
1013 static void parse_VkSemaphoreTypeCreateInfo(const char *s, Json::Value &obj, VkSemaphoreTypeCreateInfo &o);
1014 static void parse_VkTimelineSemaphoreSubmitInfo(const char *s, Json::Value &obj, VkTimelineSemaphoreSubmitInfo &o);
1015 static void parse_VkSemaphoreWaitInfo(const char *s, Json::Value &obj, VkSemaphoreWaitInfo &o);
1016 static void parse_VkSemaphoreSignalInfo(const char *s, Json::Value &obj, VkSemaphoreSignalInfo &o);
1017 static void parse_VkVertexInputBindingDivisorDescriptionEXT(const char *s, Json::Value &obj,
1018                                                             VkVertexInputBindingDivisorDescriptionEXT &o);
1019 static void parse_VkPipelineVertexInputDivisorStateCreateInfoEXT(const char *s, Json::Value &obj,
1020                                                                  VkPipelineVertexInputDivisorStateCreateInfoEXT &o);
1021 static void parse_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
1022     const char *s, Json::Value &obj, VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT &o);
1023 static void parse_VkPhysicalDevicePCIBusInfoPropertiesEXT(const char *s, Json::Value &obj,
1024                                                           VkPhysicalDevicePCIBusInfoPropertiesEXT &o);
1025 static void parse_VkPhysicalDevice8BitStorageFeatures(const char *s, Json::Value &obj,
1026                                                       VkPhysicalDevice8BitStorageFeatures &o);
1027 static void parse_VkPhysicalDeviceVulkanMemoryModelFeatures(const char *s, Json::Value &obj,
1028                                                             VkPhysicalDeviceVulkanMemoryModelFeatures &o);
1029 static void parse_VkPhysicalDeviceShaderAtomicInt64Features(const char *s, Json::Value &obj,
1030                                                             VkPhysicalDeviceShaderAtomicInt64Features &o);
1031 static void parse_VkPhysicalDeviceShaderAtomicFloatFeaturesEXT(const char *s, Json::Value &obj,
1032                                                                VkPhysicalDeviceShaderAtomicFloatFeaturesEXT &o);
1033 static void parse_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
1034     const char *s, Json::Value &obj, VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT &o);
1035 static void parse_VkPhysicalDeviceDepthStencilResolveProperties(const char *s, Json::Value &obj,
1036                                                                 VkPhysicalDeviceDepthStencilResolveProperties &o);
1037 static void parse_VkSubpassDescriptionDepthStencilResolve(const char *s, Json::Value &obj,
1038                                                           VkSubpassDescriptionDepthStencilResolve &o);
1039 static void parse_VkImageViewASTCDecodeModeEXT(const char *s, Json::Value &obj, VkImageViewASTCDecodeModeEXT &o);
1040 static void parse_VkPhysicalDeviceASTCDecodeFeaturesEXT(const char *s, Json::Value &obj,
1041                                                         VkPhysicalDeviceASTCDecodeFeaturesEXT &o);
1042 static void parse_VkDrmFormatModifierPropertiesListEXT(const char *s, Json::Value &obj,
1043                                                        VkDrmFormatModifierPropertiesListEXT &o);
1044 static void parse_VkDrmFormatModifierPropertiesEXT(const char *s, Json::Value &obj,
1045                                                    VkDrmFormatModifierPropertiesEXT &o);
1046 static void parse_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(const char *s, Json::Value &obj,
1047                                                                 VkPhysicalDeviceImageDrmFormatModifierInfoEXT &o);
1048 static void parse_VkImageDrmFormatModifierListCreateInfoEXT(const char *s, Json::Value &obj,
1049                                                             VkImageDrmFormatModifierListCreateInfoEXT &o);
1050 static void parse_VkImageDrmFormatModifierExplicitCreateInfoEXT(const char *s, Json::Value &obj,
1051                                                                 VkImageDrmFormatModifierExplicitCreateInfoEXT &o);
1052 static void parse_VkImageDrmFormatModifierPropertiesEXT(const char *s, Json::Value &obj,
1053                                                         VkImageDrmFormatModifierPropertiesEXT &o);
1054 static void parse_VkImageStencilUsageCreateInfo(const char *s, Json::Value &obj, VkImageStencilUsageCreateInfo &o);
1055 static void parse_VkPhysicalDeviceScalarBlockLayoutFeatures(const char *s, Json::Value &obj,
1056                                                             VkPhysicalDeviceScalarBlockLayoutFeatures &o);
1057 static void parse_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
1058     const char *s, Json::Value &obj, VkPhysicalDeviceUniformBufferStandardLayoutFeatures &o);
1059 static void parse_VkPhysicalDeviceDepthClipEnableFeaturesEXT(const char *s, Json::Value &obj,
1060                                                              VkPhysicalDeviceDepthClipEnableFeaturesEXT &o);
1061 static void parse_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
1062     const char *s, Json::Value &obj, VkPipelineRasterizationDepthClipStateCreateInfoEXT &o);
1063 static void parse_VkPhysicalDeviceMemoryBudgetPropertiesEXT(const char *s, Json::Value &obj,
1064                                                             VkPhysicalDeviceMemoryBudgetPropertiesEXT &o);
1065 static void parse_VkPhysicalDeviceBufferDeviceAddressFeatures(const char *s, Json::Value &obj,
1066                                                               VkPhysicalDeviceBufferDeviceAddressFeatures &o);
1067 static void parse_VkBufferDeviceAddressInfo(const char *s, Json::Value &obj, VkBufferDeviceAddressInfo &o);
1068 static void parse_VkBufferOpaqueCaptureAddressCreateInfo(const char *s, Json::Value &obj,
1069                                                          VkBufferOpaqueCaptureAddressCreateInfo &o);
1070 static void parse_VkPhysicalDeviceImageViewImageFormatInfoEXT(const char *s, Json::Value &obj,
1071                                                               VkPhysicalDeviceImageViewImageFormatInfoEXT &o);
1072 static void parse_VkFilterCubicImageViewImageFormatPropertiesEXT(const char *s, Json::Value &obj,
1073                                                                  VkFilterCubicImageViewImageFormatPropertiesEXT &o);
1074 static void parse_VkPhysicalDeviceImagelessFramebufferFeatures(const char *s, Json::Value &obj,
1075                                                                VkPhysicalDeviceImagelessFramebufferFeatures &o);
1076 static void parse_VkFramebufferAttachmentsCreateInfo(const char *s, Json::Value &obj,
1077                                                      VkFramebufferAttachmentsCreateInfo &o);
1078 static void parse_VkFramebufferAttachmentImageInfo(const char *s, Json::Value &obj,
1079                                                    VkFramebufferAttachmentImageInfo &o);
1080 static void parse_VkRenderPassAttachmentBeginInfo(const char *s, Json::Value &obj, VkRenderPassAttachmentBeginInfo &o);
1081 static void parse_VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(
1082     const char *s, Json::Value &obj, VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT &o);
1083 static void parse_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT(const char *s, Json::Value &obj,
1084                                                               VkPhysicalDeviceYcbcrImageArraysFeaturesEXT &o);
1085 static void parse_VkPhysicalDevicePerformanceQueryFeaturesKHR(const char *s, Json::Value &obj,
1086                                                               VkPhysicalDevicePerformanceQueryFeaturesKHR &o);
1087 static void parse_VkPhysicalDevicePerformanceQueryPropertiesKHR(const char *s, Json::Value &obj,
1088                                                                 VkPhysicalDevicePerformanceQueryPropertiesKHR &o);
1089 static void parse_VkPerformanceCounterKHR(const char *s, Json::Value &obj, VkPerformanceCounterKHR &o);
1090 static void parse_VkPerformanceCounterDescriptionKHR(const char *s, Json::Value &obj,
1091                                                      VkPerformanceCounterDescriptionKHR &o);
1092 static void parse_VkQueryPoolPerformanceCreateInfoKHR(const char *s, Json::Value &obj,
1093                                                       VkQueryPoolPerformanceCreateInfoKHR &o);
1094 static void parse_VkAcquireProfilingLockInfoKHR(const char *s, Json::Value &obj, VkAcquireProfilingLockInfoKHR &o);
1095 static void parse_VkPerformanceQuerySubmitInfoKHR(const char *s, Json::Value &obj, VkPerformanceQuerySubmitInfoKHR &o);
1096 static void parse_VkPerformanceQueryReservationInfoKHR(const char *s, Json::Value &obj,
1097                                                        VkPerformanceQueryReservationInfoKHR &o);
1098 static void parse_VkHeadlessSurfaceCreateInfoEXT(const char *s, Json::Value &obj, VkHeadlessSurfaceCreateInfoEXT &o);
1099 static void parse_VkPhysicalDeviceShaderClockFeaturesKHR(const char *s, Json::Value &obj,
1100                                                          VkPhysicalDeviceShaderClockFeaturesKHR &o);
1101 static void parse_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(const char *s, Json::Value &obj,
1102                                                             VkPhysicalDeviceIndexTypeUint8FeaturesEXT &o);
1103 static void parse_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(
1104     const char *s, Json::Value &obj, VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT &o);
1105 static void parse_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
1106     const char *s, Json::Value &obj, VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures &o);
1107 static void parse_VkAttachmentReferenceStencilLayout(const char *s, Json::Value &obj,
1108                                                      VkAttachmentReferenceStencilLayout &o);
1109 static void parse_VkAttachmentDescriptionStencilLayout(const char *s, Json::Value &obj,
1110                                                        VkAttachmentDescriptionStencilLayout &o);
1111 static void parse_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(
1112     const char *s, Json::Value &obj, VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT &o);
1113 static void parse_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(const char *s, Json::Value &obj,
1114                                                                   VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT &o);
1115 static void parse_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT(
1116     const char *s, Json::Value &obj, VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT &o);
1117 static void parse_VkPhysicalDeviceSubgroupSizeControlFeaturesEXT(const char *s, Json::Value &obj,
1118                                                                  VkPhysicalDeviceSubgroupSizeControlFeaturesEXT &o);
1119 static void parse_VkPhysicalDeviceSubgroupSizeControlPropertiesEXT(const char *s, Json::Value &obj,
1120                                                                    VkPhysicalDeviceSubgroupSizeControlPropertiesEXT &o);
1121 static void parse_VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(
1122     const char *s, Json::Value &obj, VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT &o);
1123 static void parse_VkMemoryOpaqueCaptureAddressAllocateInfo(const char *s, Json::Value &obj,
1124                                                            VkMemoryOpaqueCaptureAddressAllocateInfo &o);
1125 static void parse_VkDeviceMemoryOpaqueCaptureAddressInfo(const char *s, Json::Value &obj,
1126                                                          VkDeviceMemoryOpaqueCaptureAddressInfo &o);
1127 static void parse_VkPhysicalDeviceLineRasterizationFeaturesEXT(const char *s, Json::Value &obj,
1128                                                                VkPhysicalDeviceLineRasterizationFeaturesEXT &o);
1129 static void parse_VkPhysicalDeviceLineRasterizationPropertiesEXT(const char *s, Json::Value &obj,
1130                                                                  VkPhysicalDeviceLineRasterizationPropertiesEXT &o);
1131 static void parse_VkPipelineRasterizationLineStateCreateInfoEXT(const char *s, Json::Value &obj,
1132                                                                 VkPipelineRasterizationLineStateCreateInfoEXT &o);
1133 static void parse_VkPhysicalDeviceVulkan11Features(const char *s, Json::Value &obj,
1134                                                    VkPhysicalDeviceVulkan11Features &o);
1135 static void parse_VkPhysicalDeviceVulkan11Properties(const char *s, Json::Value &obj,
1136                                                      VkPhysicalDeviceVulkan11Properties &o);
1137 static void parse_VkPhysicalDeviceVulkan12Features(const char *s, Json::Value &obj,
1138                                                    VkPhysicalDeviceVulkan12Features &o);
1139 static void parse_VkPhysicalDeviceVulkan12Properties(const char *s, Json::Value &obj,
1140                                                      VkPhysicalDeviceVulkan12Properties &o);
1141 static void parse_VkFaultData(const char *s, Json::Value &obj, VkFaultData &o);
1142 static void parse_VkFaultCallbackInfo(const char *s, Json::Value &obj, VkFaultCallbackInfo &o);
1143 static void parse_VkSamplerCustomBorderColorCreateInfoEXT(const char *s, Json::Value &obj,
1144                                                           VkSamplerCustomBorderColorCreateInfoEXT &o);
1145 static void parse_VkPhysicalDeviceCustomBorderColorPropertiesEXT(const char *s, Json::Value &obj,
1146                                                                  VkPhysicalDeviceCustomBorderColorPropertiesEXT &o);
1147 static void parse_VkPhysicalDeviceCustomBorderColorFeaturesEXT(const char *s, Json::Value &obj,
1148                                                                VkPhysicalDeviceCustomBorderColorFeaturesEXT &o);
1149 static void parse_VkRefreshObjectKHR(const char *s, Json::Value &obj, VkRefreshObjectKHR &o);
1150 static void parse_VkRefreshObjectListKHR(const char *s, Json::Value &obj, VkRefreshObjectListKHR &o);
1151 static void parse_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(const char *s, Json::Value &obj,
1152                                                                   VkPhysicalDeviceExtendedDynamicStateFeaturesEXT &o);
1153 static void parse_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(const char *s, Json::Value &obj,
1154                                                                    VkPhysicalDeviceExtendedDynamicState2FeaturesEXT &o);
1155 static void parse_VkPipelineOfflineCreateInfo(const char *s, Json::Value &obj, VkPipelineOfflineCreateInfo &o);
1156 static void parse_VkPhysicalDeviceRobustness2FeaturesEXT(const char *s, Json::Value &obj,
1157                                                          VkPhysicalDeviceRobustness2FeaturesEXT &o);
1158 static void parse_VkPhysicalDeviceRobustness2PropertiesEXT(const char *s, Json::Value &obj,
1159                                                            VkPhysicalDeviceRobustness2PropertiesEXT &o);
1160 static void parse_VkPhysicalDeviceImageRobustnessFeaturesEXT(const char *s, Json::Value &obj,
1161                                                              VkPhysicalDeviceImageRobustnessFeaturesEXT &o);
1162 static void parse_VkPhysicalDevice4444FormatsFeaturesEXT(const char *s, Json::Value &obj,
1163                                                          VkPhysicalDevice4444FormatsFeaturesEXT &o);
1164 static void parse_VkBufferCopy2KHR(const char *s, Json::Value &obj, VkBufferCopy2KHR &o);
1165 static void parse_VkImageCopy2KHR(const char *s, Json::Value &obj, VkImageCopy2KHR &o);
1166 static void parse_VkImageBlit2KHR(const char *s, Json::Value &obj, VkImageBlit2KHR &o);
1167 static void parse_VkBufferImageCopy2KHR(const char *s, Json::Value &obj, VkBufferImageCopy2KHR &o);
1168 static void parse_VkImageResolve2KHR(const char *s, Json::Value &obj, VkImageResolve2KHR &o);
1169 static void parse_VkCopyBufferInfo2KHR(const char *s, Json::Value &obj, VkCopyBufferInfo2KHR &o);
1170 static void parse_VkCopyImageInfo2KHR(const char *s, Json::Value &obj, VkCopyImageInfo2KHR &o);
1171 static void parse_VkBlitImageInfo2KHR(const char *s, Json::Value &obj, VkBlitImageInfo2KHR &o);
1172 static void parse_VkCopyBufferToImageInfo2KHR(const char *s, Json::Value &obj, VkCopyBufferToImageInfo2KHR &o);
1173 static void parse_VkCopyImageToBufferInfo2KHR(const char *s, Json::Value &obj, VkCopyImageToBufferInfo2KHR &o);
1174 static void parse_VkResolveImageInfo2KHR(const char *s, Json::Value &obj, VkResolveImageInfo2KHR &o);
1175 static void parse_VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(
1176     const char *s, Json::Value &obj, VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT &o);
1177 static void parse_VkFragmentShadingRateAttachmentInfoKHR(const char *s, Json::Value &obj,
1178                                                          VkFragmentShadingRateAttachmentInfoKHR &o);
1179 static void parse_VkPipelineFragmentShadingRateStateCreateInfoKHR(const char *s, Json::Value &obj,
1180                                                                   VkPipelineFragmentShadingRateStateCreateInfoKHR &o);
1181 static void parse_VkPhysicalDeviceFragmentShadingRateFeaturesKHR(const char *s, Json::Value &obj,
1182                                                                  VkPhysicalDeviceFragmentShadingRateFeaturesKHR &o);
1183 static void parse_VkPhysicalDeviceFragmentShadingRatePropertiesKHR(const char *s, Json::Value &obj,
1184                                                                    VkPhysicalDeviceFragmentShadingRatePropertiesKHR &o);
1185 static void parse_VkPhysicalDeviceFragmentShadingRateKHR(const char *s, Json::Value &obj,
1186                                                          VkPhysicalDeviceFragmentShadingRateKHR &o);
1187 static void parse_VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR(
1188     const char *s, Json::Value &obj, VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR &o);
1189 static void parse_VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(
1190     const char *s, Json::Value &obj, VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT &o);
1191 static void parse_VkVertexInputBindingDescription2EXT(const char *s, Json::Value &obj,
1192                                                       VkVertexInputBindingDescription2EXT &o);
1193 static void parse_VkVertexInputAttributeDescription2EXT(const char *s, Json::Value &obj,
1194                                                         VkVertexInputAttributeDescription2EXT &o);
1195 static void parse_VkPhysicalDeviceColorWriteEnableFeaturesEXT(const char *s, Json::Value &obj,
1196                                                               VkPhysicalDeviceColorWriteEnableFeaturesEXT &o);
1197 static void parse_VkPipelineColorWriteCreateInfoEXT(const char *s, Json::Value &obj,
1198                                                     VkPipelineColorWriteCreateInfoEXT &o);
1199 static void parse_VkMemoryBarrier2KHR(const char *s, Json::Value &obj, VkMemoryBarrier2KHR &o);
1200 static void parse_VkImageMemoryBarrier2KHR(const char *s, Json::Value &obj, VkImageMemoryBarrier2KHR &o);
1201 static void parse_VkBufferMemoryBarrier2KHR(const char *s, Json::Value &obj, VkBufferMemoryBarrier2KHR &o);
1202 static void parse_VkDependencyInfoKHR(const char *s, Json::Value &obj, VkDependencyInfoKHR &o);
1203 static void parse_VkSemaphoreSubmitInfoKHR(const char *s, Json::Value &obj, VkSemaphoreSubmitInfoKHR &o);
1204 static void parse_VkCommandBufferSubmitInfoKHR(const char *s, Json::Value &obj, VkCommandBufferSubmitInfoKHR &o);
1205 static void parse_VkSubmitInfo2KHR(const char *s, Json::Value &obj, VkSubmitInfo2KHR &o);
1206 static void parse_VkQueueFamilyCheckpointProperties2NV(const char *s, Json::Value &obj,
1207                                                        VkQueueFamilyCheckpointProperties2NV &o);
1208 static void parse_VkCheckpointData2NV(const char *s, Json::Value &obj, VkCheckpointData2NV &o);
1209 static void parse_VkPhysicalDeviceSynchronization2FeaturesKHR(const char *s, Json::Value &obj,
1210                                                               VkPhysicalDeviceSynchronization2FeaturesKHR &o);
1211 static void parse_VkPhysicalDeviceVulkanSC10Properties(const char *s, Json::Value &obj,
1212                                                        VkPhysicalDeviceVulkanSC10Properties &o);
1213 static void parse_VkPipelinePoolSize(const char *s, Json::Value &obj, VkPipelinePoolSize &o);
1214 static void parse_VkDeviceObjectReservationCreateInfo(const char *s, Json::Value &obj,
1215                                                       VkDeviceObjectReservationCreateInfo &o);
1216 static void parse_VkCommandPoolMemoryReservationCreateInfo(const char *s, Json::Value &obj,
1217                                                            VkCommandPoolMemoryReservationCreateInfo &o);
1218 static void parse_VkCommandPoolMemoryConsumption(const char *s, Json::Value &obj, VkCommandPoolMemoryConsumption &o);
1219 static void parse_VkPhysicalDeviceVulkanSC10Features(const char *s, Json::Value &obj,
1220                                                      VkPhysicalDeviceVulkanSC10Features &o);
1221 static void parse_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(const char *s, Json::Value &obj,
1222                                                                    VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &o);
1223 static void parse_VkDrmFormatModifierPropertiesList2EXT(const char *s, Json::Value &obj,
1224                                                         VkDrmFormatModifierPropertiesList2EXT &o);
1225 static void parse_VkDrmFormatModifierProperties2EXT(const char *s, Json::Value &obj,
1226                                                     VkDrmFormatModifierProperties2EXT &o);
1227 /*************************************** End prototypes ***********************************/
1228 
parsePNextChain(Json::Value & obj)1229 static void *parsePNextChain(Json::Value &obj)
1230 {
1231     VkBaseInStructure o;
1232     Json::Value &pNextObj = obj["pNext"];
1233     if (pNextObj.empty() || (pNextObj.isString() && pNextObj.asString() == "NULL"))
1234         return nullptr;
1235 
1236     parse_VkStructureType("sType", pNextObj["sType"], (o.sType));
1237     void *p = nullptr;
1238     switch (o.sType)
1239     {
1240     case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:
1241     {
1242         p = s_globalMem.allocate(sizeof(VkDisplayPresentInfoKHR));
1243         parse_VkDisplayPresentInfoKHR("", pNextObj, *((VkDisplayPresentInfoKHR *)p));
1244     }
1245     break;
1246     case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT:
1247     {
1248         p = s_globalMem.allocate(sizeof(VkValidationFeaturesEXT));
1249         parse_VkValidationFeaturesEXT("", pNextObj, *((VkValidationFeaturesEXT *)p));
1250     }
1251     break;
1252     case VK_STRUCTURE_TYPE_APPLICATION_PARAMETERS_EXT:
1253     {
1254         p = s_globalMem.allocate(sizeof(VkApplicationParametersEXT));
1255         parse_VkApplicationParametersEXT("", pNextObj, *((VkApplicationParametersEXT *)p));
1256     }
1257     break;
1258     case VK_STRUCTURE_TYPE_EXPORT_MEMORY_SCI_BUF_INFO_NV:
1259     {
1260         p = s_globalMem.allocate(sizeof(VkExportMemorySciBufInfoNV));
1261         parse_VkExportMemorySciBufInfoNV("", pNextObj, *((VkExportMemorySciBufInfoNV *)p));
1262     }
1263     break;
1264     case VK_STRUCTURE_TYPE_IMPORT_MEMORY_SCI_BUF_INFO_NV:
1265     {
1266         p = s_globalMem.allocate(sizeof(VkImportMemorySciBufInfoNV));
1267         parse_VkImportMemorySciBufInfoNV("", pNextObj, *((VkImportMemorySciBufInfoNV *)p));
1268     }
1269     break;
1270     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV:
1271     {
1272         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceExternalMemorySciBufFeaturesNV));
1273         parse_VkPhysicalDeviceExternalMemorySciBufFeaturesNV("", pNextObj,
1274                                                              *((VkPhysicalDeviceExternalMemorySciBufFeaturesNV *)p));
1275     }
1276     break;
1277     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2:
1278     {
1279         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceFeatures2));
1280         parse_VkPhysicalDeviceFeatures2("", pNextObj, *((VkPhysicalDeviceFeatures2 *)p));
1281     }
1282     break;
1283     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES:
1284     {
1285         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceDriverProperties));
1286         parse_VkPhysicalDeviceDriverProperties("", pNextObj, *((VkPhysicalDeviceDriverProperties *)p));
1287     }
1288     break;
1289     case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR:
1290     {
1291         p = s_globalMem.allocate(sizeof(VkPresentRegionsKHR));
1292         parse_VkPresentRegionsKHR("", pNextObj, *((VkPresentRegionsKHR *)p));
1293     }
1294     break;
1295     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES:
1296     {
1297         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceVariablePointersFeatures));
1298         parse_VkPhysicalDeviceVariablePointersFeatures("", pNextObj, *((VkPhysicalDeviceVariablePointersFeatures *)p));
1299     }
1300     break;
1301     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:
1302     {
1303         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceExternalImageFormatInfo));
1304         parse_VkPhysicalDeviceExternalImageFormatInfo("", pNextObj, *((VkPhysicalDeviceExternalImageFormatInfo *)p));
1305     }
1306     break;
1307     case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES:
1308     {
1309         p = s_globalMem.allocate(sizeof(VkExternalImageFormatProperties));
1310         parse_VkExternalImageFormatProperties("", pNextObj, *((VkExternalImageFormatProperties *)p));
1311     }
1312     break;
1313     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES:
1314     {
1315         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceIDProperties));
1316         parse_VkPhysicalDeviceIDProperties("", pNextObj, *((VkPhysicalDeviceIDProperties *)p));
1317     }
1318     break;
1319     case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO:
1320     {
1321         p = s_globalMem.allocate(sizeof(VkExternalMemoryImageCreateInfo));
1322         parse_VkExternalMemoryImageCreateInfo("", pNextObj, *((VkExternalMemoryImageCreateInfo *)p));
1323     }
1324     break;
1325     case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:
1326     {
1327         p = s_globalMem.allocate(sizeof(VkExternalMemoryBufferCreateInfo));
1328         parse_VkExternalMemoryBufferCreateInfo("", pNextObj, *((VkExternalMemoryBufferCreateInfo *)p));
1329     }
1330     break;
1331     case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO:
1332     {
1333         p = s_globalMem.allocate(sizeof(VkExportMemoryAllocateInfo));
1334         parse_VkExportMemoryAllocateInfo("", pNextObj, *((VkExportMemoryAllocateInfo *)p));
1335     }
1336     break;
1337     case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR:
1338     {
1339         p = s_globalMem.allocate(sizeof(VkImportMemoryFdInfoKHR));
1340         parse_VkImportMemoryFdInfoKHR("", pNextObj, *((VkImportMemoryFdInfoKHR *)p));
1341     }
1342     break;
1343     case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:
1344     {
1345         p = s_globalMem.allocate(sizeof(VkExportSemaphoreCreateInfo));
1346         parse_VkExportSemaphoreCreateInfo("", pNextObj, *((VkExportSemaphoreCreateInfo *)p));
1347     }
1348     break;
1349     case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO:
1350     {
1351         p = s_globalMem.allocate(sizeof(VkExportFenceCreateInfo));
1352         parse_VkExportFenceCreateInfo("", pNextObj, *((VkExportFenceCreateInfo *)p));
1353     }
1354     break;
1355     case VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV:
1356     {
1357         p = s_globalMem.allocate(sizeof(VkExportFenceSciSyncInfoNV));
1358         parse_VkExportFenceSciSyncInfoNV("", pNextObj, *((VkExportFenceSciSyncInfoNV *)p));
1359     }
1360     break;
1361     case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV:
1362     {
1363         p = s_globalMem.allocate(sizeof(VkExportSemaphoreSciSyncInfoNV));
1364         parse_VkExportSemaphoreSciSyncInfoNV("", pNextObj, *((VkExportSemaphoreSciSyncInfoNV *)p));
1365     }
1366     break;
1367     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV:
1368     {
1369         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceExternalSciSyncFeaturesNV));
1370         parse_VkPhysicalDeviceExternalSciSyncFeaturesNV("", pNextObj,
1371                                                         *((VkPhysicalDeviceExternalSciSyncFeaturesNV *)p));
1372     }
1373     break;
1374     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV:
1375     {
1376         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceExternalSciSync2FeaturesNV));
1377         parse_VkPhysicalDeviceExternalSciSync2FeaturesNV("", pNextObj,
1378                                                          *((VkPhysicalDeviceExternalSciSync2FeaturesNV *)p));
1379     }
1380     break;
1381     case VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_CREATE_INFO_NV:
1382     {
1383         p = s_globalMem.allocate(sizeof(VkSemaphoreSciSyncCreateInfoNV));
1384         parse_VkSemaphoreSciSyncCreateInfoNV("", pNextObj, *((VkSemaphoreSciSyncCreateInfoNV *)p));
1385     }
1386     break;
1387     case VK_STRUCTURE_TYPE_DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV:
1388     {
1389         p = s_globalMem.allocate(sizeof(VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV));
1390         parse_VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV(
1391             "", pNextObj, *((VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV *)p));
1392     }
1393     break;
1394     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES:
1395     {
1396         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceMultiviewFeatures));
1397         parse_VkPhysicalDeviceMultiviewFeatures("", pNextObj, *((VkPhysicalDeviceMultiviewFeatures *)p));
1398     }
1399     break;
1400     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES:
1401     {
1402         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceMultiviewProperties));
1403         parse_VkPhysicalDeviceMultiviewProperties("", pNextObj, *((VkPhysicalDeviceMultiviewProperties *)p));
1404     }
1405     break;
1406     case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO:
1407     {
1408         p = s_globalMem.allocate(sizeof(VkRenderPassMultiviewCreateInfo));
1409         parse_VkRenderPassMultiviewCreateInfo("", pNextObj, *((VkRenderPassMultiviewCreateInfo *)p));
1410     }
1411     break;
1412     case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT:
1413     {
1414         p = s_globalMem.allocate(sizeof(VkSwapchainCounterCreateInfoEXT));
1415         parse_VkSwapchainCounterCreateInfoEXT("", pNextObj, *((VkSwapchainCounterCreateInfoEXT *)p));
1416     }
1417     break;
1418     case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO:
1419     {
1420         p = s_globalMem.allocate(sizeof(VkMemoryAllocateFlagsInfo));
1421         parse_VkMemoryAllocateFlagsInfo("", pNextObj, *((VkMemoryAllocateFlagsInfo *)p));
1422     }
1423     break;
1424     case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:
1425     {
1426         p = s_globalMem.allocate(sizeof(VkBindBufferMemoryDeviceGroupInfo));
1427         parse_VkBindBufferMemoryDeviceGroupInfo("", pNextObj, *((VkBindBufferMemoryDeviceGroupInfo *)p));
1428     }
1429     break;
1430     case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO:
1431     {
1432         p = s_globalMem.allocate(sizeof(VkBindImageMemoryDeviceGroupInfo));
1433         parse_VkBindImageMemoryDeviceGroupInfo("", pNextObj, *((VkBindImageMemoryDeviceGroupInfo *)p));
1434     }
1435     break;
1436     case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO:
1437     {
1438         p = s_globalMem.allocate(sizeof(VkDeviceGroupRenderPassBeginInfo));
1439         parse_VkDeviceGroupRenderPassBeginInfo("", pNextObj, *((VkDeviceGroupRenderPassBeginInfo *)p));
1440     }
1441     break;
1442     case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO:
1443     {
1444         p = s_globalMem.allocate(sizeof(VkDeviceGroupCommandBufferBeginInfo));
1445         parse_VkDeviceGroupCommandBufferBeginInfo("", pNextObj, *((VkDeviceGroupCommandBufferBeginInfo *)p));
1446     }
1447     break;
1448     case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO:
1449     {
1450         p = s_globalMem.allocate(sizeof(VkDeviceGroupSubmitInfo));
1451         parse_VkDeviceGroupSubmitInfo("", pNextObj, *((VkDeviceGroupSubmitInfo *)p));
1452     }
1453     break;
1454     case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR:
1455     {
1456         p = s_globalMem.allocate(sizeof(VkImageSwapchainCreateInfoKHR));
1457         parse_VkImageSwapchainCreateInfoKHR("", pNextObj, *((VkImageSwapchainCreateInfoKHR *)p));
1458     }
1459     break;
1460     case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR:
1461     {
1462         p = s_globalMem.allocate(sizeof(VkBindImageMemorySwapchainInfoKHR));
1463         parse_VkBindImageMemorySwapchainInfoKHR("", pNextObj, *((VkBindImageMemorySwapchainInfoKHR *)p));
1464     }
1465     break;
1466     case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR:
1467     {
1468         p = s_globalMem.allocate(sizeof(VkDeviceGroupPresentInfoKHR));
1469         parse_VkDeviceGroupPresentInfoKHR("", pNextObj, *((VkDeviceGroupPresentInfoKHR *)p));
1470     }
1471     break;
1472     case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO:
1473     {
1474         p = s_globalMem.allocate(sizeof(VkDeviceGroupDeviceCreateInfo));
1475         parse_VkDeviceGroupDeviceCreateInfo("", pNextObj, *((VkDeviceGroupDeviceCreateInfo *)p));
1476     }
1477     break;
1478     case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR:
1479     {
1480         p = s_globalMem.allocate(sizeof(VkDeviceGroupSwapchainCreateInfoKHR));
1481         parse_VkDeviceGroupSwapchainCreateInfoKHR("", pNextObj, *((VkDeviceGroupSwapchainCreateInfoKHR *)p));
1482     }
1483     break;
1484     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT:
1485     {
1486         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceDiscardRectanglePropertiesEXT));
1487         parse_VkPhysicalDeviceDiscardRectanglePropertiesEXT("", pNextObj,
1488                                                             *((VkPhysicalDeviceDiscardRectanglePropertiesEXT *)p));
1489     }
1490     break;
1491     case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT:
1492     {
1493         p = s_globalMem.allocate(sizeof(VkPipelineDiscardRectangleStateCreateInfoEXT));
1494         parse_VkPipelineDiscardRectangleStateCreateInfoEXT("", pNextObj,
1495                                                            *((VkPipelineDiscardRectangleStateCreateInfoEXT *)p));
1496     }
1497     break;
1498     case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO:
1499     {
1500         p = s_globalMem.allocate(sizeof(VkRenderPassInputAttachmentAspectCreateInfo));
1501         parse_VkRenderPassInputAttachmentAspectCreateInfo("", pNextObj,
1502                                                           *((VkRenderPassInputAttachmentAspectCreateInfo *)p));
1503     }
1504     break;
1505     case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR:
1506     {
1507         p = s_globalMem.allocate(sizeof(VkSharedPresentSurfaceCapabilitiesKHR));
1508         parse_VkSharedPresentSurfaceCapabilitiesKHR("", pNextObj, *((VkSharedPresentSurfaceCapabilitiesKHR *)p));
1509     }
1510     break;
1511     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES:
1512     {
1513         p = s_globalMem.allocate(sizeof(VkPhysicalDevice16BitStorageFeatures));
1514         parse_VkPhysicalDevice16BitStorageFeatures("", pNextObj, *((VkPhysicalDevice16BitStorageFeatures *)p));
1515     }
1516     break;
1517     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES:
1518     {
1519         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceSubgroupProperties));
1520         parse_VkPhysicalDeviceSubgroupProperties("", pNextObj, *((VkPhysicalDeviceSubgroupProperties *)p));
1521     }
1522     break;
1523     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES:
1524     {
1525         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures));
1526         parse_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
1527             "", pNextObj, *((VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *)p));
1528     }
1529     break;
1530     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES:
1531     {
1532         p = s_globalMem.allocate(sizeof(VkPhysicalDevicePointClippingProperties));
1533         parse_VkPhysicalDevicePointClippingProperties("", pNextObj, *((VkPhysicalDevicePointClippingProperties *)p));
1534     }
1535     break;
1536     case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
1537     {
1538         p = s_globalMem.allocate(sizeof(VkMemoryDedicatedRequirements));
1539         parse_VkMemoryDedicatedRequirements("", pNextObj, *((VkMemoryDedicatedRequirements *)p));
1540     }
1541     break;
1542     case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO:
1543     {
1544         p = s_globalMem.allocate(sizeof(VkMemoryDedicatedAllocateInfo));
1545         parse_VkMemoryDedicatedAllocateInfo("", pNextObj, *((VkMemoryDedicatedAllocateInfo *)p));
1546     }
1547     break;
1548     case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:
1549     {
1550         p = s_globalMem.allocate(sizeof(VkImageViewUsageCreateInfo));
1551         parse_VkImageViewUsageCreateInfo("", pNextObj, *((VkImageViewUsageCreateInfo *)p));
1552     }
1553     break;
1554     case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:
1555     {
1556         p = s_globalMem.allocate(sizeof(VkPipelineTessellationDomainOriginStateCreateInfo));
1557         parse_VkPipelineTessellationDomainOriginStateCreateInfo(
1558             "", pNextObj, *((VkPipelineTessellationDomainOriginStateCreateInfo *)p));
1559     }
1560     break;
1561     case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:
1562     {
1563         p = s_globalMem.allocate(sizeof(VkSamplerYcbcrConversionInfo));
1564         parse_VkSamplerYcbcrConversionInfo("", pNextObj, *((VkSamplerYcbcrConversionInfo *)p));
1565     }
1566     break;
1567     case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO:
1568     {
1569         p = s_globalMem.allocate(sizeof(VkBindImagePlaneMemoryInfo));
1570         parse_VkBindImagePlaneMemoryInfo("", pNextObj, *((VkBindImagePlaneMemoryInfo *)p));
1571     }
1572     break;
1573     case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO:
1574     {
1575         p = s_globalMem.allocate(sizeof(VkImagePlaneMemoryRequirementsInfo));
1576         parse_VkImagePlaneMemoryRequirementsInfo("", pNextObj, *((VkImagePlaneMemoryRequirementsInfo *)p));
1577     }
1578     break;
1579     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES:
1580     {
1581         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures));
1582         parse_VkPhysicalDeviceSamplerYcbcrConversionFeatures("", pNextObj,
1583                                                              *((VkPhysicalDeviceSamplerYcbcrConversionFeatures *)p));
1584     }
1585     break;
1586     case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES:
1587     {
1588         p = s_globalMem.allocate(sizeof(VkSamplerYcbcrConversionImageFormatProperties));
1589         parse_VkSamplerYcbcrConversionImageFormatProperties("", pNextObj,
1590                                                             *((VkSamplerYcbcrConversionImageFormatProperties *)p));
1591     }
1592     break;
1593     case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO:
1594     {
1595         p = s_globalMem.allocate(sizeof(VkProtectedSubmitInfo));
1596         parse_VkProtectedSubmitInfo("", pNextObj, *((VkProtectedSubmitInfo *)p));
1597     }
1598     break;
1599     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES:
1600     {
1601         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceProtectedMemoryFeatures));
1602         parse_VkPhysicalDeviceProtectedMemoryFeatures("", pNextObj, *((VkPhysicalDeviceProtectedMemoryFeatures *)p));
1603     }
1604     break;
1605     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES:
1606     {
1607         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceProtectedMemoryProperties));
1608         parse_VkPhysicalDeviceProtectedMemoryProperties("", pNextObj,
1609                                                         *((VkPhysicalDeviceProtectedMemoryProperties *)p));
1610     }
1611     break;
1612     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES:
1613     {
1614         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceSamplerFilterMinmaxProperties));
1615         parse_VkPhysicalDeviceSamplerFilterMinmaxProperties("", pNextObj,
1616                                                             *((VkPhysicalDeviceSamplerFilterMinmaxProperties *)p));
1617     }
1618     break;
1619     case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT:
1620     {
1621         p = s_globalMem.allocate(sizeof(VkSampleLocationsInfoEXT));
1622         parse_VkSampleLocationsInfoEXT("", pNextObj, *((VkSampleLocationsInfoEXT *)p));
1623     }
1624     break;
1625     case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT:
1626     {
1627         p = s_globalMem.allocate(sizeof(VkRenderPassSampleLocationsBeginInfoEXT));
1628         parse_VkRenderPassSampleLocationsBeginInfoEXT("", pNextObj, *((VkRenderPassSampleLocationsBeginInfoEXT *)p));
1629     }
1630     break;
1631     case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT:
1632     {
1633         p = s_globalMem.allocate(sizeof(VkPipelineSampleLocationsStateCreateInfoEXT));
1634         parse_VkPipelineSampleLocationsStateCreateInfoEXT("", pNextObj,
1635                                                           *((VkPipelineSampleLocationsStateCreateInfoEXT *)p));
1636     }
1637     break;
1638     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT:
1639     {
1640         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceSampleLocationsPropertiesEXT));
1641         parse_VkPhysicalDeviceSampleLocationsPropertiesEXT("", pNextObj,
1642                                                            *((VkPhysicalDeviceSampleLocationsPropertiesEXT *)p));
1643     }
1644     break;
1645     case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO:
1646     {
1647         p = s_globalMem.allocate(sizeof(VkSamplerReductionModeCreateInfo));
1648         parse_VkSamplerReductionModeCreateInfo("", pNextObj, *((VkSamplerReductionModeCreateInfo *)p));
1649     }
1650     break;
1651     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT:
1652     {
1653         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT));
1654         parse_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
1655             "", pNextObj, *((VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *)p));
1656     }
1657     break;
1658     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT:
1659     {
1660         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT));
1661         parse_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
1662             "", pNextObj, *((VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *)p));
1663     }
1664     break;
1665     case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT:
1666     {
1667         p = s_globalMem.allocate(sizeof(VkPipelineColorBlendAdvancedStateCreateInfoEXT));
1668         parse_VkPipelineColorBlendAdvancedStateCreateInfoEXT("", pNextObj,
1669                                                              *((VkPipelineColorBlendAdvancedStateCreateInfoEXT *)p));
1670     }
1671     break;
1672     case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO:
1673     {
1674         p = s_globalMem.allocate(sizeof(VkImageFormatListCreateInfo));
1675         parse_VkImageFormatListCreateInfo("", pNextObj, *((VkImageFormatListCreateInfo *)p));
1676     }
1677     break;
1678     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES:
1679     {
1680         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceMaintenance3Properties));
1681         parse_VkPhysicalDeviceMaintenance3Properties("", pNextObj, *((VkPhysicalDeviceMaintenance3Properties *)p));
1682     }
1683     break;
1684     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES:
1685     {
1686         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceShaderDrawParametersFeatures));
1687         parse_VkPhysicalDeviceShaderDrawParametersFeatures("", pNextObj,
1688                                                            *((VkPhysicalDeviceShaderDrawParametersFeatures *)p));
1689     }
1690     break;
1691     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES:
1692     {
1693         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceShaderFloat16Int8Features));
1694         parse_VkPhysicalDeviceShaderFloat16Int8Features("", pNextObj,
1695                                                         *((VkPhysicalDeviceShaderFloat16Int8Features *)p));
1696     }
1697     break;
1698     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES:
1699     {
1700         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceFloatControlsProperties));
1701         parse_VkPhysicalDeviceFloatControlsProperties("", pNextObj, *((VkPhysicalDeviceFloatControlsProperties *)p));
1702     }
1703     break;
1704     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES:
1705     {
1706         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceHostQueryResetFeatures));
1707         parse_VkPhysicalDeviceHostQueryResetFeatures("", pNextObj, *((VkPhysicalDeviceHostQueryResetFeatures *)p));
1708     }
1709     break;
1710     case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT:
1711     {
1712         p = s_globalMem.allocate(sizeof(VkDeviceQueueGlobalPriorityCreateInfoEXT));
1713         parse_VkDeviceQueueGlobalPriorityCreateInfoEXT("", pNextObj, *((VkDeviceQueueGlobalPriorityCreateInfoEXT *)p));
1714     }
1715     break;
1716     case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT:
1717     {
1718         p = s_globalMem.allocate(sizeof(VkDebugUtilsMessengerCreateInfoEXT));
1719         parse_VkDebugUtilsMessengerCreateInfoEXT("", pNextObj, *((VkDebugUtilsMessengerCreateInfoEXT *)p));
1720     }
1721     break;
1722     case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT:
1723     {
1724         p = s_globalMem.allocate(sizeof(VkImportMemoryHostPointerInfoEXT));
1725         parse_VkImportMemoryHostPointerInfoEXT("", pNextObj, *((VkImportMemoryHostPointerInfoEXT *)p));
1726     }
1727     break;
1728     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT:
1729     {
1730         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceExternalMemoryHostPropertiesEXT));
1731         parse_VkPhysicalDeviceExternalMemoryHostPropertiesEXT("", pNextObj,
1732                                                               *((VkPhysicalDeviceExternalMemoryHostPropertiesEXT *)p));
1733     }
1734     break;
1735     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT:
1736     {
1737         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceConservativeRasterizationPropertiesEXT));
1738         parse_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
1739             "", pNextObj, *((VkPhysicalDeviceConservativeRasterizationPropertiesEXT *)p));
1740     }
1741     break;
1742     case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT:
1743     {
1744         p = s_globalMem.allocate(sizeof(VkPipelineRasterizationConservativeStateCreateInfoEXT));
1745         parse_VkPipelineRasterizationConservativeStateCreateInfoEXT(
1746             "", pNextObj, *((VkPipelineRasterizationConservativeStateCreateInfoEXT *)p));
1747     }
1748     break;
1749     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES:
1750     {
1751         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceDescriptorIndexingFeatures));
1752         parse_VkPhysicalDeviceDescriptorIndexingFeatures("", pNextObj,
1753                                                          *((VkPhysicalDeviceDescriptorIndexingFeatures *)p));
1754     }
1755     break;
1756     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES:
1757     {
1758         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceDescriptorIndexingProperties));
1759         parse_VkPhysicalDeviceDescriptorIndexingProperties("", pNextObj,
1760                                                            *((VkPhysicalDeviceDescriptorIndexingProperties *)p));
1761     }
1762     break;
1763     case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO:
1764     {
1765         p = s_globalMem.allocate(sizeof(VkDescriptorSetLayoutBindingFlagsCreateInfo));
1766         parse_VkDescriptorSetLayoutBindingFlagsCreateInfo("", pNextObj,
1767                                                           *((VkDescriptorSetLayoutBindingFlagsCreateInfo *)p));
1768     }
1769     break;
1770     case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO:
1771     {
1772         p = s_globalMem.allocate(sizeof(VkDescriptorSetVariableDescriptorCountAllocateInfo));
1773         parse_VkDescriptorSetVariableDescriptorCountAllocateInfo(
1774             "", pNextObj, *((VkDescriptorSetVariableDescriptorCountAllocateInfo *)p));
1775     }
1776     break;
1777     case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT:
1778     {
1779         p = s_globalMem.allocate(sizeof(VkDescriptorSetVariableDescriptorCountLayoutSupport));
1780         parse_VkDescriptorSetVariableDescriptorCountLayoutSupport(
1781             "", pNextObj, *((VkDescriptorSetVariableDescriptorCountLayoutSupport *)p));
1782     }
1783     break;
1784     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES:
1785     {
1786         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceTimelineSemaphoreFeatures));
1787         parse_VkPhysicalDeviceTimelineSemaphoreFeatures("", pNextObj,
1788                                                         *((VkPhysicalDeviceTimelineSemaphoreFeatures *)p));
1789     }
1790     break;
1791     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES:
1792     {
1793         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceTimelineSemaphoreProperties));
1794         parse_VkPhysicalDeviceTimelineSemaphoreProperties("", pNextObj,
1795                                                           *((VkPhysicalDeviceTimelineSemaphoreProperties *)p));
1796     }
1797     break;
1798     case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO:
1799     {
1800         p = s_globalMem.allocate(sizeof(VkSemaphoreTypeCreateInfo));
1801         parse_VkSemaphoreTypeCreateInfo("", pNextObj, *((VkSemaphoreTypeCreateInfo *)p));
1802     }
1803     break;
1804     case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO:
1805     {
1806         p = s_globalMem.allocate(sizeof(VkTimelineSemaphoreSubmitInfo));
1807         parse_VkTimelineSemaphoreSubmitInfo("", pNextObj, *((VkTimelineSemaphoreSubmitInfo *)p));
1808     }
1809     break;
1810     case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT:
1811     {
1812         p = s_globalMem.allocate(sizeof(VkPipelineVertexInputDivisorStateCreateInfoEXT));
1813         parse_VkPipelineVertexInputDivisorStateCreateInfoEXT("", pNextObj,
1814                                                              *((VkPipelineVertexInputDivisorStateCreateInfoEXT *)p));
1815     }
1816     break;
1817     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT:
1818     {
1819         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT));
1820         parse_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
1821             "", pNextObj, *((VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *)p));
1822     }
1823     break;
1824     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:
1825     {
1826         p = s_globalMem.allocate(sizeof(VkPhysicalDevicePCIBusInfoPropertiesEXT));
1827         parse_VkPhysicalDevicePCIBusInfoPropertiesEXT("", pNextObj, *((VkPhysicalDevicePCIBusInfoPropertiesEXT *)p));
1828     }
1829     break;
1830     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES:
1831     {
1832         p = s_globalMem.allocate(sizeof(VkPhysicalDevice8BitStorageFeatures));
1833         parse_VkPhysicalDevice8BitStorageFeatures("", pNextObj, *((VkPhysicalDevice8BitStorageFeatures *)p));
1834     }
1835     break;
1836     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES:
1837     {
1838         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceVulkanMemoryModelFeatures));
1839         parse_VkPhysicalDeviceVulkanMemoryModelFeatures("", pNextObj,
1840                                                         *((VkPhysicalDeviceVulkanMemoryModelFeatures *)p));
1841     }
1842     break;
1843     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES:
1844     {
1845         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceShaderAtomicInt64Features));
1846         parse_VkPhysicalDeviceShaderAtomicInt64Features("", pNextObj,
1847                                                         *((VkPhysicalDeviceShaderAtomicInt64Features *)p));
1848     }
1849     break;
1850     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT:
1851     {
1852         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceShaderAtomicFloatFeaturesEXT));
1853         parse_VkPhysicalDeviceShaderAtomicFloatFeaturesEXT("", pNextObj,
1854                                                            *((VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *)p));
1855     }
1856     break;
1857     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT:
1858     {
1859         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT));
1860         parse_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
1861             "", pNextObj, *((VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *)p));
1862     }
1863     break;
1864     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES:
1865     {
1866         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceDepthStencilResolveProperties));
1867         parse_VkPhysicalDeviceDepthStencilResolveProperties("", pNextObj,
1868                                                             *((VkPhysicalDeviceDepthStencilResolveProperties *)p));
1869     }
1870     break;
1871     case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE:
1872     {
1873         p = s_globalMem.allocate(sizeof(VkSubpassDescriptionDepthStencilResolve));
1874         parse_VkSubpassDescriptionDepthStencilResolve("", pNextObj, *((VkSubpassDescriptionDepthStencilResolve *)p));
1875     }
1876     break;
1877     case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT:
1878     {
1879         p = s_globalMem.allocate(sizeof(VkImageViewASTCDecodeModeEXT));
1880         parse_VkImageViewASTCDecodeModeEXT("", pNextObj, *((VkImageViewASTCDecodeModeEXT *)p));
1881     }
1882     break;
1883     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT:
1884     {
1885         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceASTCDecodeFeaturesEXT));
1886         parse_VkPhysicalDeviceASTCDecodeFeaturesEXT("", pNextObj, *((VkPhysicalDeviceASTCDecodeFeaturesEXT *)p));
1887     }
1888     break;
1889     case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT:
1890     {
1891         p = s_globalMem.allocate(sizeof(VkDrmFormatModifierPropertiesListEXT));
1892         parse_VkDrmFormatModifierPropertiesListEXT("", pNextObj, *((VkDrmFormatModifierPropertiesListEXT *)p));
1893     }
1894     break;
1895     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT:
1896     {
1897         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceImageDrmFormatModifierInfoEXT));
1898         parse_VkPhysicalDeviceImageDrmFormatModifierInfoEXT("", pNextObj,
1899                                                             *((VkPhysicalDeviceImageDrmFormatModifierInfoEXT *)p));
1900     }
1901     break;
1902     case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT:
1903     {
1904         p = s_globalMem.allocate(sizeof(VkImageDrmFormatModifierListCreateInfoEXT));
1905         parse_VkImageDrmFormatModifierListCreateInfoEXT("", pNextObj,
1906                                                         *((VkImageDrmFormatModifierListCreateInfoEXT *)p));
1907     }
1908     break;
1909     case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT:
1910     {
1911         p = s_globalMem.allocate(sizeof(VkImageDrmFormatModifierExplicitCreateInfoEXT));
1912         parse_VkImageDrmFormatModifierExplicitCreateInfoEXT("", pNextObj,
1913                                                             *((VkImageDrmFormatModifierExplicitCreateInfoEXT *)p));
1914     }
1915     break;
1916     case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO:
1917     {
1918         p = s_globalMem.allocate(sizeof(VkImageStencilUsageCreateInfo));
1919         parse_VkImageStencilUsageCreateInfo("", pNextObj, *((VkImageStencilUsageCreateInfo *)p));
1920     }
1921     break;
1922     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES:
1923     {
1924         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceScalarBlockLayoutFeatures));
1925         parse_VkPhysicalDeviceScalarBlockLayoutFeatures("", pNextObj,
1926                                                         *((VkPhysicalDeviceScalarBlockLayoutFeatures *)p));
1927     }
1928     break;
1929     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES:
1930     {
1931         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceUniformBufferStandardLayoutFeatures));
1932         parse_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
1933             "", pNextObj, *((VkPhysicalDeviceUniformBufferStandardLayoutFeatures *)p));
1934     }
1935     break;
1936     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT:
1937     {
1938         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceDepthClipEnableFeaturesEXT));
1939         parse_VkPhysicalDeviceDepthClipEnableFeaturesEXT("", pNextObj,
1940                                                          *((VkPhysicalDeviceDepthClipEnableFeaturesEXT *)p));
1941     }
1942     break;
1943     case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT:
1944     {
1945         p = s_globalMem.allocate(sizeof(VkPipelineRasterizationDepthClipStateCreateInfoEXT));
1946         parse_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
1947             "", pNextObj, *((VkPipelineRasterizationDepthClipStateCreateInfoEXT *)p));
1948     }
1949     break;
1950     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT:
1951     {
1952         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceMemoryBudgetPropertiesEXT));
1953         parse_VkPhysicalDeviceMemoryBudgetPropertiesEXT("", pNextObj,
1954                                                         *((VkPhysicalDeviceMemoryBudgetPropertiesEXT *)p));
1955     }
1956     break;
1957     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES:
1958     {
1959         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceBufferDeviceAddressFeatures));
1960         parse_VkPhysicalDeviceBufferDeviceAddressFeatures("", pNextObj,
1961                                                           *((VkPhysicalDeviceBufferDeviceAddressFeatures *)p));
1962     }
1963     break;
1964     case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO:
1965     {
1966         p = s_globalMem.allocate(sizeof(VkBufferOpaqueCaptureAddressCreateInfo));
1967         parse_VkBufferOpaqueCaptureAddressCreateInfo("", pNextObj, *((VkBufferOpaqueCaptureAddressCreateInfo *)p));
1968     }
1969     break;
1970     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT:
1971     {
1972         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceImageViewImageFormatInfoEXT));
1973         parse_VkPhysicalDeviceImageViewImageFormatInfoEXT("", pNextObj,
1974                                                           *((VkPhysicalDeviceImageViewImageFormatInfoEXT *)p));
1975     }
1976     break;
1977     case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT:
1978     {
1979         p = s_globalMem.allocate(sizeof(VkFilterCubicImageViewImageFormatPropertiesEXT));
1980         parse_VkFilterCubicImageViewImageFormatPropertiesEXT("", pNextObj,
1981                                                              *((VkFilterCubicImageViewImageFormatPropertiesEXT *)p));
1982     }
1983     break;
1984     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES:
1985     {
1986         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceImagelessFramebufferFeatures));
1987         parse_VkPhysicalDeviceImagelessFramebufferFeatures("", pNextObj,
1988                                                            *((VkPhysicalDeviceImagelessFramebufferFeatures *)p));
1989     }
1990     break;
1991     case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO:
1992     {
1993         p = s_globalMem.allocate(sizeof(VkFramebufferAttachmentsCreateInfo));
1994         parse_VkFramebufferAttachmentsCreateInfo("", pNextObj, *((VkFramebufferAttachmentsCreateInfo *)p));
1995     }
1996     break;
1997     case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO:
1998     {
1999         p = s_globalMem.allocate(sizeof(VkRenderPassAttachmentBeginInfo));
2000         parse_VkRenderPassAttachmentBeginInfo("", pNextObj, *((VkRenderPassAttachmentBeginInfo *)p));
2001     }
2002     break;
2003     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT:
2004     {
2005         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT));
2006         parse_VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(
2007             "", pNextObj, *((VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT *)p));
2008     }
2009     break;
2010     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT:
2011     {
2012         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceYcbcrImageArraysFeaturesEXT));
2013         parse_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT("", pNextObj,
2014                                                           *((VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *)p));
2015     }
2016     break;
2017     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR:
2018     {
2019         p = s_globalMem.allocate(sizeof(VkPhysicalDevicePerformanceQueryFeaturesKHR));
2020         parse_VkPhysicalDevicePerformanceQueryFeaturesKHR("", pNextObj,
2021                                                           *((VkPhysicalDevicePerformanceQueryFeaturesKHR *)p));
2022     }
2023     break;
2024     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR:
2025     {
2026         p = s_globalMem.allocate(sizeof(VkPhysicalDevicePerformanceQueryPropertiesKHR));
2027         parse_VkPhysicalDevicePerformanceQueryPropertiesKHR("", pNextObj,
2028                                                             *((VkPhysicalDevicePerformanceQueryPropertiesKHR *)p));
2029     }
2030     break;
2031     case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR:
2032     {
2033         p = s_globalMem.allocate(sizeof(VkQueryPoolPerformanceCreateInfoKHR));
2034         parse_VkQueryPoolPerformanceCreateInfoKHR("", pNextObj, *((VkQueryPoolPerformanceCreateInfoKHR *)p));
2035     }
2036     break;
2037     case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR:
2038     {
2039         p = s_globalMem.allocate(sizeof(VkPerformanceQuerySubmitInfoKHR));
2040         parse_VkPerformanceQuerySubmitInfoKHR("", pNextObj, *((VkPerformanceQuerySubmitInfoKHR *)p));
2041     }
2042     break;
2043     case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR:
2044     {
2045         p = s_globalMem.allocate(sizeof(VkPerformanceQueryReservationInfoKHR));
2046         parse_VkPerformanceQueryReservationInfoKHR("", pNextObj, *((VkPerformanceQueryReservationInfoKHR *)p));
2047     }
2048     break;
2049     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR:
2050     {
2051         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceShaderClockFeaturesKHR));
2052         parse_VkPhysicalDeviceShaderClockFeaturesKHR("", pNextObj, *((VkPhysicalDeviceShaderClockFeaturesKHR *)p));
2053     }
2054     break;
2055     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT:
2056     {
2057         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceIndexTypeUint8FeaturesEXT));
2058         parse_VkPhysicalDeviceIndexTypeUint8FeaturesEXT("", pNextObj,
2059                                                         *((VkPhysicalDeviceIndexTypeUint8FeaturesEXT *)p));
2060     }
2061     break;
2062     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT:
2063     {
2064         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT));
2065         parse_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(
2066             "", pNextObj, *((VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *)p));
2067     }
2068     break;
2069     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES:
2070     {
2071         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures));
2072         parse_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
2073             "", pNextObj, *((VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *)p));
2074     }
2075     break;
2076     case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT:
2077     {
2078         p = s_globalMem.allocate(sizeof(VkAttachmentReferenceStencilLayout));
2079         parse_VkAttachmentReferenceStencilLayout("", pNextObj, *((VkAttachmentReferenceStencilLayout *)p));
2080     }
2081     break;
2082     case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT:
2083     {
2084         p = s_globalMem.allocate(sizeof(VkAttachmentDescriptionStencilLayout));
2085         parse_VkAttachmentDescriptionStencilLayout("", pNextObj, *((VkAttachmentDescriptionStencilLayout *)p));
2086     }
2087     break;
2088     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT:
2089     {
2090         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT));
2091         parse_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(
2092             "", pNextObj, *((VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT *)p));
2093     }
2094     break;
2095     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT:
2096     {
2097         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT));
2098         parse_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT("", pNextObj,
2099                                                               *((VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *)p));
2100     }
2101     break;
2102     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT:
2103     {
2104         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT));
2105         parse_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT(
2106             "", pNextObj, *((VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT *)p));
2107     }
2108     break;
2109     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT:
2110     {
2111         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceSubgroupSizeControlFeaturesEXT));
2112         parse_VkPhysicalDeviceSubgroupSizeControlFeaturesEXT("", pNextObj,
2113                                                              *((VkPhysicalDeviceSubgroupSizeControlFeaturesEXT *)p));
2114     }
2115     break;
2116     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT:
2117     {
2118         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceSubgroupSizeControlPropertiesEXT));
2119         parse_VkPhysicalDeviceSubgroupSizeControlPropertiesEXT(
2120             "", pNextObj, *((VkPhysicalDeviceSubgroupSizeControlPropertiesEXT *)p));
2121     }
2122     break;
2123     case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT:
2124     {
2125         p = s_globalMem.allocate(sizeof(VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT));
2126         parse_VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(
2127             "", pNextObj, *((VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT *)p));
2128     }
2129     break;
2130     case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO:
2131     {
2132         p = s_globalMem.allocate(sizeof(VkMemoryOpaqueCaptureAddressAllocateInfo));
2133         parse_VkMemoryOpaqueCaptureAddressAllocateInfo("", pNextObj, *((VkMemoryOpaqueCaptureAddressAllocateInfo *)p));
2134     }
2135     break;
2136     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT:
2137     {
2138         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceLineRasterizationFeaturesEXT));
2139         parse_VkPhysicalDeviceLineRasterizationFeaturesEXT("", pNextObj,
2140                                                            *((VkPhysicalDeviceLineRasterizationFeaturesEXT *)p));
2141     }
2142     break;
2143     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT:
2144     {
2145         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceLineRasterizationPropertiesEXT));
2146         parse_VkPhysicalDeviceLineRasterizationPropertiesEXT("", pNextObj,
2147                                                              *((VkPhysicalDeviceLineRasterizationPropertiesEXT *)p));
2148     }
2149     break;
2150     case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT:
2151     {
2152         p = s_globalMem.allocate(sizeof(VkPipelineRasterizationLineStateCreateInfoEXT));
2153         parse_VkPipelineRasterizationLineStateCreateInfoEXT("", pNextObj,
2154                                                             *((VkPipelineRasterizationLineStateCreateInfoEXT *)p));
2155     }
2156     break;
2157     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES:
2158     {
2159         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceVulkan11Features));
2160         parse_VkPhysicalDeviceVulkan11Features("", pNextObj, *((VkPhysicalDeviceVulkan11Features *)p));
2161     }
2162     break;
2163     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES:
2164     {
2165         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceVulkan11Properties));
2166         parse_VkPhysicalDeviceVulkan11Properties("", pNextObj, *((VkPhysicalDeviceVulkan11Properties *)p));
2167     }
2168     break;
2169     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES:
2170     {
2171         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceVulkan12Features));
2172         parse_VkPhysicalDeviceVulkan12Features("", pNextObj, *((VkPhysicalDeviceVulkan12Features *)p));
2173     }
2174     break;
2175     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES:
2176     {
2177         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceVulkan12Properties));
2178         parse_VkPhysicalDeviceVulkan12Properties("", pNextObj, *((VkPhysicalDeviceVulkan12Properties *)p));
2179     }
2180     break;
2181     case VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO:
2182     {
2183         p = s_globalMem.allocate(sizeof(VkFaultCallbackInfo));
2184         parse_VkFaultCallbackInfo("", pNextObj, *((VkFaultCallbackInfo *)p));
2185     }
2186     break;
2187     case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT:
2188     {
2189         p = s_globalMem.allocate(sizeof(VkSamplerCustomBorderColorCreateInfoEXT));
2190         parse_VkSamplerCustomBorderColorCreateInfoEXT("", pNextObj, *((VkSamplerCustomBorderColorCreateInfoEXT *)p));
2191     }
2192     break;
2193     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT:
2194     {
2195         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceCustomBorderColorPropertiesEXT));
2196         parse_VkPhysicalDeviceCustomBorderColorPropertiesEXT("", pNextObj,
2197                                                              *((VkPhysicalDeviceCustomBorderColorPropertiesEXT *)p));
2198     }
2199     break;
2200     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT:
2201     {
2202         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceCustomBorderColorFeaturesEXT));
2203         parse_VkPhysicalDeviceCustomBorderColorFeaturesEXT("", pNextObj,
2204                                                            *((VkPhysicalDeviceCustomBorderColorFeaturesEXT *)p));
2205     }
2206     break;
2207     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:
2208     {
2209         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT));
2210         parse_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT("", pNextObj,
2211                                                               *((VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *)p));
2212     }
2213     break;
2214     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT:
2215     {
2216         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT));
2217         parse_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(
2218             "", pNextObj, *((VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *)p));
2219     }
2220     break;
2221     case VK_STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO:
2222     {
2223         p = s_globalMem.allocate(sizeof(VkPipelineOfflineCreateInfo));
2224         parse_VkPipelineOfflineCreateInfo("", pNextObj, *((VkPipelineOfflineCreateInfo *)p));
2225     }
2226     break;
2227     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT:
2228     {
2229         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceRobustness2FeaturesEXT));
2230         parse_VkPhysicalDeviceRobustness2FeaturesEXT("", pNextObj, *((VkPhysicalDeviceRobustness2FeaturesEXT *)p));
2231     }
2232     break;
2233     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT:
2234     {
2235         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceRobustness2PropertiesEXT));
2236         parse_VkPhysicalDeviceRobustness2PropertiesEXT("", pNextObj, *((VkPhysicalDeviceRobustness2PropertiesEXT *)p));
2237     }
2238     break;
2239     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT:
2240     {
2241         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceImageRobustnessFeaturesEXT));
2242         parse_VkPhysicalDeviceImageRobustnessFeaturesEXT("", pNextObj,
2243                                                          *((VkPhysicalDeviceImageRobustnessFeaturesEXT *)p));
2244     }
2245     break;
2246     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT:
2247     {
2248         p = s_globalMem.allocate(sizeof(VkPhysicalDevice4444FormatsFeaturesEXT));
2249         parse_VkPhysicalDevice4444FormatsFeaturesEXT("", pNextObj, *((VkPhysicalDevice4444FormatsFeaturesEXT *)p));
2250     }
2251     break;
2252     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT:
2253     {
2254         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT));
2255         parse_VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(
2256             "", pNextObj, *((VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *)p));
2257     }
2258     break;
2259     case VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR:
2260     {
2261         p = s_globalMem.allocate(sizeof(VkFragmentShadingRateAttachmentInfoKHR));
2262         parse_VkFragmentShadingRateAttachmentInfoKHR("", pNextObj, *((VkFragmentShadingRateAttachmentInfoKHR *)p));
2263     }
2264     break;
2265     case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR:
2266     {
2267         p = s_globalMem.allocate(sizeof(VkPipelineFragmentShadingRateStateCreateInfoKHR));
2268         parse_VkPipelineFragmentShadingRateStateCreateInfoKHR("", pNextObj,
2269                                                               *((VkPipelineFragmentShadingRateStateCreateInfoKHR *)p));
2270     }
2271     break;
2272     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR:
2273     {
2274         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceFragmentShadingRateFeaturesKHR));
2275         parse_VkPhysicalDeviceFragmentShadingRateFeaturesKHR("", pNextObj,
2276                                                              *((VkPhysicalDeviceFragmentShadingRateFeaturesKHR *)p));
2277     }
2278     break;
2279     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR:
2280     {
2281         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceFragmentShadingRatePropertiesKHR));
2282         parse_VkPhysicalDeviceFragmentShadingRatePropertiesKHR(
2283             "", pNextObj, *((VkPhysicalDeviceFragmentShadingRatePropertiesKHR *)p));
2284     }
2285     break;
2286     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR:
2287     {
2288         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR));
2289         parse_VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR(
2290             "", pNextObj, *((VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR *)p));
2291     }
2292     break;
2293     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT:
2294     {
2295         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT));
2296         parse_VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(
2297             "", pNextObj, *((VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *)p));
2298     }
2299     break;
2300     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT:
2301     {
2302         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceColorWriteEnableFeaturesEXT));
2303         parse_VkPhysicalDeviceColorWriteEnableFeaturesEXT("", pNextObj,
2304                                                           *((VkPhysicalDeviceColorWriteEnableFeaturesEXT *)p));
2305     }
2306     break;
2307     case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT:
2308     {
2309         p = s_globalMem.allocate(sizeof(VkPipelineColorWriteCreateInfoEXT));
2310         parse_VkPipelineColorWriteCreateInfoEXT("", pNextObj, *((VkPipelineColorWriteCreateInfoEXT *)p));
2311     }
2312     break;
2313     case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR:
2314     {
2315         p = s_globalMem.allocate(sizeof(VkMemoryBarrier2KHR));
2316         parse_VkMemoryBarrier2KHR("", pNextObj, *((VkMemoryBarrier2KHR *)p));
2317     }
2318     break;
2319     case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV:
2320     {
2321         p = s_globalMem.allocate(sizeof(VkQueueFamilyCheckpointProperties2NV));
2322         parse_VkQueueFamilyCheckpointProperties2NV("", pNextObj, *((VkQueueFamilyCheckpointProperties2NV *)p));
2323     }
2324     break;
2325     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR:
2326     {
2327         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceSynchronization2FeaturesKHR));
2328         parse_VkPhysicalDeviceSynchronization2FeaturesKHR("", pNextObj,
2329                                                           *((VkPhysicalDeviceSynchronization2FeaturesKHR *)p));
2330     }
2331     break;
2332     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES:
2333     {
2334         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceVulkanSC10Properties));
2335         parse_VkPhysicalDeviceVulkanSC10Properties("", pNextObj, *((VkPhysicalDeviceVulkanSC10Properties *)p));
2336     }
2337     break;
2338     case VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO:
2339     {
2340         p = s_globalMem.allocate(sizeof(VkDeviceObjectReservationCreateInfo));
2341         parse_VkDeviceObjectReservationCreateInfo("", pNextObj, *((VkDeviceObjectReservationCreateInfo *)p));
2342     }
2343     break;
2344     case VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO:
2345     {
2346         p = s_globalMem.allocate(sizeof(VkCommandPoolMemoryReservationCreateInfo));
2347         parse_VkCommandPoolMemoryReservationCreateInfo("", pNextObj, *((VkCommandPoolMemoryReservationCreateInfo *)p));
2348     }
2349     break;
2350     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES:
2351     {
2352         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceVulkanSC10Features));
2353         parse_VkPhysicalDeviceVulkanSC10Features("", pNextObj, *((VkPhysicalDeviceVulkanSC10Features *)p));
2354     }
2355     break;
2356     case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT:
2357     {
2358         p = s_globalMem.allocate(sizeof(VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT));
2359         parse_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(
2360             "", pNextObj, *((VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *)p));
2361     }
2362     break;
2363     case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT:
2364     {
2365         p = s_globalMem.allocate(sizeof(VkDrmFormatModifierPropertiesList2EXT));
2366         parse_VkDrmFormatModifierPropertiesList2EXT("", pNextObj, *((VkDrmFormatModifierPropertiesList2EXT *)p));
2367     }
2368     break;
2369     default:
2370     { /** **/
2371     }
2372     }
2373     return p;
2374 }
2375 
parse_VkBool32(const char * s,Json::Value & obj,VkBool32 & o)2376 static void parse_VkBool32(const char *s, Json::Value &obj, VkBool32 &o)
2377 {
2378     std::string _res = obj.asString();
2379     //VkBool is represented as VK_TRUE and VK_FALSE in the json
2380     o = (_res == "VK_TRUE") ? (1) : (0);
2381 }
2382 
parse_VkDeviceAddress(const char * s,Json::Value & obj,VkDeviceAddress & o)2383 static void parse_VkDeviceAddress(const char *s, Json::Value &obj, VkDeviceAddress &o)
2384 {
2385     std::string _res = obj.asString();
2386     sscanf(_res.c_str(), "%" SCNu64, &o);
2387 }
2388 
parse_VkDeviceSize(const char * s,Json::Value & obj,VkDeviceSize & o)2389 static void parse_VkDeviceSize(const char *s, Json::Value &obj, VkDeviceSize &o)
2390 {
2391     std::string _res = obj.asString();
2392     if (_res == "VK_WHOLE_SIZE")
2393         o = (~0ULL);
2394     else
2395         sscanf(_res.c_str(), "%" SCNu64, &o);
2396 }
2397 
parse_VkFlags(const char * s,Json::Value & obj,VkFlags & o)2398 static void parse_VkFlags(const char *s, Json::Value &obj, VkFlags &o)
2399 {
2400     std::string _res = obj.asString();
2401     sscanf(_res.c_str(), "%u", &o);
2402 }
2403 
parse_VkSampleMask(const char * s,Json::Value & obj,VkSampleMask & o)2404 static void parse_VkSampleMask(const char *s, Json::Value &obj, VkSampleMask &o)
2405 {
2406     std::string _res = obj.asString();
2407     sscanf(_res.c_str(), "%u", &o);
2408 }
2409 
parse_VkBuffer(const char * s,Json::Value & obj,VkBuffer & o)2410 static void parse_VkBuffer(const char *s, Json::Value &obj, VkBuffer &o)
2411 {
2412     //     std::string _res = obj.asString();
2413 }
2414 
parse_VkImage(const char * s,Json::Value & obj,VkImage & o)2415 static void parse_VkImage(const char *s, Json::Value &obj, VkImage &o)
2416 {
2417     //     std::string _res = obj.asString();
2418 }
2419 
parse_VkInstance(const char * s,Json::Value & obj,VkInstance & o)2420 static void parse_VkInstance(const char *s, Json::Value &obj, VkInstance &o)
2421 {
2422     //     std::string _res = obj.asString();
2423 }
2424 
parse_VkPhysicalDevice(const char * s,Json::Value & obj,VkPhysicalDevice & o)2425 static void parse_VkPhysicalDevice(const char *s, Json::Value &obj, VkPhysicalDevice &o)
2426 {
2427     //     std::string _res = obj.asString();
2428 }
2429 
parse_VkDevice(const char * s,Json::Value & obj,VkDevice & o)2430 static void parse_VkDevice(const char *s, Json::Value &obj, VkDevice &o)
2431 {
2432     //     std::string _res = obj.asString();
2433 }
2434 
parse_VkQueue(const char * s,Json::Value & obj,VkQueue & o)2435 static void parse_VkQueue(const char *s, Json::Value &obj, VkQueue &o)
2436 {
2437     //     std::string _res = obj.asString();
2438 }
2439 
parse_VkSemaphore(const char * s,Json::Value & obj,VkSemaphore & o)2440 static void parse_VkSemaphore(const char *s, Json::Value &obj, VkSemaphore &o)
2441 {
2442     //     std::string _res = obj.asString();
2443 }
2444 
parse_VkCommandBuffer(const char * s,Json::Value & obj,VkCommandBuffer & o)2445 static void parse_VkCommandBuffer(const char *s, Json::Value &obj, VkCommandBuffer &o)
2446 {
2447     //     std::string _res = obj.asString();
2448 }
2449 
parse_VkFence(const char * s,Json::Value & obj,VkFence & o)2450 static void parse_VkFence(const char *s, Json::Value &obj, VkFence &o)
2451 {
2452     //     std::string _res = obj.asString();
2453 }
2454 
parse_VkDeviceMemory(const char * s,Json::Value & obj,VkDeviceMemory & o)2455 static void parse_VkDeviceMemory(const char *s, Json::Value &obj, VkDeviceMemory &o)
2456 {
2457     //     std::string _res = obj.asString();
2458 }
2459 
parse_VkEvent(const char * s,Json::Value & obj,VkEvent & o)2460 static void parse_VkEvent(const char *s, Json::Value &obj, VkEvent &o)
2461 {
2462     //     std::string _res = obj.asString();
2463 }
2464 
parse_VkQueryPool(const char * s,Json::Value & obj,VkQueryPool & o)2465 static void parse_VkQueryPool(const char *s, Json::Value &obj, VkQueryPool &o)
2466 {
2467     //     std::string _res = obj.asString();
2468 }
2469 
parse_VkBufferView(const char * s,Json::Value & obj,VkBufferView & o)2470 static void parse_VkBufferView(const char *s, Json::Value &obj, VkBufferView &o)
2471 {
2472     //     std::string _res = obj.asString();
2473 }
2474 
parse_VkImageView(const char * s,Json::Value & obj,VkImageView & o)2475 static void parse_VkImageView(const char *s, Json::Value &obj, VkImageView &o)
2476 {
2477     //     std::string _res = obj.asString();
2478 }
2479 
parse_VkShaderModule(const char * s,Json::Value & obj,VkShaderModule & o)2480 static void parse_VkShaderModule(const char *s, Json::Value &obj, VkShaderModule &o)
2481 {
2482     //     std::string _res = obj.asString();
2483 }
2484 
parse_VkPipelineCache(const char * s,Json::Value & obj,VkPipelineCache & o)2485 static void parse_VkPipelineCache(const char *s, Json::Value &obj, VkPipelineCache &o)
2486 {
2487     //     std::string _res = obj.asString();
2488 }
2489 
parse_VkPipelineLayout(const char * s,Json::Value & obj,VkPipelineLayout & o)2490 static void parse_VkPipelineLayout(const char *s, Json::Value &obj, VkPipelineLayout &o)
2491 {
2492     //     std::string _res = obj.asString();
2493 }
2494 
parse_VkPipeline(const char * s,Json::Value & obj,VkPipeline & o)2495 static void parse_VkPipeline(const char *s, Json::Value &obj, VkPipeline &o)
2496 {
2497     //     std::string _res = obj.asString();
2498 }
2499 
parse_VkRenderPass(const char * s,Json::Value & obj,VkRenderPass & o)2500 static void parse_VkRenderPass(const char *s, Json::Value &obj, VkRenderPass &o)
2501 {
2502     //     std::string _res = obj.asString();
2503 }
2504 
parse_VkDescriptorSetLayout(const char * s,Json::Value & obj,VkDescriptorSetLayout & o)2505 static void parse_VkDescriptorSetLayout(const char *s, Json::Value &obj, VkDescriptorSetLayout &o)
2506 {
2507     //     std::string _res = obj.asString();
2508 }
2509 
parse_VkSampler(const char * s,Json::Value & obj,VkSampler & o)2510 static void parse_VkSampler(const char *s, Json::Value &obj, VkSampler &o)
2511 {
2512     //     std::string _res = obj.asString();
2513 }
2514 
parse_VkDescriptorSet(const char * s,Json::Value & obj,VkDescriptorSet & o)2515 static void parse_VkDescriptorSet(const char *s, Json::Value &obj, VkDescriptorSet &o)
2516 {
2517     //     std::string _res = obj.asString();
2518 }
2519 
parse_VkDescriptorPool(const char * s,Json::Value & obj,VkDescriptorPool & o)2520 static void parse_VkDescriptorPool(const char *s, Json::Value &obj, VkDescriptorPool &o)
2521 {
2522     //     std::string _res = obj.asString();
2523 }
2524 
parse_VkFramebuffer(const char * s,Json::Value & obj,VkFramebuffer & o)2525 static void parse_VkFramebuffer(const char *s, Json::Value &obj, VkFramebuffer &o)
2526 {
2527     //     std::string _res = obj.asString();
2528 }
2529 
parse_VkCommandPool(const char * s,Json::Value & obj,VkCommandPool & o)2530 static void parse_VkCommandPool(const char *s, Json::Value &obj, VkCommandPool &o)
2531 {
2532     //     std::string _res = obj.asString();
2533 }
2534 
2535 static std::map<std::string, int> VkResult_map = {
2536     std::make_pair("VK_SUCCESS", 0),
2537     std::make_pair("VK_NOT_READY", 1),
2538     std::make_pair("VK_TIMEOUT", 2),
2539     std::make_pair("VK_EVENT_SET", 3),
2540     std::make_pair("VK_EVENT_RESET", 4),
2541     std::make_pair("VK_INCOMPLETE", 5),
2542     std::make_pair("VK_ERROR_OUT_OF_HOST_MEMORY", -1),
2543     std::make_pair("VK_ERROR_OUT_OF_DEVICE_MEMORY", -2),
2544     std::make_pair("VK_ERROR_INITIALIZATION_FAILED", -3),
2545     std::make_pair("VK_ERROR_DEVICE_LOST", -4),
2546     std::make_pair("VK_ERROR_MEMORY_MAP_FAILED", -5),
2547     std::make_pair("VK_ERROR_LAYER_NOT_PRESENT", -6),
2548     std::make_pair("VK_ERROR_EXTENSION_NOT_PRESENT", -7),
2549     std::make_pair("VK_ERROR_FEATURE_NOT_PRESENT", -8),
2550     std::make_pair("VK_ERROR_INCOMPATIBLE_DRIVER", -9),
2551     std::make_pair("VK_ERROR_TOO_MANY_OBJECTS", -10),
2552     std::make_pair("VK_ERROR_FORMAT_NOT_SUPPORTED", -11),
2553     std::make_pair("VK_ERROR_FRAGMENTED_POOL", -12),
2554     std::make_pair("VK_ERROR_UNKNOWN", -13),
2555     std::make_pair("VK_ERROR_OUT_OF_POOL_MEMORY", 1000069000),
2556     std::make_pair("VK_ERROR_INVALID_EXTERNAL_HANDLE", 1000072003),
2557     std::make_pair("VK_ERROR_FRAGMENTATION", 1000161000),
2558     std::make_pair("VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS", 1000257000),
2559     std::make_pair("VK_ERROR_VALIDATION_FAILED", 1000011001),
2560     std::make_pair("VK_ERROR_INVALID_PIPELINE_CACHE_DATA", 1000298000),
2561     std::make_pair("VK_ERROR_NO_PIPELINE_MATCH", 1000298001),
2562     std::make_pair("VK_ERROR_SURFACE_LOST_KHR", 1000000000),
2563     std::make_pair("VK_ERROR_NATIVE_WINDOW_IN_USE_KHR", 1000000001),
2564     std::make_pair("VK_SUBOPTIMAL_KHR", 1000001003),
2565     std::make_pair("VK_ERROR_OUT_OF_DATE_KHR", 1000001004),
2566     std::make_pair("VK_ERROR_INCOMPATIBLE_DISPLAY_KHR", 1000003001),
2567     std::make_pair("VK_ERROR_INVALID_SHADER_NV", 1000012000),
2568     std::make_pair("VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT", 1000158000),
2569     std::make_pair("VK_ERROR_NOT_PERMITTED_EXT", 1000174001),
2570     std::make_pair("VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT", 1000255000),
2571     std::make_pair("VK_THREAD_IDLE_KHR", 1000268000),
2572     std::make_pair("VK_THREAD_DONE_KHR", 1000268001),
2573     std::make_pair("VK_OPERATION_DEFERRED_KHR", 1000268002),
2574     std::make_pair("VK_OPERATION_NOT_DEFERRED_KHR", 1000268003),
2575     std::make_pair("VK_PIPELINE_COMPILE_REQUIRED_EXT", 1000297000),
2576 };
parse_VkResult(const char * s,Json::Value & obj,VkResult & o)2577 static void parse_VkResult(const char *s, Json::Value &obj, VkResult &o)
2578 {
2579     std::string _res = obj.asString();
2580     o                = (VkResult)VkResult_map[std::string(_res)];
2581 }
2582 
2583 static std::map<std::string, int> VkStructureType_map = {
2584     std::make_pair("VK_STRUCTURE_TYPE_APPLICATION_INFO", 0),
2585     std::make_pair("VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO", 1),
2586     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO", 2),
2587     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO", 3),
2588     std::make_pair("VK_STRUCTURE_TYPE_SUBMIT_INFO", 4),
2589     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO", 5),
2590     std::make_pair("VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE", 6),
2591     std::make_pair("VK_STRUCTURE_TYPE_FENCE_CREATE_INFO", 8),
2592     std::make_pair("VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO", 9),
2593     std::make_pair("VK_STRUCTURE_TYPE_EVENT_CREATE_INFO", 10),
2594     std::make_pair("VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO", 11),
2595     std::make_pair("VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO", 12),
2596     std::make_pair("VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO", 13),
2597     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO", 14),
2598     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO", 15),
2599     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO", 17),
2600     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO", 18),
2601     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO", 19),
2602     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO", 20),
2603     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO", 21),
2604     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO", 22),
2605     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO", 23),
2606     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO", 24),
2607     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO", 25),
2608     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO", 26),
2609     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO", 27),
2610     std::make_pair("VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO", 28),
2611     std::make_pair("VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO", 29),
2612     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO", 30),
2613     std::make_pair("VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO", 31),
2614     std::make_pair("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO", 32),
2615     std::make_pair("VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO", 33),
2616     std::make_pair("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO", 34),
2617     std::make_pair("VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET", 35),
2618     std::make_pair("VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET", 36),
2619     std::make_pair("VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO", 37),
2620     std::make_pair("VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO", 38),
2621     std::make_pair("VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO", 39),
2622     std::make_pair("VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO", 40),
2623     std::make_pair("VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO", 41),
2624     std::make_pair("VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO", 42),
2625     std::make_pair("VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO", 43),
2626     std::make_pair("VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER", 44),
2627     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER", 45),
2628     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_BARRIER", 46),
2629     std::make_pair("VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO", 47),
2630     std::make_pair("VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO", 48),
2631     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES", 1000094000),
2632     std::make_pair("VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO", 1000157000),
2633     std::make_pair("VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO", 1000157001),
2634     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES", 1000083000),
2635     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS", 1000127000),
2636     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO", 1000127001),
2637     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO", 1000060000),
2638     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO", 1000060003),
2639     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO", 1000060004),
2640     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO", 1000060005),
2641     std::make_pair("VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO", 1000060013),
2642     std::make_pair("VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO", 1000060014),
2643     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES", 1000070000),
2644     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO", 1000070001),
2645     std::make_pair("VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2", 1000146000),
2646     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2", 1000146001),
2647     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2", 1000146003),
2648     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2", 1000059000),
2649     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2", 1000059001),
2650     std::make_pair("VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2", 1000059002),
2651     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2", 1000059003),
2652     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2", 1000059004),
2653     std::make_pair("VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2", 1000059005),
2654     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2", 1000059006),
2655     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES", 1000117000),
2656     std::make_pair("VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO", 1000117001),
2657     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO", 1000117002),
2658     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO", 1000117003),
2659     std::make_pair("VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO", 1000053000),
2660     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES", 1000053001),
2661     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES", 1000053002),
2662     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES", 1000120000),
2663     std::make_pair("VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO", 1000145000),
2664     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES", 1000145001),
2665     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES", 1000145002),
2666     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2", 1000145003),
2667     std::make_pair("VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO", 1000156000),
2668     std::make_pair("VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO", 1000156001),
2669     std::make_pair("VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO", 1000156002),
2670     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO", 1000156003),
2671     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES", 1000156004),
2672     std::make_pair("VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES", 1000156005),
2673     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO", 1000071000),
2674     std::make_pair("VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES", 1000071001),
2675     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO", 1000071002),
2676     std::make_pair("VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES", 1000071003),
2677     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES", 1000071004),
2678     std::make_pair("VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO", 1000072000),
2679     std::make_pair("VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO", 1000072001),
2680     std::make_pair("VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO", 1000072002),
2681     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO", 1000112000),
2682     std::make_pair("VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES", 1000112001),
2683     std::make_pair("VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO", 1000113000),
2684     std::make_pair("VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO", 1000077000),
2685     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO", 1000076000),
2686     std::make_pair("VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES", 1000076001),
2687     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES", 1000168000),
2688     std::make_pair("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT", 1000168001),
2689     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES", 1000063000),
2690     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES", 49),
2691     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES", 50),
2692     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES", 51),
2693     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES", 52),
2694     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO", 1000147000),
2695     std::make_pair("VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2", 1000109000),
2696     std::make_pair("VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2", 1000109001),
2697     std::make_pair("VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2", 1000109002),
2698     std::make_pair("VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2", 1000109003),
2699     std::make_pair("VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2", 1000109004),
2700     std::make_pair("VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO", 1000109005),
2701     std::make_pair("VK_STRUCTURE_TYPE_SUBPASS_END_INFO", 1000109006),
2702     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES", 1000177000),
2703     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES", 1000196000),
2704     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES", 1000180000),
2705     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES", 1000082000),
2706     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES", 1000197000),
2707     std::make_pair("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO", 1000161000),
2708     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES", 1000161001),
2709     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES", 1000161002),
2710     std::make_pair("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO", 1000161003),
2711     std::make_pair("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT", 1000161004),
2712     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES", 1000199000),
2713     std::make_pair("VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE", 1000199001),
2714     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES", 1000221000),
2715     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO", 1000246000),
2716     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES", 1000130000),
2717     std::make_pair("VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO", 1000130001),
2718     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES", 1000211000),
2719     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES", 1000108000),
2720     std::make_pair("VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO", 1000108001),
2721     std::make_pair("VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO", 1000108002),
2722     std::make_pair("VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO", 1000108003),
2723     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES", 1000253000),
2724     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES", 1000175000),
2725     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES", 1000241000),
2726     std::make_pair("VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT", 1000241001),
2727     std::make_pair("VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT", 1000241002),
2728     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES", 1000261000),
2729     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES", 1000207000),
2730     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES", 1000207001),
2731     std::make_pair("VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO", 1000207002),
2732     std::make_pair("VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO", 1000207003),
2733     std::make_pair("VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO", 1000207004),
2734     std::make_pair("VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO", 1000207005),
2735     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES", 1000257000),
2736     std::make_pair("VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO", 1000244001),
2737     std::make_pair("VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO", 1000257002),
2738     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO", 1000257003),
2739     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO", 1000257004),
2740     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES", 1000298000),
2741     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES", 1000298001),
2742     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO", 1000298002),
2743     std::make_pair("VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO", 1000298003),
2744     std::make_pair("VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION", 1000298004),
2745     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE", 1000298005),
2746     std::make_pair("VK_STRUCTURE_TYPE_FAULT_DATA", 1000298007),
2747     std::make_pair("VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO", 1000298008),
2748     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO", 1000298010),
2749     std::make_pair("VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR", 1000001000),
2750     std::make_pair("VK_STRUCTURE_TYPE_PRESENT_INFO_KHR", 1000001001),
2751     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR", 1000060007),
2752     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR", 1000060008),
2753     std::make_pair("VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR", 1000060009),
2754     std::make_pair("VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR", 1000060010),
2755     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR", 1000060011),
2756     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR", 1000060012),
2757     std::make_pair("VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR", 1000002000),
2758     std::make_pair("VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR", 1000002001),
2759     std::make_pair("VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR", 1000003000),
2760     std::make_pair("VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR", 1000004000),
2761     std::make_pair("VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR", 1000005000),
2762     std::make_pair("VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR", 1000006000),
2763     std::make_pair("VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR", 1000008000),
2764     std::make_pair("VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR", 1000009000),
2765     std::make_pair("VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID", 1000010000),
2766     std::make_pair("VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID", 1000010001),
2767     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID", 1000010002),
2768     std::make_pair("VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT", 1000011000),
2769     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD", 1000018000),
2770     std::make_pair("VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT", 1000022000),
2771     std::make_pair("VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT", 1000022001),
2772     std::make_pair("VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT", 1000022002),
2773     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR", 1000023000),
2774     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR", 1000023001),
2775     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR", 1000023002),
2776     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR", 1000023003),
2777     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR", 1000023004),
2778     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR", 1000023005),
2779     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR", 1000023006),
2780     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR", 1000023007),
2781     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR", 1000023008),
2782     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR", 1000023009),
2783     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR", 1000023010),
2784     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR", 1000023011),
2785     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR", 1000023012),
2786     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR", 1000023013),
2787     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR", 1000023014),
2788     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR", 1000023015),
2789     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR", 1000024000),
2790     std::make_pair("VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV", 1000026000),
2791     std::make_pair("VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV", 1000026001),
2792     std::make_pair("VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV", 1000026002),
2793     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT", 1000028000),
2794     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT", 1000028001),
2795     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT", 1000028002),
2796     std::make_pair("VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX", 1000029000),
2797     std::make_pair("VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX", 1000029001),
2798     std::make_pair("VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX", 1000029002),
2799     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX", 1000030000),
2800     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX", 1000030001),
2801     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT", 1000038000),
2802     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT", 1000038001),
2803     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT", 1000038002),
2804     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT", 1000038003),
2805     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT", 1000038004),
2806     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT", 1000038005),
2807     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT", 1000038006),
2808     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT", 1000038007),
2809     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT", 1000038008),
2810     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT", 1000038009),
2811     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT", 1000038010),
2812     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT", 1000039000),
2813     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT", 1000039001),
2814     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT", 1000039002),
2815     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT", 1000039003),
2816     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT", 1000039004),
2817     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT", 1000039005),
2818     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_EXT", 1000039006),
2819     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT", 1000039007),
2820     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT", 1000039008),
2821     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT", 1000039009),
2822     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT", 1000039010),
2823     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT", 1000039011),
2824     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT", 1000040000),
2825     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT", 1000040001),
2826     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT", 1000040002),
2827     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT", 1000040003),
2828     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT", 1000040004),
2829     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT", 1000040005),
2830     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT", 1000040006),
2831     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT", 1000040007),
2832     std::make_pair("VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD", 1000041000),
2833     std::make_pair("VK_STRUCTURE_TYPE_RENDERING_INFO_KHR", 1000044000),
2834     std::make_pair("VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR", 1000044001),
2835     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR", 1000044002),
2836     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR", 1000044003),
2837     std::make_pair("VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR", 1000044004),
2838     std::make_pair("VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR", 1000044006),
2839     std::make_pair("VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT", 1000044007),
2840     std::make_pair("VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD", 1000044008),
2841     std::make_pair("VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX", 1000044009),
2842     std::make_pair("VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP", 1000049000),
2843     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV", 1000050000),
2844     std::make_pair("VK_STRUCTURE_TYPE_PRIVATE_VENDOR_INFO_RESERVED_OFFSET_0_NV", 1000051000),
2845     std::make_pair("VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV", 1000056000),
2846     std::make_pair("VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV", 1000056001),
2847     std::make_pair("VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV", 1000057000),
2848     std::make_pair("VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV", 1000057001),
2849     std::make_pair("VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV", 1000058000),
2850     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR", 1000060007),
2851     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR", 1000060008),
2852     std::make_pair("VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR", 1000060009),
2853     std::make_pair("VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR", 1000060010),
2854     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR", 1000060011),
2855     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR", 1000060012),
2856     std::make_pair("VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT", 1000061000),
2857     std::make_pair("VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN", 1000062000),
2858     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT", 1000066000),
2859     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT", 1000067000),
2860     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT", 1000067001),
2861     std::make_pair("VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR", 1000073000),
2862     std::make_pair("VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR", 1000073001),
2863     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR", 1000073002),
2864     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR", 1000073003),
2865     std::make_pair("VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR", 1000074000),
2866     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR", 1000074001),
2867     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR", 1000074002),
2868     std::make_pair("VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR", 1000075000),
2869     std::make_pair("VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR", 1000078000),
2870     std::make_pair("VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR", 1000078001),
2871     std::make_pair("VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR", 1000078002),
2872     std::make_pair("VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR", 1000078003),
2873     std::make_pair("VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR", 1000079000),
2874     std::make_pair("VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR", 1000079001),
2875     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR", 1000080000),
2876     std::make_pair("VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT", 1000081000),
2877     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT", 1000081001),
2878     std::make_pair("VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT", 1000081002),
2879     std::make_pair("VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR", 1000084000),
2880     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV", 1000087000),
2881     std::make_pair("VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT", 1000090000),
2882     std::make_pair("VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT", 1000091000),
2883     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT", 1000091001),
2884     std::make_pair("VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT", 1000091002),
2885     std::make_pair("VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT", 1000091003),
2886     std::make_pair("VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE", 1000092000),
2887     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX", 1000097000),
2888     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV", 1000098000),
2889     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT", 1000099000),
2890     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT", 1000099001),
2891     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT", 1000101000),
2892     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT", 1000101001),
2893     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT", 1000102000),
2894     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT", 1000102001),
2895     std::make_pair("VK_STRUCTURE_TYPE_HDR_METADATA_EXT", 1000105000),
2896     std::make_pair("VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR", 1000111000),
2897     std::make_pair("VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR", 1000114000),
2898     std::make_pair("VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR", 1000114001),
2899     std::make_pair("VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR", 1000114002),
2900     std::make_pair("VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR", 1000115000),
2901     std::make_pair("VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR", 1000115001),
2902     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR", 1000116000),
2903     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR", 1000116001),
2904     std::make_pair("VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR", 1000116002),
2905     std::make_pair("VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR", 1000116003),
2906     std::make_pair("VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR", 1000116004),
2907     std::make_pair("VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR", 1000116005),
2908     std::make_pair("VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR", 1000116006),
2909     std::make_pair("VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR", 1000116007),
2910     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR", 1000119000),
2911     std::make_pair("VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR", 1000119001),
2912     std::make_pair("VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR", 1000119002),
2913     std::make_pair("VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR", 1000121000),
2914     std::make_pair("VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR", 1000121001),
2915     std::make_pair("VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR", 1000121002),
2916     std::make_pair("VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR", 1000121003),
2917     std::make_pair("VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR", 1000121004),
2918     std::make_pair("VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK", 1000122000),
2919     std::make_pair("VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK", 1000123000),
2920     std::make_pair("VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT", 1000128000),
2921     std::make_pair("VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT", 1000128001),
2922     std::make_pair("VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT", 1000128002),
2923     std::make_pair("VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT", 1000128003),
2924     std::make_pair("VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT", 1000128004),
2925     std::make_pair("VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID", 1000129000),
2926     std::make_pair("VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID", 1000129001),
2927     std::make_pair("VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID", 1000129002),
2928     std::make_pair("VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID", 1000129003),
2929     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID", 1000129004),
2930     std::make_pair("VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID", 1000129005),
2931     std::make_pair("VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID", 1000129006),
2932     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT", 1000138000),
2933     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT", 1000138001),
2934     std::make_pair("VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT", 1000138002),
2935     std::make_pair("VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT", 1000138003),
2936     std::make_pair("VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT", 1000143000),
2937     std::make_pair("VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT", 1000143001),
2938     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT", 1000143002),
2939     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT", 1000143003),
2940     std::make_pair("VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT", 1000143004),
2941     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT", 1000148000),
2942     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT", 1000148001),
2943     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT", 1000148002),
2944     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV", 1000149000),
2945     std::make_pair("VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR", 1000150007),
2946     std::make_pair("VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR", 1000150000),
2947     std::make_pair("VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR", 1000150002),
2948     std::make_pair("VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR", 1000150003),
2949     std::make_pair("VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR", 1000150004),
2950     std::make_pair("VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR", 1000150005),
2951     std::make_pair("VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR", 1000150006),
2952     std::make_pair("VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR", 1000150009),
2953     std::make_pair("VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR", 1000150010),
2954     std::make_pair("VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR", 1000150011),
2955     std::make_pair("VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR", 1000150012),
2956     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR", 1000150013),
2957     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR", 1000150014),
2958     std::make_pair("VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR", 1000150017),
2959     std::make_pair("VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR", 1000150020),
2960     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR", 1000347000),
2961     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR", 1000347001),
2962     std::make_pair("VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR", 1000150015),
2963     std::make_pair("VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR", 1000150016),
2964     std::make_pair("VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR", 1000150018),
2965     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR", 1000348013),
2966     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV", 1000152000),
2967     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV", 1000154000),
2968     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV", 1000154001),
2969     std::make_pair("VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT", 1000158000),
2970     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT", 1000158002),
2971     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT", 1000158003),
2972     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT", 1000158004),
2973     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT", 1000158005),
2974     std::make_pair("VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT", 1000158006),
2975     std::make_pair("VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT", 1000160000),
2976     std::make_pair("VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT", 1000160001),
2977     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR", 1000163000),
2978     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR", 1000163001),
2979     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV", 1000164000),
2980     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV", 1000164001),
2981     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV", 1000164002),
2982     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV", 1000164005),
2983     std::make_pair("VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV", 1000165000),
2984     std::make_pair("VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV", 1000165001),
2985     std::make_pair("VK_STRUCTURE_TYPE_GEOMETRY_NV", 1000165003),
2986     std::make_pair("VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV", 1000165004),
2987     std::make_pair("VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV", 1000165005),
2988     std::make_pair("VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV", 1000165006),
2989     std::make_pair("VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV", 1000165007),
2990     std::make_pair("VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV", 1000165008),
2991     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV", 1000165009),
2992     std::make_pair("VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV", 1000165011),
2993     std::make_pair("VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV", 1000165012),
2994     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV", 1000166000),
2995     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV", 1000166001),
2996     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT", 1000170000),
2997     std::make_pair("VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT", 1000170001),
2998     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT", 1000174000),
2999     std::make_pair("VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT", 1000178000),
3000     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT", 1000178001),
3001     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT", 1000178002),
3002     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR", 1000181000),
3003     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD", 1000183000),
3004     std::make_pair("VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT", 1000184000),
3005     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD", 1000185000),
3006     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT", 1000187000),
3007     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT", 1000187001),
3008     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT", 1000187002),
3009     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT", 1000187003),
3010     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT", 1000187004),
3011     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT", 1000187005),
3012     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT", 1000187006),
3013     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD", 1000189000),
3014     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT", 1000190000),
3015     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT", 1000190001),
3016     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT", 1000190002),
3017     std::make_pair("VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP", 1000191000),
3018     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT", 1000192000),
3019     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV", 1000201000),
3020     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV", 1000202000),
3021     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV", 1000202001),
3022     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV", 1000203000),
3023     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV", 1000204000),
3024     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV", 1000205000),
3025     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV", 1000205002),
3026     std::make_pair("VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV", 1000206000),
3027     std::make_pair("VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV", 1000206001),
3028     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL", 1000209000),
3029     std::make_pair("VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL", 1000210000),
3030     std::make_pair("VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL", 1000210001),
3031     std::make_pair("VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL", 1000210002),
3032     std::make_pair("VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL", 1000210003),
3033     std::make_pair("VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL", 1000210004),
3034     std::make_pair("VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL", 1000210005),
3035     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT", 1000212000),
3036     std::make_pair("VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD", 1000213000),
3037     std::make_pair("VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD", 1000213001),
3038     std::make_pair("VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA", 1000214000),
3039     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR", 1000215000),
3040     std::make_pair("VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT", 1000217000),
3041     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT", 1000218000),
3042     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT", 1000218001),
3043     std::make_pair("VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT", 1000218002),
3044     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT", 1000225000),
3045     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT", 1000225001),
3046     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT", 1000225002),
3047     std::make_pair("VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR", 1000226000),
3048     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR", 1000226001),
3049     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR", 1000226002),
3050     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR", 1000226003),
3051     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR", 1000226004),
3052     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD", 1000227000),
3053     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD", 1000229000),
3054     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT", 1000234000),
3055     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT", 1000237000),
3056     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT", 1000238000),
3057     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT", 1000238001),
3058     std::make_pair("VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR", 1000239000),
3059     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV", 1000240000),
3060     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT", 1000244000),
3061     std::make_pair("VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT", 1000244002),
3062     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT", 1000245000),
3063     std::make_pair("VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT", 1000247000),
3064     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR", 1000248000),
3065     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV", 1000249000),
3066     std::make_pair("VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV", 1000249001),
3067     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV", 1000249002),
3068     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV", 1000250000),
3069     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV", 1000250001),
3070     std::make_pair("VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV", 1000250002),
3071     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT", 1000251000),
3072     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT", 1000252000),
3073     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT", 1000254000),
3074     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT", 1000254001),
3075     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT", 1000254002),
3076     std::make_pair("VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT", 1000255000),
3077     std::make_pair("VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT", 1000255002),
3078     std::make_pair("VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT", 1000255001),
3079     std::make_pair("VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT", 1000256000),
3080     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT", 1000259000),
3081     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT", 1000259001),
3082     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT", 1000259002),
3083     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT", 1000260000),
3084     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT", 1000265000),
3085     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT", 1000267000),
3086     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR", 1000269000),
3087     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR", 1000269001),
3088     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR", 1000269002),
3089     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR", 1000269003),
3090     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR", 1000269004),
3091     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR", 1000269005),
3092     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT", 1000273000),
3093     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT", 1000276000),
3094     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV", 1000277000),
3095     std::make_pair("VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV", 1000277001),
3096     std::make_pair("VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV", 1000277002),
3097     std::make_pair("VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV", 1000277003),
3098     std::make_pair("VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV", 1000277004),
3099     std::make_pair("VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV", 1000277005),
3100     std::make_pair("VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV", 1000277006),
3101     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV", 1000277007),
3102     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV", 1000278000),
3103     std::make_pair("VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV", 1000278001),
3104     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR", 1000280000),
3105     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR", 1000280001),
3106     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT", 1000281000),
3107     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT", 1000281001),
3108     std::make_pair("VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM", 1000282000),
3109     std::make_pair("VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM", 1000282001),
3110     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT", 1000284000),
3111     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT", 1000284001),
3112     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT", 1000284002),
3113     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT", 1000286000),
3114     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT", 1000286001),
3115     std::make_pair("VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT", 1000287000),
3116     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT", 1000287001),
3117     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT", 1000287002),
3118     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR", 1000290000),
3119     std::make_pair("VK_STRUCTURE_TYPE_PRESENT_ID_KHR", 1000294000),
3120     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR", 1000294001),
3121     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT", 1000295000),
3122     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT", 1000295001),
3123     std::make_pair("VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT", 1000295002),
3124     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT", 1000297000),
3125     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR", 1000299000),
3126     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR", 1000299001),
3127     std::make_pair("VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR", 1000299002),
3128     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV", 1000300000),
3129     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV", 1000300001),
3130     std::make_pair("VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR", 1000308000),
3131     std::make_pair("VK_STRUCTURE_TYPE_RESERVED_QCOM", 1000309000),
3132     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR", 1000314000),
3133     std::make_pair("VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR", 1000314001),
3134     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR", 1000314002),
3135     std::make_pair("VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR", 1000314003),
3136     std::make_pair("VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR", 1000314004),
3137     std::make_pair("VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR", 1000314005),
3138     std::make_pair("VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR", 1000314006),
3139     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR", 1000314007),
3140     std::make_pair("VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV", 1000314008),
3141     std::make_pair("VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV", 1000314009),
3142     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR", 1000323000),
3143     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR", 1000325000),
3144     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV", 1000326000),
3145     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV", 1000326001),
3146     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV", 1000326002),
3147     std::make_pair("VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV", 1000327000),
3148     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV", 1000327001),
3149     std::make_pair("VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV", 1000327002),
3150     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT", 1000330000),
3151     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT", 1000332000),
3152     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT", 1000332001),
3153     std::make_pair("VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM", 1000333000),
3154     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT", 1000335000),
3155     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR", 1000336000),
3156     std::make_pair("VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR", 1000337000),
3157     std::make_pair("VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR", 1000337001),
3158     std::make_pair("VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR", 1000337002),
3159     std::make_pair("VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR", 1000337003),
3160     std::make_pair("VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR", 1000337004),
3161     std::make_pair("VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR", 1000337005),
3162     std::make_pair("VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR", 1000337006),
3163     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR", 1000337007),
3164     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR", 1000337008),
3165     std::make_pair("VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR", 1000337009),
3166     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR", 1000337010),
3167     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT", 1000340000),
3168     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM", 1000342000),
3169     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT", 1000344000),
3170     std::make_pair("VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT", 1000346000),
3171     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE", 1000351000),
3172     std::make_pair("VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE", 1000351002),
3173     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT", 1000352000),
3174     std::make_pair("VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT", 1000352001),
3175     std::make_pair("VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT", 1000352002),
3176     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT", 1000353000),
3177     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT", 1000355000),
3178     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT", 1000355001),
3179     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT", 1000356000),
3180     std::make_pair("VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR", 1000360000),
3181     std::make_pair("VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA", 1000364000),
3182     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA", 1000364001),
3183     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA", 1000364002),
3184     std::make_pair("VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA", 1000365000),
3185     std::make_pair("VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA", 1000365001),
3186     std::make_pair("VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA", 1000366000),
3187     std::make_pair("VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA", 1000366001),
3188     std::make_pair("VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA", 1000366002),
3189     std::make_pair("VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA", 1000366003),
3190     std::make_pair("VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA", 1000366004),
3191     std::make_pair("VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA", 1000366005),
3192     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA", 1000366006),
3193     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA", 1000366007),
3194     std::make_pair("VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA", 1000366008),
3195     std::make_pair("VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA", 1000366009),
3196     std::make_pair("VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI", 1000369000),
3197     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI", 1000369001),
3198     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI", 1000369002),
3199     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI", 1000370000),
3200     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV", 1000371000),
3201     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV", 1000371001),
3202     std::make_pair("VK_STRUCTURE_TYPE_IMPORT_FENCE_SCI_SYNC_INFO_NV", 1000373000),
3203     std::make_pair("VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV", 1000373001),
3204     std::make_pair("VK_STRUCTURE_TYPE_FENCE_GET_SCI_SYNC_INFO_NV", 1000373002),
3205     std::make_pair("VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV", 1000373003),
3206     std::make_pair("VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV", 1000373004),
3207     std::make_pair("VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV", 1000373005),
3208     std::make_pair("VK_STRUCTURE_TYPE_SEMAPHORE_GET_SCI_SYNC_INFO_NV", 1000373006),
3209     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV", 1000373007),
3210     std::make_pair("VK_STRUCTURE_TYPE_IMPORT_MEMORY_SCI_BUF_INFO_NV", 1000374000),
3211     std::make_pair("VK_STRUCTURE_TYPE_EXPORT_MEMORY_SCI_BUF_INFO_NV", 1000374001),
3212     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_GET_SCI_BUF_INFO_NV", 1000374002),
3213     std::make_pair("VK_STRUCTURE_TYPE_MEMORY_SCI_BUF_PROPERTIES_NV", 1000374003),
3214     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV", 1000374004),
3215     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT", 1000377000),
3216     std::make_pair("VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX", 1000378000),
3217     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT", 1000381000),
3218     std::make_pair("VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT", 1000381001),
3219     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT", 1000388000),
3220     std::make_pair("VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT", 1000388001),
3221     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT", 1000391000),
3222     std::make_pair("VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT", 1000391001),
3223     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT", 1000392000),
3224     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT", 1000392001),
3225     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT", 1000411000),
3226     std::make_pair("VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT", 1000411001),
3227     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT", 1000412000),
3228     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR", 1000413000),
3229     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR", 1000413001),
3230     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR", 1000413002),
3231     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR", 1000413003),
3232     std::make_pair("VK_STRUCTURE_TYPE_APPLICATION_PARAMETERS_EXT", 1000435000),
3233     std::make_pair("VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV", 1000489000),
3234     std::make_pair("VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_CREATE_INFO_NV", 1000489001),
3235     std::make_pair("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV", 1000489002),
3236     std::make_pair("VK_STRUCTURE_TYPE_IMPORT_FENCE_SCI_SYNC_INFO_NV", 1000373000),
3237     std::make_pair("VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV", 1000373001),
3238     std::make_pair("VK_STRUCTURE_TYPE_FENCE_GET_SCI_SYNC_INFO_NV", 1000373002),
3239     std::make_pair("VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV", 1000373003),
3240     std::make_pair("VK_STRUCTURE_TYPE_DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV", 1000489003),
3241 };
parse_VkStructureType(const char * s,Json::Value & obj,VkStructureType & o)3242 static void parse_VkStructureType(const char *s, Json::Value &obj, VkStructureType &o)
3243 {
3244     std::string _res = obj.asString();
3245     o                = (VkStructureType)VkStructureType_map[std::string(_res)];
3246 }
3247 
3248 static std::map<std::string, int> VkAccessFlagBits_map = {
3249     std::make_pair("VK_ACCESS_INDIRECT_COMMAND_READ_BIT", 1UL << 0),
3250     std::make_pair("VK_ACCESS_INDEX_READ_BIT", 1UL << 1),
3251     std::make_pair("VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT", 1UL << 2),
3252     std::make_pair("VK_ACCESS_UNIFORM_READ_BIT", 1UL << 3),
3253     std::make_pair("VK_ACCESS_INPUT_ATTACHMENT_READ_BIT", 1UL << 4),
3254     std::make_pair("VK_ACCESS_SHADER_READ_BIT", 1UL << 5),
3255     std::make_pair("VK_ACCESS_SHADER_WRITE_BIT", 1UL << 6),
3256     std::make_pair("VK_ACCESS_COLOR_ATTACHMENT_READ_BIT", 1UL << 7),
3257     std::make_pair("VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT", 1UL << 8),
3258     std::make_pair("VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT", 1UL << 9),
3259     std::make_pair("VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT", 1UL << 10),
3260     std::make_pair("VK_ACCESS_TRANSFER_READ_BIT", 1UL << 11),
3261     std::make_pair("VK_ACCESS_TRANSFER_WRITE_BIT", 1UL << 12),
3262     std::make_pair("VK_ACCESS_HOST_READ_BIT", 1UL << 13),
3263     std::make_pair("VK_ACCESS_HOST_WRITE_BIT", 1UL << 14),
3264     std::make_pair("VK_ACCESS_MEMORY_READ_BIT", 1UL << 15),
3265     std::make_pair("VK_ACCESS_MEMORY_WRITE_BIT", 1UL << 16),
3266     std::make_pair("VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT", 1UL << 25),
3267     std::make_pair("VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT", 1UL << 26),
3268     std::make_pair("VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT", 1UL << 27),
3269     std::make_pair("VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT", 1UL << 20),
3270     std::make_pair("VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT", 1UL << 19),
3271     std::make_pair("VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR", 1UL << 21),
3272     std::make_pair("VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR", 1UL << 22),
3273     std::make_pair("VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT", 1UL << 24),
3274     std::make_pair("VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR", 1UL << 23),
3275     std::make_pair("VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV", 1UL << 17),
3276     std::make_pair("VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV", 1UL << 18),
3277     std::make_pair("VK_ACCESS_NONE_KHR", 0),
3278 };
parse_VkAccessFlagBits(const char * s,Json::Value & obj,VkAccessFlagBits & o)3279 static void parse_VkAccessFlagBits(const char *s, Json::Value &obj, VkAccessFlagBits &o)
3280 {
3281     std::string _res = obj.asString();
3282     o                = (VkAccessFlagBits)VkAccessFlagBits_map[std::string(_res)];
3283 }
3284 
3285 static std::map<std::string, int> VkImageLayout_map = {
3286     std::make_pair("VK_IMAGE_LAYOUT_UNDEFINED", 0),
3287     std::make_pair("VK_IMAGE_LAYOUT_GENERAL", 1),
3288     std::make_pair("VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL", 2),
3289     std::make_pair("VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL", 3),
3290     std::make_pair("VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL", 4),
3291     std::make_pair("VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL", 5),
3292     std::make_pair("VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL", 6),
3293     std::make_pair("VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL", 7),
3294     std::make_pair("VK_IMAGE_LAYOUT_PREINITIALIZED", 8),
3295     std::make_pair("VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL", 1000117000),
3296     std::make_pair("VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL", 1000117001),
3297     std::make_pair("VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL", 1000241000),
3298     std::make_pair("VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL", 1000241001),
3299     std::make_pair("VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL", 1000241002),
3300     std::make_pair("VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL", 1000241003),
3301     std::make_pair("VK_IMAGE_LAYOUT_PRESENT_SRC_KHR", 1000001002),
3302     std::make_pair("VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR", 1000024000),
3303     std::make_pair("VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR", 1000024001),
3304     std::make_pair("VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR", 1000024002),
3305     std::make_pair("VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR", 1000111000),
3306     std::make_pair("VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT", 1000218000),
3307     std::make_pair("VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR", 1000164003),
3308     std::make_pair("VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR", 1000299000),
3309     std::make_pair("VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR", 1000299001),
3310     std::make_pair("VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR", 1000299002),
3311     std::make_pair("VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR", 1000314000),
3312     std::make_pair("VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR", 1000314001),
3313 };
parse_VkImageLayout(const char * s,Json::Value & obj,VkImageLayout & o)3314 static void parse_VkImageLayout(const char *s, Json::Value &obj, VkImageLayout &o)
3315 {
3316     std::string _res = obj.asString();
3317     o                = (VkImageLayout)VkImageLayout_map[std::string(_res)];
3318 }
3319 
3320 static std::map<std::string, int> VkImageAspectFlagBits_map = {
3321     std::make_pair("VK_IMAGE_ASPECT_COLOR_BIT", 1UL << 0),
3322     std::make_pair("VK_IMAGE_ASPECT_DEPTH_BIT", 1UL << 1),
3323     std::make_pair("VK_IMAGE_ASPECT_STENCIL_BIT", 1UL << 2),
3324     std::make_pair("VK_IMAGE_ASPECT_METADATA_BIT", 1UL << 3),
3325     std::make_pair("VK_IMAGE_ASPECT_PLANE_0_BIT", 1UL << 4),
3326     std::make_pair("VK_IMAGE_ASPECT_PLANE_1_BIT", 1UL << 5),
3327     std::make_pair("VK_IMAGE_ASPECT_PLANE_2_BIT", 1UL << 6),
3328     std::make_pair("VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT", 1UL << 7),
3329     std::make_pair("VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT", 1UL << 8),
3330     std::make_pair("VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT", 1UL << 9),
3331     std::make_pair("VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT", 1UL << 10),
3332     std::make_pair("VK_IMAGE_ASPECT_NONE_KHR", 0),
3333 };
parse_VkImageAspectFlagBits(const char * s,Json::Value & obj,VkImageAspectFlagBits & o)3334 static void parse_VkImageAspectFlagBits(const char *s, Json::Value &obj, VkImageAspectFlagBits &o)
3335 {
3336     std::string _res = obj.asString();
3337     o                = (VkImageAspectFlagBits)VkImageAspectFlagBits_map[std::string(_res)];
3338 }
3339 
3340 static std::map<std::string, int> VkObjectType_map = {
3341     std::make_pair("VK_OBJECT_TYPE_UNKNOWN", 0),
3342     std::make_pair("VK_OBJECT_TYPE_INSTANCE", 1),
3343     std::make_pair("VK_OBJECT_TYPE_PHYSICAL_DEVICE", 2),
3344     std::make_pair("VK_OBJECT_TYPE_DEVICE", 3),
3345     std::make_pair("VK_OBJECT_TYPE_QUEUE", 4),
3346     std::make_pair("VK_OBJECT_TYPE_SEMAPHORE", 5),
3347     std::make_pair("VK_OBJECT_TYPE_COMMAND_BUFFER", 6),
3348     std::make_pair("VK_OBJECT_TYPE_FENCE", 7),
3349     std::make_pair("VK_OBJECT_TYPE_DEVICE_MEMORY", 8),
3350     std::make_pair("VK_OBJECT_TYPE_BUFFER", 9),
3351     std::make_pair("VK_OBJECT_TYPE_IMAGE", 10),
3352     std::make_pair("VK_OBJECT_TYPE_EVENT", 11),
3353     std::make_pair("VK_OBJECT_TYPE_QUERY_POOL", 12),
3354     std::make_pair("VK_OBJECT_TYPE_BUFFER_VIEW", 13),
3355     std::make_pair("VK_OBJECT_TYPE_IMAGE_VIEW", 14),
3356     std::make_pair("VK_OBJECT_TYPE_SHADER_MODULE", 15),
3357     std::make_pair("VK_OBJECT_TYPE_PIPELINE_CACHE", 16),
3358     std::make_pair("VK_OBJECT_TYPE_PIPELINE_LAYOUT", 17),
3359     std::make_pair("VK_OBJECT_TYPE_RENDER_PASS", 18),
3360     std::make_pair("VK_OBJECT_TYPE_PIPELINE", 19),
3361     std::make_pair("VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT", 20),
3362     std::make_pair("VK_OBJECT_TYPE_SAMPLER", 21),
3363     std::make_pair("VK_OBJECT_TYPE_DESCRIPTOR_POOL", 22),
3364     std::make_pair("VK_OBJECT_TYPE_DESCRIPTOR_SET", 23),
3365     std::make_pair("VK_OBJECT_TYPE_FRAMEBUFFER", 24),
3366     std::make_pair("VK_OBJECT_TYPE_COMMAND_POOL", 25),
3367     std::make_pair("VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION", 1000156000),
3368     std::make_pair("VK_OBJECT_TYPE_SURFACE_KHR", 1000000000),
3369     std::make_pair("VK_OBJECT_TYPE_SWAPCHAIN_KHR", 1000001000),
3370     std::make_pair("VK_OBJECT_TYPE_DISPLAY_KHR", 1000002000),
3371     std::make_pair("VK_OBJECT_TYPE_DISPLAY_MODE_KHR", 1000002001),
3372     std::make_pair("VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT", 1000011000),
3373     std::make_pair("VK_OBJECT_TYPE_VIDEO_SESSION_KHR", 1000023000),
3374     std::make_pair("VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR", 1000023001),
3375     std::make_pair("VK_OBJECT_TYPE_CU_MODULE_NVX", 1000029000),
3376     std::make_pair("VK_OBJECT_TYPE_CU_FUNCTION_NVX", 1000029001),
3377     std::make_pair("VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT", 1000128000),
3378     std::make_pair("VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR", 1000150000),
3379     std::make_pair("VK_OBJECT_TYPE_VALIDATION_CACHE_EXT", 1000160000),
3380     std::make_pair("VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV", 1000165000),
3381     std::make_pair("VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL", 1000210000),
3382     std::make_pair("VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR", 1000268000),
3383     std::make_pair("VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV", 1000277000),
3384     std::make_pair("VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT", 1000295000),
3385     std::make_pair("VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA", 1000366000),
3386     std::make_pair("VK_OBJECT_TYPE_SEMAPHORE_SCI_SYNC_POOL_NV", 1000489000),
3387 };
parse_VkObjectType(const char * s,Json::Value & obj,VkObjectType & o)3388 static void parse_VkObjectType(const char *s, Json::Value &obj, VkObjectType &o)
3389 {
3390     std::string _res = obj.asString();
3391     o                = (VkObjectType)VkObjectType_map[std::string(_res)];
3392 }
3393 
3394 static std::map<std::string, int> VkPipelineCacheHeaderVersion_map = {
3395     std::make_pair("VK_PIPELINE_CACHE_HEADER_VERSION_ONE", 1),
3396     std::make_pair("VK_PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE", 1000298001),
3397 };
parse_VkPipelineCacheHeaderVersion(const char * s,Json::Value & obj,VkPipelineCacheHeaderVersion & o)3398 static void parse_VkPipelineCacheHeaderVersion(const char *s, Json::Value &obj, VkPipelineCacheHeaderVersion &o)
3399 {
3400     std::string _res = obj.asString();
3401     o                = (VkPipelineCacheHeaderVersion)VkPipelineCacheHeaderVersion_map[std::string(_res)];
3402 }
3403 
3404 static std::map<std::string, int> VkVendorId_map = {
3405     std::make_pair("VK_VENDOR_ID_VIV", 0x10001),   std::make_pair("VK_VENDOR_ID_VSI", 0x10002),
3406     std::make_pair("VK_VENDOR_ID_KAZAN", 0x10003), std::make_pair("VK_VENDOR_ID_CODEPLAY", 0x10004),
3407     std::make_pair("VK_VENDOR_ID_MESA", 0x10005),  std::make_pair("VK_VENDOR_ID_POCL", 0x10006),
3408 };
parse_VkVendorId(const char * s,Json::Value & obj,VkVendorId & o)3409 static void parse_VkVendorId(const char *s, Json::Value &obj, VkVendorId &o)
3410 {
3411     std::string _res = obj.asString();
3412     o                = (VkVendorId)VkVendorId_map[std::string(_res)];
3413 }
3414 
3415 static std::map<std::string, int> VkSystemAllocationScope_map = {
3416     std::make_pair("VK_SYSTEM_ALLOCATION_SCOPE_COMMAND", 0),  std::make_pair("VK_SYSTEM_ALLOCATION_SCOPE_OBJECT", 1),
3417     std::make_pair("VK_SYSTEM_ALLOCATION_SCOPE_CACHE", 2),    std::make_pair("VK_SYSTEM_ALLOCATION_SCOPE_DEVICE", 3),
3418     std::make_pair("VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE", 4),
3419 };
parse_VkSystemAllocationScope(const char * s,Json::Value & obj,VkSystemAllocationScope & o)3420 static void parse_VkSystemAllocationScope(const char *s, Json::Value &obj, VkSystemAllocationScope &o)
3421 {
3422     std::string _res = obj.asString();
3423     o                = (VkSystemAllocationScope)VkSystemAllocationScope_map[std::string(_res)];
3424 }
3425 
3426 static std::map<std::string, int> VkInternalAllocationType_map = {
3427     std::make_pair("VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE", 0),
3428 };
parse_VkInternalAllocationType(const char * s,Json::Value & obj,VkInternalAllocationType & o)3429 static void parse_VkInternalAllocationType(const char *s, Json::Value &obj, VkInternalAllocationType &o)
3430 {
3431     std::string _res = obj.asString();
3432     o                = (VkInternalAllocationType)VkInternalAllocationType_map[std::string(_res)];
3433 }
3434 
3435 static std::map<std::string, int> VkFormat_map = {
3436     std::make_pair("VK_FORMAT_UNDEFINED", 0),
3437     std::make_pair("VK_FORMAT_R4G4_UNORM_PACK8", 1),
3438     std::make_pair("VK_FORMAT_R4G4B4A4_UNORM_PACK16", 2),
3439     std::make_pair("VK_FORMAT_B4G4R4A4_UNORM_PACK16", 3),
3440     std::make_pair("VK_FORMAT_R5G6B5_UNORM_PACK16", 4),
3441     std::make_pair("VK_FORMAT_B5G6R5_UNORM_PACK16", 5),
3442     std::make_pair("VK_FORMAT_R5G5B5A1_UNORM_PACK16", 6),
3443     std::make_pair("VK_FORMAT_B5G5R5A1_UNORM_PACK16", 7),
3444     std::make_pair("VK_FORMAT_A1R5G5B5_UNORM_PACK16", 8),
3445     std::make_pair("VK_FORMAT_R8_UNORM", 9),
3446     std::make_pair("VK_FORMAT_R8_SNORM", 10),
3447     std::make_pair("VK_FORMAT_R8_USCALED", 11),
3448     std::make_pair("VK_FORMAT_R8_SSCALED", 12),
3449     std::make_pair("VK_FORMAT_R8_UINT", 13),
3450     std::make_pair("VK_FORMAT_R8_SINT", 14),
3451     std::make_pair("VK_FORMAT_R8_SRGB", 15),
3452     std::make_pair("VK_FORMAT_R8G8_UNORM", 16),
3453     std::make_pair("VK_FORMAT_R8G8_SNORM", 17),
3454     std::make_pair("VK_FORMAT_R8G8_USCALED", 18),
3455     std::make_pair("VK_FORMAT_R8G8_SSCALED", 19),
3456     std::make_pair("VK_FORMAT_R8G8_UINT", 20),
3457     std::make_pair("VK_FORMAT_R8G8_SINT", 21),
3458     std::make_pair("VK_FORMAT_R8G8_SRGB", 22),
3459     std::make_pair("VK_FORMAT_R8G8B8_UNORM", 23),
3460     std::make_pair("VK_FORMAT_R8G8B8_SNORM", 24),
3461     std::make_pair("VK_FORMAT_R8G8B8_USCALED", 25),
3462     std::make_pair("VK_FORMAT_R8G8B8_SSCALED", 26),
3463     std::make_pair("VK_FORMAT_R8G8B8_UINT", 27),
3464     std::make_pair("VK_FORMAT_R8G8B8_SINT", 28),
3465     std::make_pair("VK_FORMAT_R8G8B8_SRGB", 29),
3466     std::make_pair("VK_FORMAT_B8G8R8_UNORM", 30),
3467     std::make_pair("VK_FORMAT_B8G8R8_SNORM", 31),
3468     std::make_pair("VK_FORMAT_B8G8R8_USCALED", 32),
3469     std::make_pair("VK_FORMAT_B8G8R8_SSCALED", 33),
3470     std::make_pair("VK_FORMAT_B8G8R8_UINT", 34),
3471     std::make_pair("VK_FORMAT_B8G8R8_SINT", 35),
3472     std::make_pair("VK_FORMAT_B8G8R8_SRGB", 36),
3473     std::make_pair("VK_FORMAT_R8G8B8A8_UNORM", 37),
3474     std::make_pair("VK_FORMAT_R8G8B8A8_SNORM", 38),
3475     std::make_pair("VK_FORMAT_R8G8B8A8_USCALED", 39),
3476     std::make_pair("VK_FORMAT_R8G8B8A8_SSCALED", 40),
3477     std::make_pair("VK_FORMAT_R8G8B8A8_UINT", 41),
3478     std::make_pair("VK_FORMAT_R8G8B8A8_SINT", 42),
3479     std::make_pair("VK_FORMAT_R8G8B8A8_SRGB", 43),
3480     std::make_pair("VK_FORMAT_B8G8R8A8_UNORM", 44),
3481     std::make_pair("VK_FORMAT_B8G8R8A8_SNORM", 45),
3482     std::make_pair("VK_FORMAT_B8G8R8A8_USCALED", 46),
3483     std::make_pair("VK_FORMAT_B8G8R8A8_SSCALED", 47),
3484     std::make_pair("VK_FORMAT_B8G8R8A8_UINT", 48),
3485     std::make_pair("VK_FORMAT_B8G8R8A8_SINT", 49),
3486     std::make_pair("VK_FORMAT_B8G8R8A8_SRGB", 50),
3487     std::make_pair("VK_FORMAT_A8B8G8R8_UNORM_PACK32", 51),
3488     std::make_pair("VK_FORMAT_A8B8G8R8_SNORM_PACK32", 52),
3489     std::make_pair("VK_FORMAT_A8B8G8R8_USCALED_PACK32", 53),
3490     std::make_pair("VK_FORMAT_A8B8G8R8_SSCALED_PACK32", 54),
3491     std::make_pair("VK_FORMAT_A8B8G8R8_UINT_PACK32", 55),
3492     std::make_pair("VK_FORMAT_A8B8G8R8_SINT_PACK32", 56),
3493     std::make_pair("VK_FORMAT_A8B8G8R8_SRGB_PACK32", 57),
3494     std::make_pair("VK_FORMAT_A2R10G10B10_UNORM_PACK32", 58),
3495     std::make_pair("VK_FORMAT_A2R10G10B10_SNORM_PACK32", 59),
3496     std::make_pair("VK_FORMAT_A2R10G10B10_USCALED_PACK32", 60),
3497     std::make_pair("VK_FORMAT_A2R10G10B10_SSCALED_PACK32", 61),
3498     std::make_pair("VK_FORMAT_A2R10G10B10_UINT_PACK32", 62),
3499     std::make_pair("VK_FORMAT_A2R10G10B10_SINT_PACK32", 63),
3500     std::make_pair("VK_FORMAT_A2B10G10R10_UNORM_PACK32", 64),
3501     std::make_pair("VK_FORMAT_A2B10G10R10_SNORM_PACK32", 65),
3502     std::make_pair("VK_FORMAT_A2B10G10R10_USCALED_PACK32", 66),
3503     std::make_pair("VK_FORMAT_A2B10G10R10_SSCALED_PACK32", 67),
3504     std::make_pair("VK_FORMAT_A2B10G10R10_UINT_PACK32", 68),
3505     std::make_pair("VK_FORMAT_A2B10G10R10_SINT_PACK32", 69),
3506     std::make_pair("VK_FORMAT_R16_UNORM", 70),
3507     std::make_pair("VK_FORMAT_R16_SNORM", 71),
3508     std::make_pair("VK_FORMAT_R16_USCALED", 72),
3509     std::make_pair("VK_FORMAT_R16_SSCALED", 73),
3510     std::make_pair("VK_FORMAT_R16_UINT", 74),
3511     std::make_pair("VK_FORMAT_R16_SINT", 75),
3512     std::make_pair("VK_FORMAT_R16_SFLOAT", 76),
3513     std::make_pair("VK_FORMAT_R16G16_UNORM", 77),
3514     std::make_pair("VK_FORMAT_R16G16_SNORM", 78),
3515     std::make_pair("VK_FORMAT_R16G16_USCALED", 79),
3516     std::make_pair("VK_FORMAT_R16G16_SSCALED", 80),
3517     std::make_pair("VK_FORMAT_R16G16_UINT", 81),
3518     std::make_pair("VK_FORMAT_R16G16_SINT", 82),
3519     std::make_pair("VK_FORMAT_R16G16_SFLOAT", 83),
3520     std::make_pair("VK_FORMAT_R16G16B16_UNORM", 84),
3521     std::make_pair("VK_FORMAT_R16G16B16_SNORM", 85),
3522     std::make_pair("VK_FORMAT_R16G16B16_USCALED", 86),
3523     std::make_pair("VK_FORMAT_R16G16B16_SSCALED", 87),
3524     std::make_pair("VK_FORMAT_R16G16B16_UINT", 88),
3525     std::make_pair("VK_FORMAT_R16G16B16_SINT", 89),
3526     std::make_pair("VK_FORMAT_R16G16B16_SFLOAT", 90),
3527     std::make_pair("VK_FORMAT_R16G16B16A16_UNORM", 91),
3528     std::make_pair("VK_FORMAT_R16G16B16A16_SNORM", 92),
3529     std::make_pair("VK_FORMAT_R16G16B16A16_USCALED", 93),
3530     std::make_pair("VK_FORMAT_R16G16B16A16_SSCALED", 94),
3531     std::make_pair("VK_FORMAT_R16G16B16A16_UINT", 95),
3532     std::make_pair("VK_FORMAT_R16G16B16A16_SINT", 96),
3533     std::make_pair("VK_FORMAT_R16G16B16A16_SFLOAT", 97),
3534     std::make_pair("VK_FORMAT_R32_UINT", 98),
3535     std::make_pair("VK_FORMAT_R32_SINT", 99),
3536     std::make_pair("VK_FORMAT_R32_SFLOAT", 100),
3537     std::make_pair("VK_FORMAT_R32G32_UINT", 101),
3538     std::make_pair("VK_FORMAT_R32G32_SINT", 102),
3539     std::make_pair("VK_FORMAT_R32G32_SFLOAT", 103),
3540     std::make_pair("VK_FORMAT_R32G32B32_UINT", 104),
3541     std::make_pair("VK_FORMAT_R32G32B32_SINT", 105),
3542     std::make_pair("VK_FORMAT_R32G32B32_SFLOAT", 106),
3543     std::make_pair("VK_FORMAT_R32G32B32A32_UINT", 107),
3544     std::make_pair("VK_FORMAT_R32G32B32A32_SINT", 108),
3545     std::make_pair("VK_FORMAT_R32G32B32A32_SFLOAT", 109),
3546     std::make_pair("VK_FORMAT_R64_UINT", 110),
3547     std::make_pair("VK_FORMAT_R64_SINT", 111),
3548     std::make_pair("VK_FORMAT_R64_SFLOAT", 112),
3549     std::make_pair("VK_FORMAT_R64G64_UINT", 113),
3550     std::make_pair("VK_FORMAT_R64G64_SINT", 114),
3551     std::make_pair("VK_FORMAT_R64G64_SFLOAT", 115),
3552     std::make_pair("VK_FORMAT_R64G64B64_UINT", 116),
3553     std::make_pair("VK_FORMAT_R64G64B64_SINT", 117),
3554     std::make_pair("VK_FORMAT_R64G64B64_SFLOAT", 118),
3555     std::make_pair("VK_FORMAT_R64G64B64A64_UINT", 119),
3556     std::make_pair("VK_FORMAT_R64G64B64A64_SINT", 120),
3557     std::make_pair("VK_FORMAT_R64G64B64A64_SFLOAT", 121),
3558     std::make_pair("VK_FORMAT_B10G11R11_UFLOAT_PACK32", 122),
3559     std::make_pair("VK_FORMAT_E5B9G9R9_UFLOAT_PACK32", 123),
3560     std::make_pair("VK_FORMAT_D16_UNORM", 124),
3561     std::make_pair("VK_FORMAT_X8_D24_UNORM_PACK32", 125),
3562     std::make_pair("VK_FORMAT_D32_SFLOAT", 126),
3563     std::make_pair("VK_FORMAT_S8_UINT", 127),
3564     std::make_pair("VK_FORMAT_D16_UNORM_S8_UINT", 128),
3565     std::make_pair("VK_FORMAT_D24_UNORM_S8_UINT", 129),
3566     std::make_pair("VK_FORMAT_D32_SFLOAT_S8_UINT", 130),
3567     std::make_pair("VK_FORMAT_BC1_RGB_UNORM_BLOCK", 131),
3568     std::make_pair("VK_FORMAT_BC1_RGB_SRGB_BLOCK", 132),
3569     std::make_pair("VK_FORMAT_BC1_RGBA_UNORM_BLOCK", 133),
3570     std::make_pair("VK_FORMAT_BC1_RGBA_SRGB_BLOCK", 134),
3571     std::make_pair("VK_FORMAT_BC2_UNORM_BLOCK", 135),
3572     std::make_pair("VK_FORMAT_BC2_SRGB_BLOCK", 136),
3573     std::make_pair("VK_FORMAT_BC3_UNORM_BLOCK", 137),
3574     std::make_pair("VK_FORMAT_BC3_SRGB_BLOCK", 138),
3575     std::make_pair("VK_FORMAT_BC4_UNORM_BLOCK", 139),
3576     std::make_pair("VK_FORMAT_BC4_SNORM_BLOCK", 140),
3577     std::make_pair("VK_FORMAT_BC5_UNORM_BLOCK", 141),
3578     std::make_pair("VK_FORMAT_BC5_SNORM_BLOCK", 142),
3579     std::make_pair("VK_FORMAT_BC6H_UFLOAT_BLOCK", 143),
3580     std::make_pair("VK_FORMAT_BC6H_SFLOAT_BLOCK", 144),
3581     std::make_pair("VK_FORMAT_BC7_UNORM_BLOCK", 145),
3582     std::make_pair("VK_FORMAT_BC7_SRGB_BLOCK", 146),
3583     std::make_pair("VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK", 147),
3584     std::make_pair("VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK", 148),
3585     std::make_pair("VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK", 149),
3586     std::make_pair("VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK", 150),
3587     std::make_pair("VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK", 151),
3588     std::make_pair("VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK", 152),
3589     std::make_pair("VK_FORMAT_EAC_R11_UNORM_BLOCK", 153),
3590     std::make_pair("VK_FORMAT_EAC_R11_SNORM_BLOCK", 154),
3591     std::make_pair("VK_FORMAT_EAC_R11G11_UNORM_BLOCK", 155),
3592     std::make_pair("VK_FORMAT_EAC_R11G11_SNORM_BLOCK", 156),
3593     std::make_pair("VK_FORMAT_ASTC_4x4_UNORM_BLOCK", 157),
3594     std::make_pair("VK_FORMAT_ASTC_4x4_SRGB_BLOCK", 158),
3595     std::make_pair("VK_FORMAT_ASTC_5x4_UNORM_BLOCK", 159),
3596     std::make_pair("VK_FORMAT_ASTC_5x4_SRGB_BLOCK", 160),
3597     std::make_pair("VK_FORMAT_ASTC_5x5_UNORM_BLOCK", 161),
3598     std::make_pair("VK_FORMAT_ASTC_5x5_SRGB_BLOCK", 162),
3599     std::make_pair("VK_FORMAT_ASTC_6x5_UNORM_BLOCK", 163),
3600     std::make_pair("VK_FORMAT_ASTC_6x5_SRGB_BLOCK", 164),
3601     std::make_pair("VK_FORMAT_ASTC_6x6_UNORM_BLOCK", 165),
3602     std::make_pair("VK_FORMAT_ASTC_6x6_SRGB_BLOCK", 166),
3603     std::make_pair("VK_FORMAT_ASTC_8x5_UNORM_BLOCK", 167),
3604     std::make_pair("VK_FORMAT_ASTC_8x5_SRGB_BLOCK", 168),
3605     std::make_pair("VK_FORMAT_ASTC_8x6_UNORM_BLOCK", 169),
3606     std::make_pair("VK_FORMAT_ASTC_8x6_SRGB_BLOCK", 170),
3607     std::make_pair("VK_FORMAT_ASTC_8x8_UNORM_BLOCK", 171),
3608     std::make_pair("VK_FORMAT_ASTC_8x8_SRGB_BLOCK", 172),
3609     std::make_pair("VK_FORMAT_ASTC_10x5_UNORM_BLOCK", 173),
3610     std::make_pair("VK_FORMAT_ASTC_10x5_SRGB_BLOCK", 174),
3611     std::make_pair("VK_FORMAT_ASTC_10x6_UNORM_BLOCK", 175),
3612     std::make_pair("VK_FORMAT_ASTC_10x6_SRGB_BLOCK", 176),
3613     std::make_pair("VK_FORMAT_ASTC_10x8_UNORM_BLOCK", 177),
3614     std::make_pair("VK_FORMAT_ASTC_10x8_SRGB_BLOCK", 178),
3615     std::make_pair("VK_FORMAT_ASTC_10x10_UNORM_BLOCK", 179),
3616     std::make_pair("VK_FORMAT_ASTC_10x10_SRGB_BLOCK", 180),
3617     std::make_pair("VK_FORMAT_ASTC_12x10_UNORM_BLOCK", 181),
3618     std::make_pair("VK_FORMAT_ASTC_12x10_SRGB_BLOCK", 182),
3619     std::make_pair("VK_FORMAT_ASTC_12x12_UNORM_BLOCK", 183),
3620     std::make_pair("VK_FORMAT_ASTC_12x12_SRGB_BLOCK", 184),
3621     std::make_pair("VK_FORMAT_G8B8G8R8_422_UNORM", 1000156000),
3622     std::make_pair("VK_FORMAT_B8G8R8G8_422_UNORM", 1000156001),
3623     std::make_pair("VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM", 1000156002),
3624     std::make_pair("VK_FORMAT_G8_B8R8_2PLANE_420_UNORM", 1000156003),
3625     std::make_pair("VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM", 1000156004),
3626     std::make_pair("VK_FORMAT_G8_B8R8_2PLANE_422_UNORM", 1000156005),
3627     std::make_pair("VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM", 1000156006),
3628     std::make_pair("VK_FORMAT_R10X6_UNORM_PACK16", 1000156007),
3629     std::make_pair("VK_FORMAT_R10X6G10X6_UNORM_2PACK16", 1000156008),
3630     std::make_pair("VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16", 1000156009),
3631     std::make_pair("VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16", 1000156010),
3632     std::make_pair("VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16", 1000156011),
3633     std::make_pair("VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16", 1000156012),
3634     std::make_pair("VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16", 1000156013),
3635     std::make_pair("VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16", 1000156014),
3636     std::make_pair("VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16", 1000156015),
3637     std::make_pair("VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16", 1000156016),
3638     std::make_pair("VK_FORMAT_R12X4_UNORM_PACK16", 1000156017),
3639     std::make_pair("VK_FORMAT_R12X4G12X4_UNORM_2PACK16", 1000156018),
3640     std::make_pair("VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16", 1000156019),
3641     std::make_pair("VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16", 1000156020),
3642     std::make_pair("VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16", 1000156021),
3643     std::make_pair("VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16", 1000156022),
3644     std::make_pair("VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16", 1000156023),
3645     std::make_pair("VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16", 1000156024),
3646     std::make_pair("VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16", 1000156025),
3647     std::make_pair("VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16", 1000156026),
3648     std::make_pair("VK_FORMAT_G16B16G16R16_422_UNORM", 1000156027),
3649     std::make_pair("VK_FORMAT_B16G16R16G16_422_UNORM", 1000156028),
3650     std::make_pair("VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM", 1000156029),
3651     std::make_pair("VK_FORMAT_G16_B16R16_2PLANE_420_UNORM", 1000156030),
3652     std::make_pair("VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM", 1000156031),
3653     std::make_pair("VK_FORMAT_G16_B16R16_2PLANE_422_UNORM", 1000156032),
3654     std::make_pair("VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM", 1000156033),
3655     std::make_pair("VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG", 1000054000),
3656     std::make_pair("VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG", 1000054001),
3657     std::make_pair("VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG", 1000054002),
3658     std::make_pair("VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG", 1000054003),
3659     std::make_pair("VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG", 1000054004),
3660     std::make_pair("VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG", 1000054005),
3661     std::make_pair("VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG", 1000054006),
3662     std::make_pair("VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG", 1000054007),
3663     std::make_pair("VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT", 1000066000),
3664     std::make_pair("VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT", 1000066001),
3665     std::make_pair("VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT", 1000066002),
3666     std::make_pair("VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT", 1000066003),
3667     std::make_pair("VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT", 1000066004),
3668     std::make_pair("VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT", 1000066005),
3669     std::make_pair("VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT", 1000066006),
3670     std::make_pair("VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT", 1000066007),
3671     std::make_pair("VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT", 1000066008),
3672     std::make_pair("VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT", 1000066009),
3673     std::make_pair("VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT", 1000066010),
3674     std::make_pair("VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT", 1000066011),
3675     std::make_pair("VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT", 1000066012),
3676     std::make_pair("VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT", 1000066013),
3677     std::make_pair("VK_FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT", 1000288000),
3678     std::make_pair("VK_FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT", 1000288001),
3679     std::make_pair("VK_FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT", 1000288002),
3680     std::make_pair("VK_FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT", 1000288003),
3681     std::make_pair("VK_FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT", 1000288004),
3682     std::make_pair("VK_FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT", 1000288005),
3683     std::make_pair("VK_FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT", 1000288006),
3684     std::make_pair("VK_FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT", 1000288007),
3685     std::make_pair("VK_FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT", 1000288008),
3686     std::make_pair("VK_FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT", 1000288009),
3687     std::make_pair("VK_FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT", 1000288010),
3688     std::make_pair("VK_FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT", 1000288011),
3689     std::make_pair("VK_FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT", 1000288012),
3690     std::make_pair("VK_FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT", 1000288013),
3691     std::make_pair("VK_FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT", 1000288014),
3692     std::make_pair("VK_FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT", 1000288015),
3693     std::make_pair("VK_FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT", 1000288016),
3694     std::make_pair("VK_FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT", 1000288017),
3695     std::make_pair("VK_FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT", 1000288018),
3696     std::make_pair("VK_FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT", 1000288019),
3697     std::make_pair("VK_FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT", 1000288020),
3698     std::make_pair("VK_FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT", 1000288021),
3699     std::make_pair("VK_FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT", 1000288022),
3700     std::make_pair("VK_FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT", 1000288023),
3701     std::make_pair("VK_FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT", 1000288024),
3702     std::make_pair("VK_FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT", 1000288025),
3703     std::make_pair("VK_FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT", 1000288026),
3704     std::make_pair("VK_FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT", 1000288027),
3705     std::make_pair("VK_FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT", 1000288028),
3706     std::make_pair("VK_FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT", 1000288029),
3707     std::make_pair("VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT", 1000330000),
3708     std::make_pair("VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT", 1000330001),
3709     std::make_pair("VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT", 1000330002),
3710     std::make_pair("VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT", 1000330003),
3711     std::make_pair("VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT", 1000340000),
3712     std::make_pair("VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT", 1000340001),
3713 };
parse_VkFormat(const char * s,Json::Value & obj,VkFormat & o)3714 static void parse_VkFormat(const char *s, Json::Value &obj, VkFormat &o)
3715 {
3716     std::string _res = obj.asString();
3717     o                = (VkFormat)VkFormat_map[std::string(_res)];
3718 }
3719 
3720 static std::map<std::string, int> VkFormatFeatureFlagBits_map = {
3721     std::make_pair("VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", 1UL << 0),
3722     std::make_pair("VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT", 1UL << 1),
3723     std::make_pair("VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT", 1UL << 2),
3724     std::make_pair("VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", 1UL << 3),
3725     std::make_pair("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", 1UL << 4),
3726     std::make_pair("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT", 1UL << 5),
3727     std::make_pair("VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT", 1UL << 6),
3728     std::make_pair("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", 1UL << 7),
3729     std::make_pair("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT", 1UL << 8),
3730     std::make_pair("VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", 1UL << 9),
3731     std::make_pair("VK_FORMAT_FEATURE_BLIT_SRC_BIT", 1UL << 10),
3732     std::make_pair("VK_FORMAT_FEATURE_BLIT_DST_BIT", 1UL << 11),
3733     std::make_pair("VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT", 1UL << 12),
3734     std::make_pair("VK_FORMAT_FEATURE_TRANSFER_SRC_BIT", 1UL << 14),
3735     std::make_pair("VK_FORMAT_FEATURE_TRANSFER_DST_BIT", 1UL << 15),
3736     std::make_pair("VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT", 1UL << 17),
3737     std::make_pair("VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT", 1UL << 18),
3738     std::make_pair("VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT", 1UL << 19),
3739     std::make_pair("VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT", 1UL << 20),
3740     std::make_pair("VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT",
3741                    1UL << 21),
3742     std::make_pair("VK_FORMAT_FEATURE_DISJOINT_BIT", 1UL << 22),
3743     std::make_pair("VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT", 1UL << 23),
3744     std::make_pair("VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT", 1UL << 16),
3745     std::make_pair("VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG", 1UL << 13),
3746     std::make_pair("VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR", 1UL << 25),
3747     std::make_pair("VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR", 1UL << 26),
3748     std::make_pair("VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR", 1UL << 29),
3749     std::make_pair("VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT", 1UL << 24),
3750     std::make_pair("VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR", 1UL << 30),
3751     std::make_pair("VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR", 1UL << 27),
3752     std::make_pair("VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR", 1UL << 28),
3753 };
parse_VkFormatFeatureFlagBits(const char * s,Json::Value & obj,VkFormatFeatureFlagBits & o)3754 static void parse_VkFormatFeatureFlagBits(const char *s, Json::Value &obj, VkFormatFeatureFlagBits &o)
3755 {
3756     std::string _res = obj.asString();
3757     o                = (VkFormatFeatureFlagBits)VkFormatFeatureFlagBits_map[std::string(_res)];
3758 }
3759 
3760 static std::map<std::string, int> VkImageCreateFlagBits_map = {
3761     std::make_pair("VK_IMAGE_CREATE_SPARSE_BINDING_BIT", 1UL << 0),
3762     std::make_pair("VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT", 1UL << 1),
3763     std::make_pair("VK_IMAGE_CREATE_SPARSE_ALIASED_BIT", 1UL << 2),
3764     std::make_pair("VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT", 1UL << 3),
3765     std::make_pair("VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT", 1UL << 4),
3766     std::make_pair("VK_IMAGE_CREATE_ALIAS_BIT", 1UL << 10),
3767     std::make_pair("VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT", 1UL << 6),
3768     std::make_pair("VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT", 1UL << 5),
3769     std::make_pair("VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT", 1UL << 7),
3770     std::make_pair("VK_IMAGE_CREATE_EXTENDED_USAGE_BIT", 1UL << 8),
3771     std::make_pair("VK_IMAGE_CREATE_PROTECTED_BIT", 1UL << 11),
3772     std::make_pair("VK_IMAGE_CREATE_DISJOINT_BIT", 1UL << 9),
3773     std::make_pair("VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV", 1UL << 13),
3774     std::make_pair("VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT", 1UL << 12),
3775     std::make_pair("VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT", 1UL << 14),
3776     std::make_pair("VK_IMAGE_CREATE_RESERVED_16_BIT_AMD", 1UL << 16),
3777     std::make_pair("VK_IMAGE_CREATE_RESERVED_394_BIT_EXT", 1UL << 17),
3778     std::make_pair("VK_IMAGE_CREATE_RESERVED_426_BIT_QCOM", 1UL << 15),
3779 };
parse_VkImageCreateFlagBits(const char * s,Json::Value & obj,VkImageCreateFlagBits & o)3780 static void parse_VkImageCreateFlagBits(const char *s, Json::Value &obj, VkImageCreateFlagBits &o)
3781 {
3782     std::string _res = obj.asString();
3783     o                = (VkImageCreateFlagBits)VkImageCreateFlagBits_map[std::string(_res)];
3784 }
3785 
3786 static std::map<std::string, int> VkSampleCountFlagBits_map = {
3787     std::make_pair("VK_SAMPLE_COUNT_1_BIT", 1UL << 0),  std::make_pair("VK_SAMPLE_COUNT_2_BIT", 1UL << 1),
3788     std::make_pair("VK_SAMPLE_COUNT_4_BIT", 1UL << 2),  std::make_pair("VK_SAMPLE_COUNT_8_BIT", 1UL << 3),
3789     std::make_pair("VK_SAMPLE_COUNT_16_BIT", 1UL << 4), std::make_pair("VK_SAMPLE_COUNT_32_BIT", 1UL << 5),
3790     std::make_pair("VK_SAMPLE_COUNT_64_BIT", 1UL << 6),
3791 };
parse_VkSampleCountFlagBits(const char * s,Json::Value & obj,VkSampleCountFlagBits & o)3792 static void parse_VkSampleCountFlagBits(const char *s, Json::Value &obj, VkSampleCountFlagBits &o)
3793 {
3794     std::string _res = obj.asString();
3795     o                = (VkSampleCountFlagBits)VkSampleCountFlagBits_map[std::string(_res)];
3796 }
3797 
3798 static std::map<std::string, int> VkImageTiling_map = {
3799     std::make_pair("VK_IMAGE_TILING_OPTIMAL", 0),
3800     std::make_pair("VK_IMAGE_TILING_LINEAR", 1),
3801     std::make_pair("VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT", 1000158000),
3802 };
parse_VkImageTiling(const char * s,Json::Value & obj,VkImageTiling & o)3803 static void parse_VkImageTiling(const char *s, Json::Value &obj, VkImageTiling &o)
3804 {
3805     std::string _res = obj.asString();
3806     o                = (VkImageTiling)VkImageTiling_map[std::string(_res)];
3807 }
3808 
3809 static std::map<std::string, int> VkImageType_map = {
3810     std::make_pair("VK_IMAGE_TYPE_1D", 0),
3811     std::make_pair("VK_IMAGE_TYPE_2D", 1),
3812     std::make_pair("VK_IMAGE_TYPE_3D", 2),
3813 };
parse_VkImageType(const char * s,Json::Value & obj,VkImageType & o)3814 static void parse_VkImageType(const char *s, Json::Value &obj, VkImageType &o)
3815 {
3816     std::string _res = obj.asString();
3817     o                = (VkImageType)VkImageType_map[std::string(_res)];
3818 }
3819 
3820 static std::map<std::string, int> VkImageUsageFlagBits_map = {
3821     std::make_pair("VK_IMAGE_USAGE_TRANSFER_SRC_BIT", 1UL << 0),
3822     std::make_pair("VK_IMAGE_USAGE_TRANSFER_DST_BIT", 1UL << 1),
3823     std::make_pair("VK_IMAGE_USAGE_SAMPLED_BIT", 1UL << 2),
3824     std::make_pair("VK_IMAGE_USAGE_STORAGE_BIT", 1UL << 3),
3825     std::make_pair("VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT", 1UL << 4),
3826     std::make_pair("VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT", 1UL << 5),
3827     std::make_pair("VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT", 1UL << 6),
3828     std::make_pair("VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT", 1UL << 7),
3829     std::make_pair("VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR", 1UL << 10),
3830     std::make_pair("VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR", 1UL << 11),
3831     std::make_pair("VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR", 1UL << 12),
3832     std::make_pair("VK_IMAGE_USAGE_RESERVED_16_BIT_QCOM", 1UL << 16),
3833     std::make_pair("VK_IMAGE_USAGE_RESERVED_17_BIT_QCOM", 1UL << 17),
3834     std::make_pair("VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT", 1UL << 9),
3835     std::make_pair("VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR", 1UL << 8),
3836     std::make_pair("VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR", 1UL << 13),
3837     std::make_pair("VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR", 1UL << 14),
3838     std::make_pair("VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR", 1UL << 15),
3839     std::make_pair("VK_IMAGE_USAGE_RESERVED_19_BIT_EXT", 1UL << 19),
3840     std::make_pair("VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI", 1UL << 18),
3841 };
parse_VkImageUsageFlagBits(const char * s,Json::Value & obj,VkImageUsageFlagBits & o)3842 static void parse_VkImageUsageFlagBits(const char *s, Json::Value &obj, VkImageUsageFlagBits &o)
3843 {
3844     std::string _res = obj.asString();
3845     o                = (VkImageUsageFlagBits)VkImageUsageFlagBits_map[std::string(_res)];
3846 }
3847 
3848 static std::map<std::string, int> VkMemoryHeapFlagBits_map = {
3849     std::make_pair("VK_MEMORY_HEAP_DEVICE_LOCAL_BIT", 1UL << 0),
3850     std::make_pair("VK_MEMORY_HEAP_MULTI_INSTANCE_BIT", 1UL << 1),
3851     std::make_pair("VK_MEMORY_HEAP_SEU_SAFE_BIT", 1UL << 2),
3852 };
parse_VkMemoryHeapFlagBits(const char * s,Json::Value & obj,VkMemoryHeapFlagBits & o)3853 static void parse_VkMemoryHeapFlagBits(const char *s, Json::Value &obj, VkMemoryHeapFlagBits &o)
3854 {
3855     std::string _res = obj.asString();
3856     o                = (VkMemoryHeapFlagBits)VkMemoryHeapFlagBits_map[std::string(_res)];
3857 }
3858 
3859 static std::map<std::string, int> VkMemoryPropertyFlagBits_map = {
3860     std::make_pair("VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT", 1UL << 0),
3861     std::make_pair("VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT", 1UL << 1),
3862     std::make_pair("VK_MEMORY_PROPERTY_HOST_COHERENT_BIT", 1UL << 2),
3863     std::make_pair("VK_MEMORY_PROPERTY_HOST_CACHED_BIT", 1UL << 3),
3864     std::make_pair("VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT", 1UL << 4),
3865     std::make_pair("VK_MEMORY_PROPERTY_PROTECTED_BIT", 1UL << 5),
3866     std::make_pair("VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD", 1UL << 6),
3867     std::make_pair("VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD", 1UL << 7),
3868     std::make_pair("VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV", 1UL << 8),
3869 };
parse_VkMemoryPropertyFlagBits(const char * s,Json::Value & obj,VkMemoryPropertyFlagBits & o)3870 static void parse_VkMemoryPropertyFlagBits(const char *s, Json::Value &obj, VkMemoryPropertyFlagBits &o)
3871 {
3872     std::string _res = obj.asString();
3873     o                = (VkMemoryPropertyFlagBits)VkMemoryPropertyFlagBits_map[std::string(_res)];
3874 }
3875 
3876 static std::map<std::string, int> VkPhysicalDeviceType_map = {
3877     std::make_pair("VK_PHYSICAL_DEVICE_TYPE_OTHER", 0),
3878     std::make_pair("VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU", 1),
3879     std::make_pair("VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU", 2),
3880     std::make_pair("VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU", 3),
3881     std::make_pair("VK_PHYSICAL_DEVICE_TYPE_CPU", 4),
3882 };
parse_VkPhysicalDeviceType(const char * s,Json::Value & obj,VkPhysicalDeviceType & o)3883 static void parse_VkPhysicalDeviceType(const char *s, Json::Value &obj, VkPhysicalDeviceType &o)
3884 {
3885     std::string _res = obj.asString();
3886     o                = (VkPhysicalDeviceType)VkPhysicalDeviceType_map[std::string(_res)];
3887 }
3888 
3889 static std::map<std::string, int> VkQueueFlagBits_map = {
3890     std::make_pair("VK_QUEUE_GRAPHICS_BIT", 1UL << 0),
3891     std::make_pair("VK_QUEUE_COMPUTE_BIT", 1UL << 1),
3892     std::make_pair("VK_QUEUE_TRANSFER_BIT", 1UL << 2),
3893     std::make_pair("VK_QUEUE_PROTECTED_BIT", 1UL << 4),
3894     std::make_pair("VK_QUEUE_VIDEO_DECODE_BIT_KHR", 1UL << 5),
3895     std::make_pair("VK_QUEUE_VIDEO_ENCODE_BIT_KHR", 1UL << 6),
3896 };
parse_VkQueueFlagBits(const char * s,Json::Value & obj,VkQueueFlagBits & o)3897 static void parse_VkQueueFlagBits(const char *s, Json::Value &obj, VkQueueFlagBits &o)
3898 {
3899     std::string _res = obj.asString();
3900     o                = (VkQueueFlagBits)VkQueueFlagBits_map[std::string(_res)];
3901 }
3902 
3903 static std::map<std::string, int> VkDeviceQueueCreateFlagBits_map = {
3904     std::make_pair("VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT", 1UL << 0),
3905 };
parse_VkDeviceQueueCreateFlagBits(const char * s,Json::Value & obj,VkDeviceQueueCreateFlagBits & o)3906 static void parse_VkDeviceQueueCreateFlagBits(const char *s, Json::Value &obj, VkDeviceQueueCreateFlagBits &o)
3907 {
3908     std::string _res = obj.asString();
3909     o                = (VkDeviceQueueCreateFlagBits)VkDeviceQueueCreateFlagBits_map[std::string(_res)];
3910 }
3911 
3912 static std::map<std::string, int> VkPipelineStageFlagBits_map = {
3913     std::make_pair("VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT", 1UL << 0),
3914     std::make_pair("VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT", 1UL << 1),
3915     std::make_pair("VK_PIPELINE_STAGE_VERTEX_INPUT_BIT", 1UL << 2),
3916     std::make_pair("VK_PIPELINE_STAGE_VERTEX_SHADER_BIT", 1UL << 3),
3917     std::make_pair("VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT", 1UL << 4),
3918     std::make_pair("VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", 1UL << 5),
3919     std::make_pair("VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT", 1UL << 6),
3920     std::make_pair("VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT", 1UL << 7),
3921     std::make_pair("VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT", 1UL << 8),
3922     std::make_pair("VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT", 1UL << 9),
3923     std::make_pair("VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT", 1UL << 10),
3924     std::make_pair("VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT", 1UL << 11),
3925     std::make_pair("VK_PIPELINE_STAGE_TRANSFER_BIT", 1UL << 12),
3926     std::make_pair("VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT", 1UL << 13),
3927     std::make_pair("VK_PIPELINE_STAGE_HOST_BIT", 1UL << 14),
3928     std::make_pair("VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT", 1UL << 15),
3929     std::make_pair("VK_PIPELINE_STAGE_ALL_COMMANDS_BIT", 1UL << 16),
3930     std::make_pair("VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT", 1UL << 24),
3931     std::make_pair("VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT", 1UL << 18),
3932     std::make_pair("VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR", 1UL << 25),
3933     std::make_pair("VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR", 1UL << 21),
3934     std::make_pair("VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV", 1UL << 19),
3935     std::make_pair("VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV", 1UL << 20),
3936     std::make_pair("VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT", 1UL << 23),
3937     std::make_pair("VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR", 1UL << 22),
3938     std::make_pair("VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV", 1UL << 17),
3939     std::make_pair("VK_PIPELINE_STAGE_NONE_KHR", 0),
3940 };
parse_VkPipelineStageFlagBits(const char * s,Json::Value & obj,VkPipelineStageFlagBits & o)3941 static void parse_VkPipelineStageFlagBits(const char *s, Json::Value &obj, VkPipelineStageFlagBits &o)
3942 {
3943     std::string _res = obj.asString();
3944     o                = (VkPipelineStageFlagBits)VkPipelineStageFlagBits_map[std::string(_res)];
3945 }
3946 
3947 static std::map<std::string, int> VkFenceCreateFlagBits_map = {
3948     std::make_pair("VK_FENCE_CREATE_SIGNALED_BIT", 1UL << 0),
3949 };
parse_VkFenceCreateFlagBits(const char * s,Json::Value & obj,VkFenceCreateFlagBits & o)3950 static void parse_VkFenceCreateFlagBits(const char *s, Json::Value &obj, VkFenceCreateFlagBits &o)
3951 {
3952     std::string _res = obj.asString();
3953     o                = (VkFenceCreateFlagBits)VkFenceCreateFlagBits_map[std::string(_res)];
3954 }
3955 
3956 static std::map<std::string, int> VkEventCreateFlagBits_map = {
3957     std::make_pair("VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR", 1UL << 0),
3958 };
parse_VkEventCreateFlagBits(const char * s,Json::Value & obj,VkEventCreateFlagBits & o)3959 static void parse_VkEventCreateFlagBits(const char *s, Json::Value &obj, VkEventCreateFlagBits &o)
3960 {
3961     std::string _res = obj.asString();
3962     o                = (VkEventCreateFlagBits)VkEventCreateFlagBits_map[std::string(_res)];
3963 }
3964 
3965 static std::map<std::string, int> VkQueryPipelineStatisticFlagBits_map = {
3966     std::make_pair("VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT", 1UL << 0),
3967     std::make_pair("VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT", 1UL << 1),
3968     std::make_pair("VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT", 1UL << 2),
3969     std::make_pair("VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT", 1UL << 3),
3970     std::make_pair("VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT", 1UL << 4),
3971     std::make_pair("VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT", 1UL << 5),
3972     std::make_pair("VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT", 1UL << 6),
3973     std::make_pair("VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT", 1UL << 7),
3974     std::make_pair("VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT", 1UL << 8),
3975     std::make_pair("VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT", 1UL << 9),
3976     std::make_pair("VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT", 1UL << 10),
3977 };
parse_VkQueryPipelineStatisticFlagBits(const char * s,Json::Value & obj,VkQueryPipelineStatisticFlagBits & o)3978 static void parse_VkQueryPipelineStatisticFlagBits(const char *s, Json::Value &obj, VkQueryPipelineStatisticFlagBits &o)
3979 {
3980     std::string _res = obj.asString();
3981     o                = (VkQueryPipelineStatisticFlagBits)VkQueryPipelineStatisticFlagBits_map[std::string(_res)];
3982 }
3983 
3984 static std::map<std::string, int> VkQueryType_map = {
3985     std::make_pair("VK_QUERY_TYPE_OCCLUSION", 0),
3986     std::make_pair("VK_QUERY_TYPE_PIPELINE_STATISTICS", 1),
3987     std::make_pair("VK_QUERY_TYPE_TIMESTAMP", 2),
3988     std::make_pair("VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR", 1000023000),
3989     std::make_pair("VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT", 1000028004),
3990     std::make_pair("VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR", 1000116000),
3991     std::make_pair("VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR", 1000150000),
3992     std::make_pair("VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR", 1000150001),
3993     std::make_pair("VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV", 1000165000),
3994     std::make_pair("VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL", 1000210000),
3995     std::make_pair("VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR", 1000299000),
3996 };
parse_VkQueryType(const char * s,Json::Value & obj,VkQueryType & o)3997 static void parse_VkQueryType(const char *s, Json::Value &obj, VkQueryType &o)
3998 {
3999     std::string _res = obj.asString();
4000     o                = (VkQueryType)VkQueryType_map[std::string(_res)];
4001 }
4002 
4003 static std::map<std::string, int> VkQueryResultFlagBits_map = {
4004     std::make_pair("VK_QUERY_RESULT_64_BIT", 1UL << 0),
4005     std::make_pair("VK_QUERY_RESULT_WAIT_BIT", 1UL << 1),
4006     std::make_pair("VK_QUERY_RESULT_WITH_AVAILABILITY_BIT", 1UL << 2),
4007     std::make_pair("VK_QUERY_RESULT_PARTIAL_BIT", 1UL << 3),
4008     std::make_pair("VK_QUERY_RESULT_WITH_STATUS_BIT_KHR", 1UL << 4),
4009 };
parse_VkQueryResultFlagBits(const char * s,Json::Value & obj,VkQueryResultFlagBits & o)4010 static void parse_VkQueryResultFlagBits(const char *s, Json::Value &obj, VkQueryResultFlagBits &o)
4011 {
4012     std::string _res = obj.asString();
4013     o                = (VkQueryResultFlagBits)VkQueryResultFlagBits_map[std::string(_res)];
4014 }
4015 
4016 static std::map<std::string, int> VkBufferCreateFlagBits_map = {
4017     std::make_pair("VK_BUFFER_CREATE_SPARSE_BINDING_BIT", 1UL << 0),
4018     std::make_pair("VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT", 1UL << 1),
4019     std::make_pair("VK_BUFFER_CREATE_SPARSE_ALIASED_BIT", 1UL << 2),
4020     std::make_pair("VK_BUFFER_CREATE_PROTECTED_BIT", 1UL << 3),
4021     std::make_pair("VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT", 1UL << 4),
4022     std::make_pair("VK_BUFFER_CREATE_RESERVED_5_BIT_AMD", 1UL << 5),
4023 };
parse_VkBufferCreateFlagBits(const char * s,Json::Value & obj,VkBufferCreateFlagBits & o)4024 static void parse_VkBufferCreateFlagBits(const char *s, Json::Value &obj, VkBufferCreateFlagBits &o)
4025 {
4026     std::string _res = obj.asString();
4027     o                = (VkBufferCreateFlagBits)VkBufferCreateFlagBits_map[std::string(_res)];
4028 }
4029 
4030 static std::map<std::string, int> VkBufferUsageFlagBits_map = {
4031     std::make_pair("VK_BUFFER_USAGE_TRANSFER_SRC_BIT", 1UL << 0),
4032     std::make_pair("VK_BUFFER_USAGE_TRANSFER_DST_BIT", 1UL << 1),
4033     std::make_pair("VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT", 1UL << 2),
4034     std::make_pair("VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT", 1UL << 3),
4035     std::make_pair("VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT", 1UL << 4),
4036     std::make_pair("VK_BUFFER_USAGE_STORAGE_BUFFER_BIT", 1UL << 5),
4037     std::make_pair("VK_BUFFER_USAGE_INDEX_BUFFER_BIT", 1UL << 6),
4038     std::make_pair("VK_BUFFER_USAGE_VERTEX_BUFFER_BIT", 1UL << 7),
4039     std::make_pair("VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT", 1UL << 8),
4040     std::make_pair("VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT", 1UL << 17),
4041     std::make_pair("VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR", 1UL << 13),
4042     std::make_pair("VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR", 1UL << 14),
4043     std::make_pair("VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT", 1UL << 11),
4044     std::make_pair("VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT", 1UL << 12),
4045     std::make_pair("VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT", 1UL << 9),
4046     std::make_pair("VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR", 1UL << 19),
4047     std::make_pair("VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR", 1UL << 20),
4048     std::make_pair("VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR", 1UL << 10),
4049     std::make_pair("VK_BUFFER_USAGE_RESERVED_18_BIT_QCOM", 1UL << 18),
4050     std::make_pair("VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR", 1UL << 15),
4051     std::make_pair("VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR", 1UL << 16),
4052     std::make_pair("VK_BUFFER_USAGE_RESERVED_21_BIT_AMD", 1UL << 21),
4053     std::make_pair("VK_BUFFER_USAGE_RESERVED_22_BIT_AMD", 1UL << 22),
4054 };
parse_VkBufferUsageFlagBits(const char * s,Json::Value & obj,VkBufferUsageFlagBits & o)4055 static void parse_VkBufferUsageFlagBits(const char *s, Json::Value &obj, VkBufferUsageFlagBits &o)
4056 {
4057     std::string _res = obj.asString();
4058     o                = (VkBufferUsageFlagBits)VkBufferUsageFlagBits_map[std::string(_res)];
4059 }
4060 
4061 static std::map<std::string, int> VkSharingMode_map = {
4062     std::make_pair("VK_SHARING_MODE_EXCLUSIVE", 0),
4063     std::make_pair("VK_SHARING_MODE_CONCURRENT", 1),
4064 };
parse_VkSharingMode(const char * s,Json::Value & obj,VkSharingMode & o)4065 static void parse_VkSharingMode(const char *s, Json::Value &obj, VkSharingMode &o)
4066 {
4067     std::string _res = obj.asString();
4068     o                = (VkSharingMode)VkSharingMode_map[std::string(_res)];
4069 }
4070 
4071 static std::map<std::string, int> VkComponentSwizzle_map = {
4072     std::make_pair("VK_COMPONENT_SWIZZLE_IDENTITY", 0), std::make_pair("VK_COMPONENT_SWIZZLE_ZERO", 1),
4073     std::make_pair("VK_COMPONENT_SWIZZLE_ONE", 2),      std::make_pair("VK_COMPONENT_SWIZZLE_R", 3),
4074     std::make_pair("VK_COMPONENT_SWIZZLE_G", 4),        std::make_pair("VK_COMPONENT_SWIZZLE_B", 5),
4075     std::make_pair("VK_COMPONENT_SWIZZLE_A", 6),
4076 };
parse_VkComponentSwizzle(const char * s,Json::Value & obj,VkComponentSwizzle & o)4077 static void parse_VkComponentSwizzle(const char *s, Json::Value &obj, VkComponentSwizzle &o)
4078 {
4079     std::string _res = obj.asString();
4080     o                = (VkComponentSwizzle)VkComponentSwizzle_map[std::string(_res)];
4081 }
4082 
4083 static std::map<std::string, int> VkImageViewCreateFlagBits_map = {
4084     std::make_pair("VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT", 1UL << 0),
4085     std::make_pair("VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT", 1UL << 1),
4086 };
parse_VkImageViewCreateFlagBits(const char * s,Json::Value & obj,VkImageViewCreateFlagBits & o)4087 static void parse_VkImageViewCreateFlagBits(const char *s, Json::Value &obj, VkImageViewCreateFlagBits &o)
4088 {
4089     std::string _res = obj.asString();
4090     o                = (VkImageViewCreateFlagBits)VkImageViewCreateFlagBits_map[std::string(_res)];
4091 }
4092 
4093 static std::map<std::string, int> VkImageViewType_map = {
4094     std::make_pair("VK_IMAGE_VIEW_TYPE_1D", 0),         std::make_pair("VK_IMAGE_VIEW_TYPE_2D", 1),
4095     std::make_pair("VK_IMAGE_VIEW_TYPE_3D", 2),         std::make_pair("VK_IMAGE_VIEW_TYPE_CUBE", 3),
4096     std::make_pair("VK_IMAGE_VIEW_TYPE_1D_ARRAY", 4),   std::make_pair("VK_IMAGE_VIEW_TYPE_2D_ARRAY", 5),
4097     std::make_pair("VK_IMAGE_VIEW_TYPE_CUBE_ARRAY", 6),
4098 };
parse_VkImageViewType(const char * s,Json::Value & obj,VkImageViewType & o)4099 static void parse_VkImageViewType(const char *s, Json::Value &obj, VkImageViewType &o)
4100 {
4101     std::string _res = obj.asString();
4102     o                = (VkImageViewType)VkImageViewType_map[std::string(_res)];
4103 }
4104 
4105 static std::map<std::string, int> VkPipelineCacheCreateFlagBits_map = {
4106     std::make_pair("VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT", 1UL << 2),
4107     std::make_pair("VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT", 1UL << 1),
4108     std::make_pair("VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT", 1UL << 0),
4109 };
parse_VkPipelineCacheCreateFlagBits(const char * s,Json::Value & obj,VkPipelineCacheCreateFlagBits & o)4110 static void parse_VkPipelineCacheCreateFlagBits(const char *s, Json::Value &obj, VkPipelineCacheCreateFlagBits &o)
4111 {
4112     std::string _res = obj.asString();
4113     o                = (VkPipelineCacheCreateFlagBits)VkPipelineCacheCreateFlagBits_map[std::string(_res)];
4114 }
4115 
4116 static std::map<std::string, int> VkBlendFactor_map = {
4117     std::make_pair("VK_BLEND_FACTOR_ZERO", 0),
4118     std::make_pair("VK_BLEND_FACTOR_ONE", 1),
4119     std::make_pair("VK_BLEND_FACTOR_SRC_COLOR", 2),
4120     std::make_pair("VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR", 3),
4121     std::make_pair("VK_BLEND_FACTOR_DST_COLOR", 4),
4122     std::make_pair("VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR", 5),
4123     std::make_pair("VK_BLEND_FACTOR_SRC_ALPHA", 6),
4124     std::make_pair("VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA", 7),
4125     std::make_pair("VK_BLEND_FACTOR_DST_ALPHA", 8),
4126     std::make_pair("VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA", 9),
4127     std::make_pair("VK_BLEND_FACTOR_CONSTANT_COLOR", 10),
4128     std::make_pair("VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR", 11),
4129     std::make_pair("VK_BLEND_FACTOR_CONSTANT_ALPHA", 12),
4130     std::make_pair("VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA", 13),
4131     std::make_pair("VK_BLEND_FACTOR_SRC_ALPHA_SATURATE", 14),
4132     std::make_pair("VK_BLEND_FACTOR_SRC1_COLOR", 15),
4133     std::make_pair("VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR", 16),
4134     std::make_pair("VK_BLEND_FACTOR_SRC1_ALPHA", 17),
4135     std::make_pair("VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA", 18),
4136 };
parse_VkBlendFactor(const char * s,Json::Value & obj,VkBlendFactor & o)4137 static void parse_VkBlendFactor(const char *s, Json::Value &obj, VkBlendFactor &o)
4138 {
4139     std::string _res = obj.asString();
4140     o                = (VkBlendFactor)VkBlendFactor_map[std::string(_res)];
4141 }
4142 
4143 static std::map<std::string, int> VkBlendOp_map = {
4144     std::make_pair("VK_BLEND_OP_ADD", 0),
4145     std::make_pair("VK_BLEND_OP_SUBTRACT", 1),
4146     std::make_pair("VK_BLEND_OP_REVERSE_SUBTRACT", 2),
4147     std::make_pair("VK_BLEND_OP_MIN", 3),
4148     std::make_pair("VK_BLEND_OP_MAX", 4),
4149     std::make_pair("VK_BLEND_OP_ZERO_EXT", 1000148000),
4150     std::make_pair("VK_BLEND_OP_SRC_EXT", 1000148001),
4151     std::make_pair("VK_BLEND_OP_DST_EXT", 1000148002),
4152     std::make_pair("VK_BLEND_OP_SRC_OVER_EXT", 1000148003),
4153     std::make_pair("VK_BLEND_OP_DST_OVER_EXT", 1000148004),
4154     std::make_pair("VK_BLEND_OP_SRC_IN_EXT", 1000148005),
4155     std::make_pair("VK_BLEND_OP_DST_IN_EXT", 1000148006),
4156     std::make_pair("VK_BLEND_OP_SRC_OUT_EXT", 1000148007),
4157     std::make_pair("VK_BLEND_OP_DST_OUT_EXT", 1000148008),
4158     std::make_pair("VK_BLEND_OP_SRC_ATOP_EXT", 1000148009),
4159     std::make_pair("VK_BLEND_OP_DST_ATOP_EXT", 1000148010),
4160     std::make_pair("VK_BLEND_OP_XOR_EXT", 1000148011),
4161     std::make_pair("VK_BLEND_OP_MULTIPLY_EXT", 1000148012),
4162     std::make_pair("VK_BLEND_OP_SCREEN_EXT", 1000148013),
4163     std::make_pair("VK_BLEND_OP_OVERLAY_EXT", 1000148014),
4164     std::make_pair("VK_BLEND_OP_DARKEN_EXT", 1000148015),
4165     std::make_pair("VK_BLEND_OP_LIGHTEN_EXT", 1000148016),
4166     std::make_pair("VK_BLEND_OP_COLORDODGE_EXT", 1000148017),
4167     std::make_pair("VK_BLEND_OP_COLORBURN_EXT", 1000148018),
4168     std::make_pair("VK_BLEND_OP_HARDLIGHT_EXT", 1000148019),
4169     std::make_pair("VK_BLEND_OP_SOFTLIGHT_EXT", 1000148020),
4170     std::make_pair("VK_BLEND_OP_DIFFERENCE_EXT", 1000148021),
4171     std::make_pair("VK_BLEND_OP_EXCLUSION_EXT", 1000148022),
4172     std::make_pair("VK_BLEND_OP_INVERT_EXT", 1000148023),
4173     std::make_pair("VK_BLEND_OP_INVERT_RGB_EXT", 1000148024),
4174     std::make_pair("VK_BLEND_OP_LINEARDODGE_EXT", 1000148025),
4175     std::make_pair("VK_BLEND_OP_LINEARBURN_EXT", 1000148026),
4176     std::make_pair("VK_BLEND_OP_VIVIDLIGHT_EXT", 1000148027),
4177     std::make_pair("VK_BLEND_OP_LINEARLIGHT_EXT", 1000148028),
4178     std::make_pair("VK_BLEND_OP_PINLIGHT_EXT", 1000148029),
4179     std::make_pair("VK_BLEND_OP_HARDMIX_EXT", 1000148030),
4180     std::make_pair("VK_BLEND_OP_HSL_HUE_EXT", 1000148031),
4181     std::make_pair("VK_BLEND_OP_HSL_SATURATION_EXT", 1000148032),
4182     std::make_pair("VK_BLEND_OP_HSL_COLOR_EXT", 1000148033),
4183     std::make_pair("VK_BLEND_OP_HSL_LUMINOSITY_EXT", 1000148034),
4184     std::make_pair("VK_BLEND_OP_PLUS_EXT", 1000148035),
4185     std::make_pair("VK_BLEND_OP_PLUS_CLAMPED_EXT", 1000148036),
4186     std::make_pair("VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT", 1000148037),
4187     std::make_pair("VK_BLEND_OP_PLUS_DARKER_EXT", 1000148038),
4188     std::make_pair("VK_BLEND_OP_MINUS_EXT", 1000148039),
4189     std::make_pair("VK_BLEND_OP_MINUS_CLAMPED_EXT", 1000148040),
4190     std::make_pair("VK_BLEND_OP_CONTRAST_EXT", 1000148041),
4191     std::make_pair("VK_BLEND_OP_INVERT_OVG_EXT", 1000148042),
4192     std::make_pair("VK_BLEND_OP_RED_EXT", 1000148043),
4193     std::make_pair("VK_BLEND_OP_GREEN_EXT", 1000148044),
4194     std::make_pair("VK_BLEND_OP_BLUE_EXT", 1000148045),
4195 };
parse_VkBlendOp(const char * s,Json::Value & obj,VkBlendOp & o)4196 static void parse_VkBlendOp(const char *s, Json::Value &obj, VkBlendOp &o)
4197 {
4198     std::string _res = obj.asString();
4199     o                = (VkBlendOp)VkBlendOp_map[std::string(_res)];
4200 }
4201 
4202 static std::map<std::string, int> VkColorComponentFlagBits_map = {
4203     std::make_pair("VK_COLOR_COMPONENT_R_BIT", 1UL << 0),
4204     std::make_pair("VK_COLOR_COMPONENT_G_BIT", 1UL << 1),
4205     std::make_pair("VK_COLOR_COMPONENT_B_BIT", 1UL << 2),
4206     std::make_pair("VK_COLOR_COMPONENT_A_BIT", 1UL << 3),
4207 };
parse_VkColorComponentFlagBits(const char * s,Json::Value & obj,VkColorComponentFlagBits & o)4208 static void parse_VkColorComponentFlagBits(const char *s, Json::Value &obj, VkColorComponentFlagBits &o)
4209 {
4210     std::string _res = obj.asString();
4211     o                = (VkColorComponentFlagBits)VkColorComponentFlagBits_map[std::string(_res)];
4212 }
4213 
4214 static std::map<std::string, int> VkCompareOp_map = {
4215     std::make_pair("VK_COMPARE_OP_NEVER", 0),
4216     std::make_pair("VK_COMPARE_OP_LESS", 1),
4217     std::make_pair("VK_COMPARE_OP_EQUAL", 2),
4218     std::make_pair("VK_COMPARE_OP_LESS_OR_EQUAL", 3),
4219     std::make_pair("VK_COMPARE_OP_GREATER", 4),
4220     std::make_pair("VK_COMPARE_OP_NOT_EQUAL", 5),
4221     std::make_pair("VK_COMPARE_OP_GREATER_OR_EQUAL", 6),
4222     std::make_pair("VK_COMPARE_OP_ALWAYS", 7),
4223 };
parse_VkCompareOp(const char * s,Json::Value & obj,VkCompareOp & o)4224 static void parse_VkCompareOp(const char *s, Json::Value &obj, VkCompareOp &o)
4225 {
4226     std::string _res = obj.asString();
4227     o                = (VkCompareOp)VkCompareOp_map[std::string(_res)];
4228 }
4229 
4230 static std::map<std::string, int> VkPipelineCreateFlagBits_map = {
4231     std::make_pair("VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT", 1UL << 0),
4232     std::make_pair("VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT", 1UL << 3),
4233     std::make_pair("VK_PIPELINE_CREATE_DISPATCH_BASE_BIT", 1UL << 4),
4234     std::make_pair("VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR", 1UL << 21),
4235     std::make_pair("VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT", 1UL << 22),
4236     std::make_pair("VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR", 1UL << 14),
4237     std::make_pair("VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR", 1UL << 15),
4238     std::make_pair("VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR", 1UL << 16),
4239     std::make_pair("VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR", 1UL << 17),
4240     std::make_pair("VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR", 1UL << 12),
4241     std::make_pair("VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR", 1UL << 13),
4242     std::make_pair("VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR", 1UL << 19),
4243     std::make_pair("VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV", 1UL << 5),
4244     std::make_pair("VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR", 1UL << 6),
4245     std::make_pair("VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR", 1UL << 7),
4246     std::make_pair("VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV", 1UL << 18),
4247     std::make_pair("VK_PIPELINE_CREATE_LIBRARY_BIT_KHR", 1UL << 11),
4248     std::make_pair("VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT", 1UL << 8),
4249     std::make_pair("VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT", 1UL << 9),
4250     std::make_pair("VK_PIPELINE_CREATE_RESERVED_23_BIT_AMD", 1UL << 23),
4251     std::make_pair("VK_PIPELINE_CREATE_RESERVED_10_BIT_AMD", 1UL << 10),
4252     std::make_pair("VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV", 1UL << 20),
4253 };
parse_VkPipelineCreateFlagBits(const char * s,Json::Value & obj,VkPipelineCreateFlagBits & o)4254 static void parse_VkPipelineCreateFlagBits(const char *s, Json::Value &obj, VkPipelineCreateFlagBits &o)
4255 {
4256     std::string _res = obj.asString();
4257     o                = (VkPipelineCreateFlagBits)VkPipelineCreateFlagBits_map[std::string(_res)];
4258 }
4259 
4260 static std::map<std::string, int> VkPipelineShaderStageCreateFlagBits_map = {
4261     std::make_pair("VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT", 1UL << 0),
4262     std::make_pair("VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT", 1UL << 1),
4263     std::make_pair("VK_PIPELINE_SHADER_STAGE_CREATE_RESERVED_3_BIT_KHR", 1UL << 3),
4264 };
parse_VkPipelineShaderStageCreateFlagBits(const char * s,Json::Value & obj,VkPipelineShaderStageCreateFlagBits & o)4265 static void parse_VkPipelineShaderStageCreateFlagBits(const char *s, Json::Value &obj,
4266                                                       VkPipelineShaderStageCreateFlagBits &o)
4267 {
4268     std::string _res = obj.asString();
4269     o                = (VkPipelineShaderStageCreateFlagBits)VkPipelineShaderStageCreateFlagBits_map[std::string(_res)];
4270 }
4271 
4272 static std::map<std::string, int> VkShaderStageFlagBits_map = {
4273     std::make_pair("VK_SHADER_STAGE_VERTEX_BIT", 1UL << 0),
4274     std::make_pair("VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT", 1UL << 1),
4275     std::make_pair("VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT", 1UL << 2),
4276     std::make_pair("VK_SHADER_STAGE_GEOMETRY_BIT", 1UL << 3),
4277     std::make_pair("VK_SHADER_STAGE_FRAGMENT_BIT", 1UL << 4),
4278     std::make_pair("VK_SHADER_STAGE_COMPUTE_BIT", 1UL << 5),
4279     std::make_pair("VK_SHADER_STAGE_ALL_GRAPHICS", 0x0000001F),
4280     std::make_pair("VK_SHADER_STAGE_ALL", 0x7FFFFFFF),
4281     std::make_pair("VK_SHADER_STAGE_RAYGEN_BIT_KHR", 1UL << 8),
4282     std::make_pair("VK_SHADER_STAGE_ANY_HIT_BIT_KHR", 1UL << 9),
4283     std::make_pair("VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR", 1UL << 10),
4284     std::make_pair("VK_SHADER_STAGE_MISS_BIT_KHR", 1UL << 11),
4285     std::make_pair("VK_SHADER_STAGE_INTERSECTION_BIT_KHR", 1UL << 12),
4286     std::make_pair("VK_SHADER_STAGE_CALLABLE_BIT_KHR", 1UL << 13),
4287     std::make_pair("VK_SHADER_STAGE_TASK_BIT_NV", 1UL << 6),
4288     std::make_pair("VK_SHADER_STAGE_MESH_BIT_NV", 1UL << 7),
4289     std::make_pair("VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI", 1UL << 14),
4290 };
parse_VkShaderStageFlagBits(const char * s,Json::Value & obj,VkShaderStageFlagBits & o)4291 static void parse_VkShaderStageFlagBits(const char *s, Json::Value &obj, VkShaderStageFlagBits &o)
4292 {
4293     std::string _res = obj.asString();
4294     o                = (VkShaderStageFlagBits)VkShaderStageFlagBits_map[std::string(_res)];
4295 }
4296 
4297 static std::map<std::string, int> VkCullModeFlagBits_map = {
4298     std::make_pair("VK_CULL_MODE_NONE", 0),
4299     std::make_pair("VK_CULL_MODE_FRONT_BIT", 1UL << 0),
4300     std::make_pair("VK_CULL_MODE_BACK_BIT", 1UL << 1),
4301     std::make_pair("VK_CULL_MODE_FRONT_AND_BACK", 0x00000003),
4302 };
parse_VkCullModeFlagBits(const char * s,Json::Value & obj,VkCullModeFlagBits & o)4303 static void parse_VkCullModeFlagBits(const char *s, Json::Value &obj, VkCullModeFlagBits &o)
4304 {
4305     std::string _res = obj.asString();
4306     o                = (VkCullModeFlagBits)VkCullModeFlagBits_map[std::string(_res)];
4307 }
4308 
4309 static std::map<std::string, int> VkDynamicState_map = {
4310     std::make_pair("VK_DYNAMIC_STATE_VIEWPORT", 0),
4311     std::make_pair("VK_DYNAMIC_STATE_SCISSOR", 1),
4312     std::make_pair("VK_DYNAMIC_STATE_LINE_WIDTH", 2),
4313     std::make_pair("VK_DYNAMIC_STATE_DEPTH_BIAS", 3),
4314     std::make_pair("VK_DYNAMIC_STATE_BLEND_CONSTANTS", 4),
4315     std::make_pair("VK_DYNAMIC_STATE_DEPTH_BOUNDS", 5),
4316     std::make_pair("VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK", 6),
4317     std::make_pair("VK_DYNAMIC_STATE_STENCIL_WRITE_MASK", 7),
4318     std::make_pair("VK_DYNAMIC_STATE_STENCIL_REFERENCE", 8),
4319     std::make_pair("VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV", 1000087000),
4320     std::make_pair("VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT", 1000099000),
4321     std::make_pair("VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT", 1000143000),
4322     std::make_pair("VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR", 1000347000),
4323     std::make_pair("VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV", 1000164004),
4324     std::make_pair("VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV", 1000164006),
4325     std::make_pair("VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV", 1000205001),
4326     std::make_pair("VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR", 1000226000),
4327     std::make_pair("VK_DYNAMIC_STATE_LINE_STIPPLE_EXT", 1000259000),
4328     std::make_pair("VK_DYNAMIC_STATE_CULL_MODE_EXT", 1000267000),
4329     std::make_pair("VK_DYNAMIC_STATE_FRONT_FACE_EXT", 1000267001),
4330     std::make_pair("VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT", 1000267002),
4331     std::make_pair("VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT", 1000267003),
4332     std::make_pair("VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT", 1000267004),
4333     std::make_pair("VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT", 1000267005),
4334     std::make_pair("VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT", 1000267006),
4335     std::make_pair("VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT", 1000267007),
4336     std::make_pair("VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT", 1000267008),
4337     std::make_pair("VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT", 1000267009),
4338     std::make_pair("VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT", 1000267010),
4339     std::make_pair("VK_DYNAMIC_STATE_STENCIL_OP_EXT", 1000267011),
4340     std::make_pair("VK_DYNAMIC_STATE_VERTEX_INPUT_EXT", 1000352000),
4341     std::make_pair("VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT", 1000377000),
4342     std::make_pair("VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT", 1000377001),
4343     std::make_pair("VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT", 1000377002),
4344     std::make_pair("VK_DYNAMIC_STATE_LOGIC_OP_EXT", 1000377003),
4345     std::make_pair("VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT", 1000377004),
4346     std::make_pair("VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT", 1000381000),
4347 };
parse_VkDynamicState(const char * s,Json::Value & obj,VkDynamicState & o)4348 static void parse_VkDynamicState(const char *s, Json::Value &obj, VkDynamicState &o)
4349 {
4350     std::string _res = obj.asString();
4351     o                = (VkDynamicState)VkDynamicState_map[std::string(_res)];
4352 }
4353 
4354 static std::map<std::string, int> VkFrontFace_map = {
4355     std::make_pair("VK_FRONT_FACE_COUNTER_CLOCKWISE", 0),
4356     std::make_pair("VK_FRONT_FACE_CLOCKWISE", 1),
4357 };
parse_VkFrontFace(const char * s,Json::Value & obj,VkFrontFace & o)4358 static void parse_VkFrontFace(const char *s, Json::Value &obj, VkFrontFace &o)
4359 {
4360     std::string _res = obj.asString();
4361     o                = (VkFrontFace)VkFrontFace_map[std::string(_res)];
4362 }
4363 
4364 static std::map<std::string, int> VkVertexInputRate_map = {
4365     std::make_pair("VK_VERTEX_INPUT_RATE_VERTEX", 0),
4366     std::make_pair("VK_VERTEX_INPUT_RATE_INSTANCE", 1),
4367 };
parse_VkVertexInputRate(const char * s,Json::Value & obj,VkVertexInputRate & o)4368 static void parse_VkVertexInputRate(const char *s, Json::Value &obj, VkVertexInputRate &o)
4369 {
4370     std::string _res = obj.asString();
4371     o                = (VkVertexInputRate)VkVertexInputRate_map[std::string(_res)];
4372 }
4373 
4374 static std::map<std::string, int> VkPrimitiveTopology_map = {
4375     std::make_pair("VK_PRIMITIVE_TOPOLOGY_POINT_LIST", 0),
4376     std::make_pair("VK_PRIMITIVE_TOPOLOGY_LINE_LIST", 1),
4377     std::make_pair("VK_PRIMITIVE_TOPOLOGY_LINE_STRIP", 2),
4378     std::make_pair("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST", 3),
4379     std::make_pair("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP", 4),
4380     std::make_pair("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN", 5),
4381     std::make_pair("VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY", 6),
4382     std::make_pair("VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY", 7),
4383     std::make_pair("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY", 8),
4384     std::make_pair("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY", 9),
4385     std::make_pair("VK_PRIMITIVE_TOPOLOGY_PATCH_LIST", 10),
4386 };
parse_VkPrimitiveTopology(const char * s,Json::Value & obj,VkPrimitiveTopology & o)4387 static void parse_VkPrimitiveTopology(const char *s, Json::Value &obj, VkPrimitiveTopology &o)
4388 {
4389     std::string _res = obj.asString();
4390     o                = (VkPrimitiveTopology)VkPrimitiveTopology_map[std::string(_res)];
4391 }
4392 
4393 static std::map<std::string, int> VkPolygonMode_map = {
4394     std::make_pair("VK_POLYGON_MODE_FILL", 0),
4395     std::make_pair("VK_POLYGON_MODE_LINE", 1),
4396     std::make_pair("VK_POLYGON_MODE_POINT", 2),
4397     std::make_pair("VK_POLYGON_MODE_FILL_RECTANGLE_NV", 1000153000),
4398 };
parse_VkPolygonMode(const char * s,Json::Value & obj,VkPolygonMode & o)4399 static void parse_VkPolygonMode(const char *s, Json::Value &obj, VkPolygonMode &o)
4400 {
4401     std::string _res = obj.asString();
4402     o                = (VkPolygonMode)VkPolygonMode_map[std::string(_res)];
4403 }
4404 
4405 static std::map<std::string, int> VkStencilOp_map = {
4406     std::make_pair("VK_STENCIL_OP_KEEP", 0),
4407     std::make_pair("VK_STENCIL_OP_ZERO", 1),
4408     std::make_pair("VK_STENCIL_OP_REPLACE", 2),
4409     std::make_pair("VK_STENCIL_OP_INCREMENT_AND_CLAMP", 3),
4410     std::make_pair("VK_STENCIL_OP_DECREMENT_AND_CLAMP", 4),
4411     std::make_pair("VK_STENCIL_OP_INVERT", 5),
4412     std::make_pair("VK_STENCIL_OP_INCREMENT_AND_WRAP", 6),
4413     std::make_pair("VK_STENCIL_OP_DECREMENT_AND_WRAP", 7),
4414 };
parse_VkStencilOp(const char * s,Json::Value & obj,VkStencilOp & o)4415 static void parse_VkStencilOp(const char *s, Json::Value &obj, VkStencilOp &o)
4416 {
4417     std::string _res = obj.asString();
4418     o                = (VkStencilOp)VkStencilOp_map[std::string(_res)];
4419 }
4420 
4421 static std::map<std::string, int> VkLogicOp_map = {
4422     std::make_pair("VK_LOGIC_OP_CLEAR", 0),
4423     std::make_pair("VK_LOGIC_OP_AND", 1),
4424     std::make_pair("VK_LOGIC_OP_AND_REVERSE", 2),
4425     std::make_pair("VK_LOGIC_OP_COPY", 3),
4426     std::make_pair("VK_LOGIC_OP_AND_INVERTED", 4),
4427     std::make_pair("VK_LOGIC_OP_NO_OP", 5),
4428     std::make_pair("VK_LOGIC_OP_XOR", 6),
4429     std::make_pair("VK_LOGIC_OP_OR", 7),
4430     std::make_pair("VK_LOGIC_OP_NOR", 8),
4431     std::make_pair("VK_LOGIC_OP_EQUIVALENT", 9),
4432     std::make_pair("VK_LOGIC_OP_INVERT", 10),
4433     std::make_pair("VK_LOGIC_OP_OR_REVERSE", 11),
4434     std::make_pair("VK_LOGIC_OP_COPY_INVERTED", 12),
4435     std::make_pair("VK_LOGIC_OP_OR_INVERTED", 13),
4436     std::make_pair("VK_LOGIC_OP_NAND", 14),
4437     std::make_pair("VK_LOGIC_OP_SET", 15),
4438 };
parse_VkLogicOp(const char * s,Json::Value & obj,VkLogicOp & o)4439 static void parse_VkLogicOp(const char *s, Json::Value &obj, VkLogicOp &o)
4440 {
4441     std::string _res = obj.asString();
4442     o                = (VkLogicOp)VkLogicOp_map[std::string(_res)];
4443 }
4444 
4445 static std::map<std::string, int> VkBorderColor_map = {
4446     std::make_pair("VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK", 0),
4447     std::make_pair("VK_BORDER_COLOR_INT_TRANSPARENT_BLACK", 1),
4448     std::make_pair("VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK", 2),
4449     std::make_pair("VK_BORDER_COLOR_INT_OPAQUE_BLACK", 3),
4450     std::make_pair("VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE", 4),
4451     std::make_pair("VK_BORDER_COLOR_INT_OPAQUE_WHITE", 5),
4452     std::make_pair("VK_BORDER_COLOR_FLOAT_CUSTOM_EXT", 1000287003),
4453     std::make_pair("VK_BORDER_COLOR_INT_CUSTOM_EXT", 1000287004),
4454 };
parse_VkBorderColor(const char * s,Json::Value & obj,VkBorderColor & o)4455 static void parse_VkBorderColor(const char *s, Json::Value &obj, VkBorderColor &o)
4456 {
4457     std::string _res = obj.asString();
4458     o                = (VkBorderColor)VkBorderColor_map[std::string(_res)];
4459 }
4460 
4461 static std::map<std::string, int> VkFilter_map = {
4462     std::make_pair("VK_FILTER_NEAREST", 0),
4463     std::make_pair("VK_FILTER_LINEAR", 1),
4464     std::make_pair("VK_FILTER_CUBIC_IMG", 1000015000),
4465 };
parse_VkFilter(const char * s,Json::Value & obj,VkFilter & o)4466 static void parse_VkFilter(const char *s, Json::Value &obj, VkFilter &o)
4467 {
4468     std::string _res = obj.asString();
4469     o                = (VkFilter)VkFilter_map[std::string(_res)];
4470 }
4471 
4472 static std::map<std::string, int> VkSamplerAddressMode_map = {
4473     std::make_pair("VK_SAMPLER_ADDRESS_MODE_REPEAT", 0),
4474     std::make_pair("VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT", 1),
4475     std::make_pair("VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE", 2),
4476     std::make_pair("VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER", 3),
4477     std::make_pair("VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE", 4),
4478     std::make_pair("VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE", 4),
4479 };
parse_VkSamplerAddressMode(const char * s,Json::Value & obj,VkSamplerAddressMode & o)4480 static void parse_VkSamplerAddressMode(const char *s, Json::Value &obj, VkSamplerAddressMode &o)
4481 {
4482     std::string _res = obj.asString();
4483     o                = (VkSamplerAddressMode)VkSamplerAddressMode_map[std::string(_res)];
4484 }
4485 
4486 static std::map<std::string, int> VkSamplerCreateFlagBits_map = {
4487     std::make_pair("VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT", 1UL << 0),
4488     std::make_pair("VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT", 1UL << 1),
4489     std::make_pair("VK_SAMPLER_CREATE_RESERVED_3_BIT_AMD", 1UL << 3),
4490     std::make_pair("VK_SAMPLER_CREATE_RESERVED_2_BIT_EXT", 1UL << 2),
4491 };
parse_VkSamplerCreateFlagBits(const char * s,Json::Value & obj,VkSamplerCreateFlagBits & o)4492 static void parse_VkSamplerCreateFlagBits(const char *s, Json::Value &obj, VkSamplerCreateFlagBits &o)
4493 {
4494     std::string _res = obj.asString();
4495     o                = (VkSamplerCreateFlagBits)VkSamplerCreateFlagBits_map[std::string(_res)];
4496 }
4497 
4498 static std::map<std::string, int> VkSamplerMipmapMode_map = {
4499     std::make_pair("VK_SAMPLER_MIPMAP_MODE_NEAREST", 0),
4500     std::make_pair("VK_SAMPLER_MIPMAP_MODE_LINEAR", 1),
4501 };
parse_VkSamplerMipmapMode(const char * s,Json::Value & obj,VkSamplerMipmapMode & o)4502 static void parse_VkSamplerMipmapMode(const char *s, Json::Value &obj, VkSamplerMipmapMode &o)
4503 {
4504     std::string _res = obj.asString();
4505     o                = (VkSamplerMipmapMode)VkSamplerMipmapMode_map[std::string(_res)];
4506 }
4507 
4508 static std::map<std::string, int> VkDescriptorPoolCreateFlagBits_map = {
4509     std::make_pair("VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT", 1UL << 0),
4510     std::make_pair("VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT", 1UL << 1),
4511     std::make_pair("VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE", 1UL << 2),
4512 };
parse_VkDescriptorPoolCreateFlagBits(const char * s,Json::Value & obj,VkDescriptorPoolCreateFlagBits & o)4513 static void parse_VkDescriptorPoolCreateFlagBits(const char *s, Json::Value &obj, VkDescriptorPoolCreateFlagBits &o)
4514 {
4515     std::string _res = obj.asString();
4516     o                = (VkDescriptorPoolCreateFlagBits)VkDescriptorPoolCreateFlagBits_map[std::string(_res)];
4517 }
4518 
4519 static std::map<std::string, int> VkDescriptorType_map = {
4520     std::make_pair("VK_DESCRIPTOR_TYPE_SAMPLER", 0),
4521     std::make_pair("VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER", 1),
4522     std::make_pair("VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE", 2),
4523     std::make_pair("VK_DESCRIPTOR_TYPE_STORAGE_IMAGE", 3),
4524     std::make_pair("VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER", 4),
4525     std::make_pair("VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER", 5),
4526     std::make_pair("VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER", 6),
4527     std::make_pair("VK_DESCRIPTOR_TYPE_STORAGE_BUFFER", 7),
4528     std::make_pair("VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC", 8),
4529     std::make_pair("VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC", 9),
4530     std::make_pair("VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT", 10),
4531     std::make_pair("VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT", 1000138000),
4532     std::make_pair("VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR", 1000150000),
4533     std::make_pair("VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV", 1000165000),
4534     std::make_pair("VK_DESCRIPTOR_TYPE_MUTABLE_VALVE", 1000351000),
4535 };
parse_VkDescriptorType(const char * s,Json::Value & obj,VkDescriptorType & o)4536 static void parse_VkDescriptorType(const char *s, Json::Value &obj, VkDescriptorType &o)
4537 {
4538     std::string _res = obj.asString();
4539     o                = (VkDescriptorType)VkDescriptorType_map[std::string(_res)];
4540 }
4541 
4542 static std::map<std::string, int> VkDescriptorSetLayoutCreateFlagBits_map = {
4543     std::make_pair("VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT", 1UL << 1),
4544     std::make_pair("VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR", 1UL << 0),
4545     std::make_pair("VK_DESCRIPTOR_SET_LAYOUT_CREATE_RESERVED_4_BIT_AMD", 1UL << 4),
4546     std::make_pair("VK_DESCRIPTOR_SET_LAYOUT_CREATE_RESERVED_3_BIT_AMD", 1UL << 3),
4547     std::make_pair("VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE", 1UL << 2),
4548 };
parse_VkDescriptorSetLayoutCreateFlagBits(const char * s,Json::Value & obj,VkDescriptorSetLayoutCreateFlagBits & o)4549 static void parse_VkDescriptorSetLayoutCreateFlagBits(const char *s, Json::Value &obj,
4550                                                       VkDescriptorSetLayoutCreateFlagBits &o)
4551 {
4552     std::string _res = obj.asString();
4553     o                = (VkDescriptorSetLayoutCreateFlagBits)VkDescriptorSetLayoutCreateFlagBits_map[std::string(_res)];
4554 }
4555 
4556 static std::map<std::string, int> VkAttachmentDescriptionFlagBits_map = {
4557     std::make_pair("VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT", 1UL << 0),
4558 };
parse_VkAttachmentDescriptionFlagBits(const char * s,Json::Value & obj,VkAttachmentDescriptionFlagBits & o)4559 static void parse_VkAttachmentDescriptionFlagBits(const char *s, Json::Value &obj, VkAttachmentDescriptionFlagBits &o)
4560 {
4561     std::string _res = obj.asString();
4562     o                = (VkAttachmentDescriptionFlagBits)VkAttachmentDescriptionFlagBits_map[std::string(_res)];
4563 }
4564 
4565 static std::map<std::string, int> VkAttachmentLoadOp_map = {
4566     std::make_pair("VK_ATTACHMENT_LOAD_OP_LOAD", 0),
4567     std::make_pair("VK_ATTACHMENT_LOAD_OP_CLEAR", 1),
4568     std::make_pair("VK_ATTACHMENT_LOAD_OP_DONT_CARE", 2),
4569     std::make_pair("VK_ATTACHMENT_LOAD_OP_NONE_EXT", 1000400000),
4570 };
parse_VkAttachmentLoadOp(const char * s,Json::Value & obj,VkAttachmentLoadOp & o)4571 static void parse_VkAttachmentLoadOp(const char *s, Json::Value &obj, VkAttachmentLoadOp &o)
4572 {
4573     std::string _res = obj.asString();
4574     o                = (VkAttachmentLoadOp)VkAttachmentLoadOp_map[std::string(_res)];
4575 }
4576 
4577 static std::map<std::string, int> VkAttachmentStoreOp_map = {
4578     std::make_pair("VK_ATTACHMENT_STORE_OP_STORE", 0),
4579     std::make_pair("VK_ATTACHMENT_STORE_OP_DONT_CARE", 1),
4580     std::make_pair("VK_ATTACHMENT_STORE_OP_NONE_KHR", 1000301000),
4581 };
parse_VkAttachmentStoreOp(const char * s,Json::Value & obj,VkAttachmentStoreOp & o)4582 static void parse_VkAttachmentStoreOp(const char *s, Json::Value &obj, VkAttachmentStoreOp &o)
4583 {
4584     std::string _res = obj.asString();
4585     o                = (VkAttachmentStoreOp)VkAttachmentStoreOp_map[std::string(_res)];
4586 }
4587 
4588 static std::map<std::string, int> VkDependencyFlagBits_map = {
4589     std::make_pair("VK_DEPENDENCY_BY_REGION_BIT", 1UL << 0),
4590     std::make_pair("VK_DEPENDENCY_DEVICE_GROUP_BIT", 1UL << 2),
4591     std::make_pair("VK_DEPENDENCY_VIEW_LOCAL_BIT", 1UL << 1),
4592 };
parse_VkDependencyFlagBits(const char * s,Json::Value & obj,VkDependencyFlagBits & o)4593 static void parse_VkDependencyFlagBits(const char *s, Json::Value &obj, VkDependencyFlagBits &o)
4594 {
4595     std::string _res = obj.asString();
4596     o                = (VkDependencyFlagBits)VkDependencyFlagBits_map[std::string(_res)];
4597 }
4598 
4599 static std::map<std::string, int> VkFramebufferCreateFlagBits_map = {
4600     std::make_pair("VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT", 1UL << 0),
4601 };
parse_VkFramebufferCreateFlagBits(const char * s,Json::Value & obj,VkFramebufferCreateFlagBits & o)4602 static void parse_VkFramebufferCreateFlagBits(const char *s, Json::Value &obj, VkFramebufferCreateFlagBits &o)
4603 {
4604     std::string _res = obj.asString();
4605     o                = (VkFramebufferCreateFlagBits)VkFramebufferCreateFlagBits_map[std::string(_res)];
4606 }
4607 
4608 static std::map<std::string, int> VkPipelineBindPoint_map = {
4609     std::make_pair("VK_PIPELINE_BIND_POINT_GRAPHICS", 0),
4610     std::make_pair("VK_PIPELINE_BIND_POINT_COMPUTE", 1),
4611     std::make_pair("VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR", 1000165000),
4612     std::make_pair("VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI", 1000369003),
4613 };
parse_VkPipelineBindPoint(const char * s,Json::Value & obj,VkPipelineBindPoint & o)4614 static void parse_VkPipelineBindPoint(const char *s, Json::Value &obj, VkPipelineBindPoint &o)
4615 {
4616     std::string _res = obj.asString();
4617     o                = (VkPipelineBindPoint)VkPipelineBindPoint_map[std::string(_res)];
4618 }
4619 
4620 static std::map<std::string, int> VkRenderPassCreateFlagBits_map = {
4621     std::make_pair("VK_RENDER_PASS_CREATE_RESERVED_0_BIT_KHR", 1UL << 0),
4622     std::make_pair("VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM", 1UL << 1),
4623 };
parse_VkRenderPassCreateFlagBits(const char * s,Json::Value & obj,VkRenderPassCreateFlagBits & o)4624 static void parse_VkRenderPassCreateFlagBits(const char *s, Json::Value &obj, VkRenderPassCreateFlagBits &o)
4625 {
4626     std::string _res = obj.asString();
4627     o                = (VkRenderPassCreateFlagBits)VkRenderPassCreateFlagBits_map[std::string(_res)];
4628 }
4629 
4630 static std::map<std::string, int> VkSubpassDescriptionFlagBits_map = {
4631     std::make_pair("VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX", 1UL << 0),
4632     std::make_pair("VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX", 1UL << 1),
4633     std::make_pair("VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM", 1UL << 2),
4634     std::make_pair("VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM", 1UL << 3),
4635     std::make_pair("VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM", 1UL << 4),
4636     std::make_pair("VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM", 1UL << 5),
4637     std::make_pair("VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM", 1UL << 6),
4638 };
parse_VkSubpassDescriptionFlagBits(const char * s,Json::Value & obj,VkSubpassDescriptionFlagBits & o)4639 static void parse_VkSubpassDescriptionFlagBits(const char *s, Json::Value &obj, VkSubpassDescriptionFlagBits &o)
4640 {
4641     std::string _res = obj.asString();
4642     o                = (VkSubpassDescriptionFlagBits)VkSubpassDescriptionFlagBits_map[std::string(_res)];
4643 }
4644 
4645 static std::map<std::string, int> VkCommandPoolCreateFlagBits_map = {
4646     std::make_pair("VK_COMMAND_POOL_CREATE_TRANSIENT_BIT", 1UL << 0),
4647     std::make_pair("VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT", 1UL << 1),
4648     std::make_pair("VK_COMMAND_POOL_CREATE_PROTECTED_BIT", 1UL << 2),
4649 };
parse_VkCommandPoolCreateFlagBits(const char * s,Json::Value & obj,VkCommandPoolCreateFlagBits & o)4650 static void parse_VkCommandPoolCreateFlagBits(const char *s, Json::Value &obj, VkCommandPoolCreateFlagBits &o)
4651 {
4652     std::string _res = obj.asString();
4653     o                = (VkCommandPoolCreateFlagBits)VkCommandPoolCreateFlagBits_map[std::string(_res)];
4654 }
4655 
4656 static std::map<std::string, int> VkCommandPoolResetFlagBits_map = {
4657     std::make_pair("VK_COMMAND_POOL_RESET_RESERVED_1_BIT_COREAVI", 1UL << 1),
4658 };
parse_VkCommandPoolResetFlagBits(const char * s,Json::Value & obj,VkCommandPoolResetFlagBits & o)4659 static void parse_VkCommandPoolResetFlagBits(const char *s, Json::Value &obj, VkCommandPoolResetFlagBits &o)
4660 {
4661     std::string _res = obj.asString();
4662     o                = (VkCommandPoolResetFlagBits)VkCommandPoolResetFlagBits_map[std::string(_res)];
4663 }
4664 
4665 static std::map<std::string, int> VkCommandBufferLevel_map = {
4666     std::make_pair("VK_COMMAND_BUFFER_LEVEL_PRIMARY", 0),
4667     std::make_pair("VK_COMMAND_BUFFER_LEVEL_SECONDARY", 1),
4668 };
parse_VkCommandBufferLevel(const char * s,Json::Value & obj,VkCommandBufferLevel & o)4669 static void parse_VkCommandBufferLevel(const char *s, Json::Value &obj, VkCommandBufferLevel &o)
4670 {
4671     std::string _res = obj.asString();
4672     o                = (VkCommandBufferLevel)VkCommandBufferLevel_map[std::string(_res)];
4673 }
4674 
4675 static std::map<std::string, int> VkCommandBufferUsageFlagBits_map = {
4676     std::make_pair("VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT", 1UL << 0),
4677     std::make_pair("VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT", 1UL << 1),
4678     std::make_pair("VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT", 1UL << 2),
4679 };
parse_VkCommandBufferUsageFlagBits(const char * s,Json::Value & obj,VkCommandBufferUsageFlagBits & o)4680 static void parse_VkCommandBufferUsageFlagBits(const char *s, Json::Value &obj, VkCommandBufferUsageFlagBits &o)
4681 {
4682     std::string _res = obj.asString();
4683     o                = (VkCommandBufferUsageFlagBits)VkCommandBufferUsageFlagBits_map[std::string(_res)];
4684 }
4685 
4686 static std::map<std::string, int> VkQueryControlFlagBits_map = {
4687     std::make_pair("VK_QUERY_CONTROL_PRECISE_BIT", 1UL << 0),
4688 };
parse_VkQueryControlFlagBits(const char * s,Json::Value & obj,VkQueryControlFlagBits & o)4689 static void parse_VkQueryControlFlagBits(const char *s, Json::Value &obj, VkQueryControlFlagBits &o)
4690 {
4691     std::string _res = obj.asString();
4692     o                = (VkQueryControlFlagBits)VkQueryControlFlagBits_map[std::string(_res)];
4693 }
4694 
4695 static std::map<std::string, int> VkCommandBufferResetFlagBits_map = {
4696     std::make_pair("VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT", 1UL << 0),
4697 };
parse_VkCommandBufferResetFlagBits(const char * s,Json::Value & obj,VkCommandBufferResetFlagBits & o)4698 static void parse_VkCommandBufferResetFlagBits(const char *s, Json::Value &obj, VkCommandBufferResetFlagBits &o)
4699 {
4700     std::string _res = obj.asString();
4701     o                = (VkCommandBufferResetFlagBits)VkCommandBufferResetFlagBits_map[std::string(_res)];
4702 }
4703 
4704 static std::map<std::string, int> VkIndexType_map = {
4705     std::make_pair("VK_INDEX_TYPE_UINT16", 0),
4706     std::make_pair("VK_INDEX_TYPE_UINT32", 1),
4707     std::make_pair("VK_INDEX_TYPE_NONE_KHR", 1000165000),
4708     std::make_pair("VK_INDEX_TYPE_UINT8_EXT", 1000265000),
4709 };
parse_VkIndexType(const char * s,Json::Value & obj,VkIndexType & o)4710 static void parse_VkIndexType(const char *s, Json::Value &obj, VkIndexType &o)
4711 {
4712     std::string _res = obj.asString();
4713     o                = (VkIndexType)VkIndexType_map[std::string(_res)];
4714 }
4715 
4716 static std::map<std::string, int> VkStencilFaceFlagBits_map = {
4717     std::make_pair("VK_STENCIL_FACE_FRONT_BIT", 1UL << 0),
4718     std::make_pair("VK_STENCIL_FACE_BACK_BIT", 1UL << 1),
4719     std::make_pair("VK_STENCIL_FACE_FRONT_AND_BACK", 0x00000003),
4720 };
parse_VkStencilFaceFlagBits(const char * s,Json::Value & obj,VkStencilFaceFlagBits & o)4721 static void parse_VkStencilFaceFlagBits(const char *s, Json::Value &obj, VkStencilFaceFlagBits &o)
4722 {
4723     std::string _res = obj.asString();
4724     o                = (VkStencilFaceFlagBits)VkStencilFaceFlagBits_map[std::string(_res)];
4725 }
4726 
4727 static std::map<std::string, int> VkSubpassContents_map = {
4728     std::make_pair("VK_SUBPASS_CONTENTS_INLINE", 0),
4729     std::make_pair("VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS", 1),
4730 };
parse_VkSubpassContents(const char * s,Json::Value & obj,VkSubpassContents & o)4731 static void parse_VkSubpassContents(const char *s, Json::Value &obj, VkSubpassContents &o)
4732 {
4733     std::string _res = obj.asString();
4734     o                = (VkSubpassContents)VkSubpassContents_map[std::string(_res)];
4735 }
4736 
parse_VkAccessFlags(const char * s,Json::Value & obj,VkAccessFlags & o)4737 static void parse_VkAccessFlags(const char *s, Json::Value &obj, VkAccessFlags &o)
4738 {
4739     o                = (VkAccessFlags)0;
4740     std::string _res = obj.asString();
4741     std::vector<std::string> bitmasks;
4742     std::istringstream inputStream(_res);
4743     std::string tempStr;
4744     while (getline(inputStream, tempStr, '|'))
4745     {
4746         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
4747         bitmasks.push_back(tempStr);
4748     }
4749     for (auto &it : bitmasks)
4750     {
4751         o |= (VkAccessFlagBits)VkAccessFlagBits_map[it];
4752     }
4753 }
4754 
parse_VkImageAspectFlags(const char * s,Json::Value & obj,VkImageAspectFlags & o)4755 static void parse_VkImageAspectFlags(const char *s, Json::Value &obj, VkImageAspectFlags &o)
4756 {
4757     o                = (VkImageAspectFlags)0;
4758     std::string _res = obj.asString();
4759     std::vector<std::string> bitmasks;
4760     std::istringstream inputStream(_res);
4761     std::string tempStr;
4762     while (getline(inputStream, tempStr, '|'))
4763     {
4764         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
4765         bitmasks.push_back(tempStr);
4766     }
4767     for (auto &it : bitmasks)
4768     {
4769         o |= (VkImageAspectFlagBits)VkImageAspectFlagBits_map[it];
4770     }
4771 }
4772 
parse_VkFormatFeatureFlags(const char * s,Json::Value & obj,VkFormatFeatureFlags & o)4773 static void parse_VkFormatFeatureFlags(const char *s, Json::Value &obj, VkFormatFeatureFlags &o)
4774 {
4775     o                = (VkFormatFeatureFlags)0;
4776     std::string _res = obj.asString();
4777     std::vector<std::string> bitmasks;
4778     std::istringstream inputStream(_res);
4779     std::string tempStr;
4780     while (getline(inputStream, tempStr, '|'))
4781     {
4782         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
4783         bitmasks.push_back(tempStr);
4784     }
4785     for (auto &it : bitmasks)
4786     {
4787         o |= (VkFormatFeatureFlagBits)VkFormatFeatureFlagBits_map[it];
4788     }
4789 }
4790 
parse_VkImageCreateFlags(const char * s,Json::Value & obj,VkImageCreateFlags & o)4791 static void parse_VkImageCreateFlags(const char *s, Json::Value &obj, VkImageCreateFlags &o)
4792 {
4793     o                = (VkImageCreateFlags)0;
4794     std::string _res = obj.asString();
4795     std::vector<std::string> bitmasks;
4796     std::istringstream inputStream(_res);
4797     std::string tempStr;
4798     while (getline(inputStream, tempStr, '|'))
4799     {
4800         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
4801         bitmasks.push_back(tempStr);
4802     }
4803     for (auto &it : bitmasks)
4804     {
4805         o |= (VkImageCreateFlagBits)VkImageCreateFlagBits_map[it];
4806     }
4807 }
4808 
parse_VkSampleCountFlags(const char * s,Json::Value & obj,VkSampleCountFlags & o)4809 static void parse_VkSampleCountFlags(const char *s, Json::Value &obj, VkSampleCountFlags &o)
4810 {
4811     o                = (VkSampleCountFlags)0;
4812     std::string _res = obj.asString();
4813     std::vector<std::string> bitmasks;
4814     std::istringstream inputStream(_res);
4815     std::string tempStr;
4816     while (getline(inputStream, tempStr, '|'))
4817     {
4818         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
4819         bitmasks.push_back(tempStr);
4820     }
4821     for (auto &it : bitmasks)
4822     {
4823         o |= (VkSampleCountFlagBits)VkSampleCountFlagBits_map[it];
4824     }
4825 }
4826 
parse_VkImageUsageFlags(const char * s,Json::Value & obj,VkImageUsageFlags & o)4827 static void parse_VkImageUsageFlags(const char *s, Json::Value &obj, VkImageUsageFlags &o)
4828 {
4829     o                = (VkImageUsageFlags)0;
4830     std::string _res = obj.asString();
4831     std::vector<std::string> bitmasks;
4832     std::istringstream inputStream(_res);
4833     std::string tempStr;
4834     while (getline(inputStream, tempStr, '|'))
4835     {
4836         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
4837         bitmasks.push_back(tempStr);
4838     }
4839     for (auto &it : bitmasks)
4840     {
4841         o |= (VkImageUsageFlagBits)VkImageUsageFlagBits_map[it];
4842     }
4843 }
4844 
parse_VkInstanceCreateFlags(const char * s,Json::Value & obj,VkInstanceCreateFlags & o)4845 static void parse_VkInstanceCreateFlags(const char *s, Json::Value &obj, VkInstanceCreateFlags &o)
4846 {
4847     if (obj.isString())
4848     {
4849         std::string _res = obj.asString();
4850         sscanf(_res.c_str(), "%u", &o);
4851     }
4852     else
4853     {
4854         o = obj.asUInt();
4855     }
4856 }
4857 
parse_VkMemoryHeapFlags(const char * s,Json::Value & obj,VkMemoryHeapFlags & o)4858 static void parse_VkMemoryHeapFlags(const char *s, Json::Value &obj, VkMemoryHeapFlags &o)
4859 {
4860     o                = (VkMemoryHeapFlags)0;
4861     std::string _res = obj.asString();
4862     std::vector<std::string> bitmasks;
4863     std::istringstream inputStream(_res);
4864     std::string tempStr;
4865     while (getline(inputStream, tempStr, '|'))
4866     {
4867         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
4868         bitmasks.push_back(tempStr);
4869     }
4870     for (auto &it : bitmasks)
4871     {
4872         o |= (VkMemoryHeapFlagBits)VkMemoryHeapFlagBits_map[it];
4873     }
4874 }
4875 
parse_VkMemoryPropertyFlags(const char * s,Json::Value & obj,VkMemoryPropertyFlags & o)4876 static void parse_VkMemoryPropertyFlags(const char *s, Json::Value &obj, VkMemoryPropertyFlags &o)
4877 {
4878     o                = (VkMemoryPropertyFlags)0;
4879     std::string _res = obj.asString();
4880     std::vector<std::string> bitmasks;
4881     std::istringstream inputStream(_res);
4882     std::string tempStr;
4883     while (getline(inputStream, tempStr, '|'))
4884     {
4885         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
4886         bitmasks.push_back(tempStr);
4887     }
4888     for (auto &it : bitmasks)
4889     {
4890         o |= (VkMemoryPropertyFlagBits)VkMemoryPropertyFlagBits_map[it];
4891     }
4892 }
4893 
parse_VkQueueFlags(const char * s,Json::Value & obj,VkQueueFlags & o)4894 static void parse_VkQueueFlags(const char *s, Json::Value &obj, VkQueueFlags &o)
4895 {
4896     o                = (VkQueueFlags)0;
4897     std::string _res = obj.asString();
4898     std::vector<std::string> bitmasks;
4899     std::istringstream inputStream(_res);
4900     std::string tempStr;
4901     while (getline(inputStream, tempStr, '|'))
4902     {
4903         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
4904         bitmasks.push_back(tempStr);
4905     }
4906     for (auto &it : bitmasks)
4907     {
4908         o |= (VkQueueFlagBits)VkQueueFlagBits_map[it];
4909     }
4910 }
4911 
parse_VkDeviceCreateFlags(const char * s,Json::Value & obj,VkDeviceCreateFlags & o)4912 static void parse_VkDeviceCreateFlags(const char *s, Json::Value &obj, VkDeviceCreateFlags &o)
4913 {
4914     if (obj.isString())
4915     {
4916         std::string _res = obj.asString();
4917         sscanf(_res.c_str(), "%u", &o);
4918     }
4919     else
4920     {
4921         o = obj.asUInt();
4922     }
4923 }
4924 
parse_VkDeviceQueueCreateFlags(const char * s,Json::Value & obj,VkDeviceQueueCreateFlags & o)4925 static void parse_VkDeviceQueueCreateFlags(const char *s, Json::Value &obj, VkDeviceQueueCreateFlags &o)
4926 {
4927     o                = (VkDeviceQueueCreateFlags)0;
4928     std::string _res = obj.asString();
4929     std::vector<std::string> bitmasks;
4930     std::istringstream inputStream(_res);
4931     std::string tempStr;
4932     while (getline(inputStream, tempStr, '|'))
4933     {
4934         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
4935         bitmasks.push_back(tempStr);
4936     }
4937     for (auto &it : bitmasks)
4938     {
4939         o |= (VkDeviceQueueCreateFlagBits)VkDeviceQueueCreateFlagBits_map[it];
4940     }
4941 }
4942 
parse_VkPipelineStageFlags(const char * s,Json::Value & obj,VkPipelineStageFlags & o)4943 static void parse_VkPipelineStageFlags(const char *s, Json::Value &obj, VkPipelineStageFlags &o)
4944 {
4945     o                = (VkPipelineStageFlags)0;
4946     std::string _res = obj.asString();
4947     std::vector<std::string> bitmasks;
4948     std::istringstream inputStream(_res);
4949     std::string tempStr;
4950     while (getline(inputStream, tempStr, '|'))
4951     {
4952         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
4953         bitmasks.push_back(tempStr);
4954     }
4955     for (auto &it : bitmasks)
4956     {
4957         o |= (VkPipelineStageFlagBits)VkPipelineStageFlagBits_map[it];
4958     }
4959 }
4960 
parse_VkMemoryMapFlags(const char * s,Json::Value & obj,VkMemoryMapFlags & o)4961 static void parse_VkMemoryMapFlags(const char *s, Json::Value &obj, VkMemoryMapFlags &o)
4962 {
4963     if (obj.isString())
4964     {
4965         std::string _res = obj.asString();
4966         sscanf(_res.c_str(), "%u", &o);
4967     }
4968     else
4969     {
4970         o = obj.asUInt();
4971     }
4972 }
4973 
parse_VkFenceCreateFlags(const char * s,Json::Value & obj,VkFenceCreateFlags & o)4974 static void parse_VkFenceCreateFlags(const char *s, Json::Value &obj, VkFenceCreateFlags &o)
4975 {
4976     o                = (VkFenceCreateFlags)0;
4977     std::string _res = obj.asString();
4978     std::vector<std::string> bitmasks;
4979     std::istringstream inputStream(_res);
4980     std::string tempStr;
4981     while (getline(inputStream, tempStr, '|'))
4982     {
4983         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
4984         bitmasks.push_back(tempStr);
4985     }
4986     for (auto &it : bitmasks)
4987     {
4988         o |= (VkFenceCreateFlagBits)VkFenceCreateFlagBits_map[it];
4989     }
4990 }
4991 
parse_VkSemaphoreCreateFlags(const char * s,Json::Value & obj,VkSemaphoreCreateFlags & o)4992 static void parse_VkSemaphoreCreateFlags(const char *s, Json::Value &obj, VkSemaphoreCreateFlags &o)
4993 {
4994     if (obj.isString())
4995     {
4996         std::string _res = obj.asString();
4997         sscanf(_res.c_str(), "%u", &o);
4998     }
4999     else
5000     {
5001         o = obj.asUInt();
5002     }
5003 }
5004 
parse_VkEventCreateFlags(const char * s,Json::Value & obj,VkEventCreateFlags & o)5005 static void parse_VkEventCreateFlags(const char *s, Json::Value &obj, VkEventCreateFlags &o)
5006 {
5007     o                = (VkEventCreateFlags)0;
5008     std::string _res = obj.asString();
5009     std::vector<std::string> bitmasks;
5010     std::istringstream inputStream(_res);
5011     std::string tempStr;
5012     while (getline(inputStream, tempStr, '|'))
5013     {
5014         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5015         bitmasks.push_back(tempStr);
5016     }
5017     for (auto &it : bitmasks)
5018     {
5019         o |= (VkEventCreateFlagBits)VkEventCreateFlagBits_map[it];
5020     }
5021 }
5022 
parse_VkQueryPipelineStatisticFlags(const char * s,Json::Value & obj,VkQueryPipelineStatisticFlags & o)5023 static void parse_VkQueryPipelineStatisticFlags(const char *s, Json::Value &obj, VkQueryPipelineStatisticFlags &o)
5024 {
5025     o                = (VkQueryPipelineStatisticFlags)0;
5026     std::string _res = obj.asString();
5027     std::vector<std::string> bitmasks;
5028     std::istringstream inputStream(_res);
5029     std::string tempStr;
5030     while (getline(inputStream, tempStr, '|'))
5031     {
5032         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5033         bitmasks.push_back(tempStr);
5034     }
5035     for (auto &it : bitmasks)
5036     {
5037         o |= (VkQueryPipelineStatisticFlagBits)VkQueryPipelineStatisticFlagBits_map[it];
5038     }
5039 }
5040 
parse_VkQueryPoolCreateFlags(const char * s,Json::Value & obj,VkQueryPoolCreateFlags & o)5041 static void parse_VkQueryPoolCreateFlags(const char *s, Json::Value &obj, VkQueryPoolCreateFlags &o)
5042 {
5043     if (obj.isString())
5044     {
5045         std::string _res = obj.asString();
5046         sscanf(_res.c_str(), "%u", &o);
5047     }
5048     else
5049     {
5050         o = obj.asUInt();
5051     }
5052 }
5053 
parse_VkQueryResultFlags(const char * s,Json::Value & obj,VkQueryResultFlags & o)5054 static void parse_VkQueryResultFlags(const char *s, Json::Value &obj, VkQueryResultFlags &o)
5055 {
5056     o                = (VkQueryResultFlags)0;
5057     std::string _res = obj.asString();
5058     std::vector<std::string> bitmasks;
5059     std::istringstream inputStream(_res);
5060     std::string tempStr;
5061     while (getline(inputStream, tempStr, '|'))
5062     {
5063         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5064         bitmasks.push_back(tempStr);
5065     }
5066     for (auto &it : bitmasks)
5067     {
5068         o |= (VkQueryResultFlagBits)VkQueryResultFlagBits_map[it];
5069     }
5070 }
5071 
parse_VkBufferCreateFlags(const char * s,Json::Value & obj,VkBufferCreateFlags & o)5072 static void parse_VkBufferCreateFlags(const char *s, Json::Value &obj, VkBufferCreateFlags &o)
5073 {
5074     o                = (VkBufferCreateFlags)0;
5075     std::string _res = obj.asString();
5076     std::vector<std::string> bitmasks;
5077     std::istringstream inputStream(_res);
5078     std::string tempStr;
5079     while (getline(inputStream, tempStr, '|'))
5080     {
5081         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5082         bitmasks.push_back(tempStr);
5083     }
5084     for (auto &it : bitmasks)
5085     {
5086         o |= (VkBufferCreateFlagBits)VkBufferCreateFlagBits_map[it];
5087     }
5088 }
5089 
parse_VkBufferUsageFlags(const char * s,Json::Value & obj,VkBufferUsageFlags & o)5090 static void parse_VkBufferUsageFlags(const char *s, Json::Value &obj, VkBufferUsageFlags &o)
5091 {
5092     o                = (VkBufferUsageFlags)0;
5093     std::string _res = obj.asString();
5094     std::vector<std::string> bitmasks;
5095     std::istringstream inputStream(_res);
5096     std::string tempStr;
5097     while (getline(inputStream, tempStr, '|'))
5098     {
5099         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5100         bitmasks.push_back(tempStr);
5101     }
5102     for (auto &it : bitmasks)
5103     {
5104         o |= (VkBufferUsageFlagBits)VkBufferUsageFlagBits_map[it];
5105     }
5106 }
5107 
parse_VkBufferViewCreateFlags(const char * s,Json::Value & obj,VkBufferViewCreateFlags & o)5108 static void parse_VkBufferViewCreateFlags(const char *s, Json::Value &obj, VkBufferViewCreateFlags &o)
5109 {
5110     if (obj.isString())
5111     {
5112         std::string _res = obj.asString();
5113         sscanf(_res.c_str(), "%u", &o);
5114     }
5115     else
5116     {
5117         o = obj.asUInt();
5118     }
5119 }
5120 
parse_VkImageViewCreateFlags(const char * s,Json::Value & obj,VkImageViewCreateFlags & o)5121 static void parse_VkImageViewCreateFlags(const char *s, Json::Value &obj, VkImageViewCreateFlags &o)
5122 {
5123     o                = (VkImageViewCreateFlags)0;
5124     std::string _res = obj.asString();
5125     std::vector<std::string> bitmasks;
5126     std::istringstream inputStream(_res);
5127     std::string tempStr;
5128     while (getline(inputStream, tempStr, '|'))
5129     {
5130         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5131         bitmasks.push_back(tempStr);
5132     }
5133     for (auto &it : bitmasks)
5134     {
5135         o |= (VkImageViewCreateFlagBits)VkImageViewCreateFlagBits_map[it];
5136     }
5137 }
5138 
parse_VkPipelineCacheCreateFlags(const char * s,Json::Value & obj,VkPipelineCacheCreateFlags & o)5139 static void parse_VkPipelineCacheCreateFlags(const char *s, Json::Value &obj, VkPipelineCacheCreateFlags &o)
5140 {
5141     o                = (VkPipelineCacheCreateFlags)0;
5142     std::string _res = obj.asString();
5143     std::vector<std::string> bitmasks;
5144     std::istringstream inputStream(_res);
5145     std::string tempStr;
5146     while (getline(inputStream, tempStr, '|'))
5147     {
5148         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5149         bitmasks.push_back(tempStr);
5150     }
5151     for (auto &it : bitmasks)
5152     {
5153         o |= (VkPipelineCacheCreateFlagBits)VkPipelineCacheCreateFlagBits_map[it];
5154     }
5155 }
5156 
parse_VkColorComponentFlags(const char * s,Json::Value & obj,VkColorComponentFlags & o)5157 static void parse_VkColorComponentFlags(const char *s, Json::Value &obj, VkColorComponentFlags &o)
5158 {
5159     o                = (VkColorComponentFlags)0;
5160     std::string _res = obj.asString();
5161     std::vector<std::string> bitmasks;
5162     std::istringstream inputStream(_res);
5163     std::string tempStr;
5164     while (getline(inputStream, tempStr, '|'))
5165     {
5166         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5167         bitmasks.push_back(tempStr);
5168     }
5169     for (auto &it : bitmasks)
5170     {
5171         o |= (VkColorComponentFlagBits)VkColorComponentFlagBits_map[it];
5172     }
5173 }
5174 
parse_VkPipelineCreateFlags(const char * s,Json::Value & obj,VkPipelineCreateFlags & o)5175 static void parse_VkPipelineCreateFlags(const char *s, Json::Value &obj, VkPipelineCreateFlags &o)
5176 {
5177     o                = (VkPipelineCreateFlags)0;
5178     std::string _res = obj.asString();
5179     std::vector<std::string> bitmasks;
5180     std::istringstream inputStream(_res);
5181     std::string tempStr;
5182     while (getline(inputStream, tempStr, '|'))
5183     {
5184         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5185         bitmasks.push_back(tempStr);
5186     }
5187     for (auto &it : bitmasks)
5188     {
5189         o |= (VkPipelineCreateFlagBits)VkPipelineCreateFlagBits_map[it];
5190     }
5191 }
5192 
parse_VkPipelineShaderStageCreateFlags(const char * s,Json::Value & obj,VkPipelineShaderStageCreateFlags & o)5193 static void parse_VkPipelineShaderStageCreateFlags(const char *s, Json::Value &obj, VkPipelineShaderStageCreateFlags &o)
5194 {
5195     o                = (VkPipelineShaderStageCreateFlags)0;
5196     std::string _res = obj.asString();
5197     std::vector<std::string> bitmasks;
5198     std::istringstream inputStream(_res);
5199     std::string tempStr;
5200     while (getline(inputStream, tempStr, '|'))
5201     {
5202         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5203         bitmasks.push_back(tempStr);
5204     }
5205     for (auto &it : bitmasks)
5206     {
5207         o |= (VkPipelineShaderStageCreateFlagBits)VkPipelineShaderStageCreateFlagBits_map[it];
5208     }
5209 }
5210 
parse_VkCullModeFlags(const char * s,Json::Value & obj,VkCullModeFlags & o)5211 static void parse_VkCullModeFlags(const char *s, Json::Value &obj, VkCullModeFlags &o)
5212 {
5213     o                = (VkCullModeFlags)0;
5214     std::string _res = obj.asString();
5215     std::vector<std::string> bitmasks;
5216     std::istringstream inputStream(_res);
5217     std::string tempStr;
5218     while (getline(inputStream, tempStr, '|'))
5219     {
5220         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5221         bitmasks.push_back(tempStr);
5222     }
5223     for (auto &it : bitmasks)
5224     {
5225         o |= (VkCullModeFlagBits)VkCullModeFlagBits_map[it];
5226     }
5227 }
5228 
parse_VkPipelineVertexInputStateCreateFlags(const char * s,Json::Value & obj,VkPipelineVertexInputStateCreateFlags & o)5229 static void parse_VkPipelineVertexInputStateCreateFlags(const char *s, Json::Value &obj,
5230                                                         VkPipelineVertexInputStateCreateFlags &o)
5231 {
5232     if (obj.isString())
5233     {
5234         std::string _res = obj.asString();
5235         sscanf(_res.c_str(), "%u", &o);
5236     }
5237     else
5238     {
5239         o = obj.asUInt();
5240     }
5241 }
5242 
parse_VkPipelineInputAssemblyStateCreateFlags(const char * s,Json::Value & obj,VkPipelineInputAssemblyStateCreateFlags & o)5243 static void parse_VkPipelineInputAssemblyStateCreateFlags(const char *s, Json::Value &obj,
5244                                                           VkPipelineInputAssemblyStateCreateFlags &o)
5245 {
5246     if (obj.isString())
5247     {
5248         std::string _res = obj.asString();
5249         sscanf(_res.c_str(), "%u", &o);
5250     }
5251     else
5252     {
5253         o = obj.asUInt();
5254     }
5255 }
5256 
parse_VkPipelineTessellationStateCreateFlags(const char * s,Json::Value & obj,VkPipelineTessellationStateCreateFlags & o)5257 static void parse_VkPipelineTessellationStateCreateFlags(const char *s, Json::Value &obj,
5258                                                          VkPipelineTessellationStateCreateFlags &o)
5259 {
5260     if (obj.isString())
5261     {
5262         std::string _res = obj.asString();
5263         sscanf(_res.c_str(), "%u", &o);
5264     }
5265     else
5266     {
5267         o = obj.asUInt();
5268     }
5269 }
5270 
parse_VkPipelineViewportStateCreateFlags(const char * s,Json::Value & obj,VkPipelineViewportStateCreateFlags & o)5271 static void parse_VkPipelineViewportStateCreateFlags(const char *s, Json::Value &obj,
5272                                                      VkPipelineViewportStateCreateFlags &o)
5273 {
5274     if (obj.isString())
5275     {
5276         std::string _res = obj.asString();
5277         sscanf(_res.c_str(), "%u", &o);
5278     }
5279     else
5280     {
5281         o = obj.asUInt();
5282     }
5283 }
5284 
parse_VkPipelineRasterizationStateCreateFlags(const char * s,Json::Value & obj,VkPipelineRasterizationStateCreateFlags & o)5285 static void parse_VkPipelineRasterizationStateCreateFlags(const char *s, Json::Value &obj,
5286                                                           VkPipelineRasterizationStateCreateFlags &o)
5287 {
5288     if (obj.isString())
5289     {
5290         std::string _res = obj.asString();
5291         sscanf(_res.c_str(), "%u", &o);
5292     }
5293     else
5294     {
5295         o = obj.asUInt();
5296     }
5297 }
5298 
parse_VkPipelineMultisampleStateCreateFlags(const char * s,Json::Value & obj,VkPipelineMultisampleStateCreateFlags & o)5299 static void parse_VkPipelineMultisampleStateCreateFlags(const char *s, Json::Value &obj,
5300                                                         VkPipelineMultisampleStateCreateFlags &o)
5301 {
5302     if (obj.isString())
5303     {
5304         std::string _res = obj.asString();
5305         sscanf(_res.c_str(), "%u", &o);
5306     }
5307     else
5308     {
5309         o = obj.asUInt();
5310     }
5311 }
5312 
parse_VkPipelineDepthStencilStateCreateFlags(const char * s,Json::Value & obj,VkPipelineDepthStencilStateCreateFlags & o)5313 static void parse_VkPipelineDepthStencilStateCreateFlags(const char *s, Json::Value &obj,
5314                                                          VkPipelineDepthStencilStateCreateFlags &o)
5315 {
5316     if (obj.isString())
5317     {
5318         std::string _res = obj.asString();
5319         sscanf(_res.c_str(), "%u", &o);
5320     }
5321     else
5322     {
5323         o = obj.asUInt();
5324     }
5325 }
5326 
parse_VkPipelineColorBlendStateCreateFlags(const char * s,Json::Value & obj,VkPipelineColorBlendStateCreateFlags & o)5327 static void parse_VkPipelineColorBlendStateCreateFlags(const char *s, Json::Value &obj,
5328                                                        VkPipelineColorBlendStateCreateFlags &o)
5329 {
5330     if (obj.isString())
5331     {
5332         std::string _res = obj.asString();
5333         sscanf(_res.c_str(), "%u", &o);
5334     }
5335     else
5336     {
5337         o = obj.asUInt();
5338     }
5339 }
5340 
parse_VkPipelineDynamicStateCreateFlags(const char * s,Json::Value & obj,VkPipelineDynamicStateCreateFlags & o)5341 static void parse_VkPipelineDynamicStateCreateFlags(const char *s, Json::Value &obj,
5342                                                     VkPipelineDynamicStateCreateFlags &o)
5343 {
5344     if (obj.isString())
5345     {
5346         std::string _res = obj.asString();
5347         sscanf(_res.c_str(), "%u", &o);
5348     }
5349     else
5350     {
5351         o = obj.asUInt();
5352     }
5353 }
5354 
parse_VkPipelineLayoutCreateFlags(const char * s,Json::Value & obj,VkPipelineLayoutCreateFlags & o)5355 static void parse_VkPipelineLayoutCreateFlags(const char *s, Json::Value &obj, VkPipelineLayoutCreateFlags &o)
5356 {
5357     if (obj.isString())
5358     {
5359         std::string _res = obj.asString();
5360         sscanf(_res.c_str(), "%u", &o);
5361     }
5362     else
5363     {
5364         o = obj.asUInt();
5365     }
5366 }
5367 
parse_VkShaderStageFlags(const char * s,Json::Value & obj,VkShaderStageFlags & o)5368 static void parse_VkShaderStageFlags(const char *s, Json::Value &obj, VkShaderStageFlags &o)
5369 {
5370     o                = (VkShaderStageFlags)0;
5371     std::string _res = obj.asString();
5372     std::vector<std::string> bitmasks;
5373     std::istringstream inputStream(_res);
5374     std::string tempStr;
5375     while (getline(inputStream, tempStr, '|'))
5376     {
5377         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5378         bitmasks.push_back(tempStr);
5379     }
5380     for (auto &it : bitmasks)
5381     {
5382         o |= (VkShaderStageFlagBits)VkShaderStageFlagBits_map[it];
5383     }
5384 }
5385 
parse_VkSamplerCreateFlags(const char * s,Json::Value & obj,VkSamplerCreateFlags & o)5386 static void parse_VkSamplerCreateFlags(const char *s, Json::Value &obj, VkSamplerCreateFlags &o)
5387 {
5388     o                = (VkSamplerCreateFlags)0;
5389     std::string _res = obj.asString();
5390     std::vector<std::string> bitmasks;
5391     std::istringstream inputStream(_res);
5392     std::string tempStr;
5393     while (getline(inputStream, tempStr, '|'))
5394     {
5395         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5396         bitmasks.push_back(tempStr);
5397     }
5398     for (auto &it : bitmasks)
5399     {
5400         o |= (VkSamplerCreateFlagBits)VkSamplerCreateFlagBits_map[it];
5401     }
5402 }
5403 
parse_VkDescriptorPoolCreateFlags(const char * s,Json::Value & obj,VkDescriptorPoolCreateFlags & o)5404 static void parse_VkDescriptorPoolCreateFlags(const char *s, Json::Value &obj, VkDescriptorPoolCreateFlags &o)
5405 {
5406     o                = (VkDescriptorPoolCreateFlags)0;
5407     std::string _res = obj.asString();
5408     std::vector<std::string> bitmasks;
5409     std::istringstream inputStream(_res);
5410     std::string tempStr;
5411     while (getline(inputStream, tempStr, '|'))
5412     {
5413         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5414         bitmasks.push_back(tempStr);
5415     }
5416     for (auto &it : bitmasks)
5417     {
5418         o |= (VkDescriptorPoolCreateFlagBits)VkDescriptorPoolCreateFlagBits_map[it];
5419     }
5420 }
5421 
parse_VkDescriptorPoolResetFlags(const char * s,Json::Value & obj,VkDescriptorPoolResetFlags & o)5422 static void parse_VkDescriptorPoolResetFlags(const char *s, Json::Value &obj, VkDescriptorPoolResetFlags &o)
5423 {
5424     if (obj.isString())
5425     {
5426         std::string _res = obj.asString();
5427         sscanf(_res.c_str(), "%u", &o);
5428     }
5429     else
5430     {
5431         o = obj.asUInt();
5432     }
5433 }
5434 
parse_VkDescriptorSetLayoutCreateFlags(const char * s,Json::Value & obj,VkDescriptorSetLayoutCreateFlags & o)5435 static void parse_VkDescriptorSetLayoutCreateFlags(const char *s, Json::Value &obj, VkDescriptorSetLayoutCreateFlags &o)
5436 {
5437     o                = (VkDescriptorSetLayoutCreateFlags)0;
5438     std::string _res = obj.asString();
5439     std::vector<std::string> bitmasks;
5440     std::istringstream inputStream(_res);
5441     std::string tempStr;
5442     while (getline(inputStream, tempStr, '|'))
5443     {
5444         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5445         bitmasks.push_back(tempStr);
5446     }
5447     for (auto &it : bitmasks)
5448     {
5449         o |= (VkDescriptorSetLayoutCreateFlagBits)VkDescriptorSetLayoutCreateFlagBits_map[it];
5450     }
5451 }
5452 
parse_VkAttachmentDescriptionFlags(const char * s,Json::Value & obj,VkAttachmentDescriptionFlags & o)5453 static void parse_VkAttachmentDescriptionFlags(const char *s, Json::Value &obj, VkAttachmentDescriptionFlags &o)
5454 {
5455     o                = (VkAttachmentDescriptionFlags)0;
5456     std::string _res = obj.asString();
5457     std::vector<std::string> bitmasks;
5458     std::istringstream inputStream(_res);
5459     std::string tempStr;
5460     while (getline(inputStream, tempStr, '|'))
5461     {
5462         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5463         bitmasks.push_back(tempStr);
5464     }
5465     for (auto &it : bitmasks)
5466     {
5467         o |= (VkAttachmentDescriptionFlagBits)VkAttachmentDescriptionFlagBits_map[it];
5468     }
5469 }
5470 
parse_VkDependencyFlags(const char * s,Json::Value & obj,VkDependencyFlags & o)5471 static void parse_VkDependencyFlags(const char *s, Json::Value &obj, VkDependencyFlags &o)
5472 {
5473     o                = (VkDependencyFlags)0;
5474     std::string _res = obj.asString();
5475     std::vector<std::string> bitmasks;
5476     std::istringstream inputStream(_res);
5477     std::string tempStr;
5478     while (getline(inputStream, tempStr, '|'))
5479     {
5480         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5481         bitmasks.push_back(tempStr);
5482     }
5483     for (auto &it : bitmasks)
5484     {
5485         o |= (VkDependencyFlagBits)VkDependencyFlagBits_map[it];
5486     }
5487 }
5488 
parse_VkFramebufferCreateFlags(const char * s,Json::Value & obj,VkFramebufferCreateFlags & o)5489 static void parse_VkFramebufferCreateFlags(const char *s, Json::Value &obj, VkFramebufferCreateFlags &o)
5490 {
5491     o                = (VkFramebufferCreateFlags)0;
5492     std::string _res = obj.asString();
5493     std::vector<std::string> bitmasks;
5494     std::istringstream inputStream(_res);
5495     std::string tempStr;
5496     while (getline(inputStream, tempStr, '|'))
5497     {
5498         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5499         bitmasks.push_back(tempStr);
5500     }
5501     for (auto &it : bitmasks)
5502     {
5503         o |= (VkFramebufferCreateFlagBits)VkFramebufferCreateFlagBits_map[it];
5504     }
5505 }
5506 
parse_VkRenderPassCreateFlags(const char * s,Json::Value & obj,VkRenderPassCreateFlags & o)5507 static void parse_VkRenderPassCreateFlags(const char *s, Json::Value &obj, VkRenderPassCreateFlags &o)
5508 {
5509     o                = (VkRenderPassCreateFlags)0;
5510     std::string _res = obj.asString();
5511     std::vector<std::string> bitmasks;
5512     std::istringstream inputStream(_res);
5513     std::string tempStr;
5514     while (getline(inputStream, tempStr, '|'))
5515     {
5516         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5517         bitmasks.push_back(tempStr);
5518     }
5519     for (auto &it : bitmasks)
5520     {
5521         o |= (VkRenderPassCreateFlagBits)VkRenderPassCreateFlagBits_map[it];
5522     }
5523 }
5524 
parse_VkSubpassDescriptionFlags(const char * s,Json::Value & obj,VkSubpassDescriptionFlags & o)5525 static void parse_VkSubpassDescriptionFlags(const char *s, Json::Value &obj, VkSubpassDescriptionFlags &o)
5526 {
5527     o                = (VkSubpassDescriptionFlags)0;
5528     std::string _res = obj.asString();
5529     std::vector<std::string> bitmasks;
5530     std::istringstream inputStream(_res);
5531     std::string tempStr;
5532     while (getline(inputStream, tempStr, '|'))
5533     {
5534         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5535         bitmasks.push_back(tempStr);
5536     }
5537     for (auto &it : bitmasks)
5538     {
5539         o |= (VkSubpassDescriptionFlagBits)VkSubpassDescriptionFlagBits_map[it];
5540     }
5541 }
5542 
parse_VkCommandPoolCreateFlags(const char * s,Json::Value & obj,VkCommandPoolCreateFlags & o)5543 static void parse_VkCommandPoolCreateFlags(const char *s, Json::Value &obj, VkCommandPoolCreateFlags &o)
5544 {
5545     o                = (VkCommandPoolCreateFlags)0;
5546     std::string _res = obj.asString();
5547     std::vector<std::string> bitmasks;
5548     std::istringstream inputStream(_res);
5549     std::string tempStr;
5550     while (getline(inputStream, tempStr, '|'))
5551     {
5552         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5553         bitmasks.push_back(tempStr);
5554     }
5555     for (auto &it : bitmasks)
5556     {
5557         o |= (VkCommandPoolCreateFlagBits)VkCommandPoolCreateFlagBits_map[it];
5558     }
5559 }
5560 
parse_VkCommandPoolResetFlags(const char * s,Json::Value & obj,VkCommandPoolResetFlags & o)5561 static void parse_VkCommandPoolResetFlags(const char *s, Json::Value &obj, VkCommandPoolResetFlags &o)
5562 {
5563     o                = (VkCommandPoolResetFlags)0;
5564     std::string _res = obj.asString();
5565     std::vector<std::string> bitmasks;
5566     std::istringstream inputStream(_res);
5567     std::string tempStr;
5568     while (getline(inputStream, tempStr, '|'))
5569     {
5570         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5571         bitmasks.push_back(tempStr);
5572     }
5573     for (auto &it : bitmasks)
5574     {
5575         o |= (VkCommandPoolResetFlagBits)VkCommandPoolResetFlagBits_map[it];
5576     }
5577 }
5578 
parse_VkCommandBufferUsageFlags(const char * s,Json::Value & obj,VkCommandBufferUsageFlags & o)5579 static void parse_VkCommandBufferUsageFlags(const char *s, Json::Value &obj, VkCommandBufferUsageFlags &o)
5580 {
5581     o                = (VkCommandBufferUsageFlags)0;
5582     std::string _res = obj.asString();
5583     std::vector<std::string> bitmasks;
5584     std::istringstream inputStream(_res);
5585     std::string tempStr;
5586     while (getline(inputStream, tempStr, '|'))
5587     {
5588         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5589         bitmasks.push_back(tempStr);
5590     }
5591     for (auto &it : bitmasks)
5592     {
5593         o |= (VkCommandBufferUsageFlagBits)VkCommandBufferUsageFlagBits_map[it];
5594     }
5595 }
5596 
parse_VkQueryControlFlags(const char * s,Json::Value & obj,VkQueryControlFlags & o)5597 static void parse_VkQueryControlFlags(const char *s, Json::Value &obj, VkQueryControlFlags &o)
5598 {
5599     o                = (VkQueryControlFlags)0;
5600     std::string _res = obj.asString();
5601     std::vector<std::string> bitmasks;
5602     std::istringstream inputStream(_res);
5603     std::string tempStr;
5604     while (getline(inputStream, tempStr, '|'))
5605     {
5606         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5607         bitmasks.push_back(tempStr);
5608     }
5609     for (auto &it : bitmasks)
5610     {
5611         o |= (VkQueryControlFlagBits)VkQueryControlFlagBits_map[it];
5612     }
5613 }
5614 
parse_VkCommandBufferResetFlags(const char * s,Json::Value & obj,VkCommandBufferResetFlags & o)5615 static void parse_VkCommandBufferResetFlags(const char *s, Json::Value &obj, VkCommandBufferResetFlags &o)
5616 {
5617     o                = (VkCommandBufferResetFlags)0;
5618     std::string _res = obj.asString();
5619     std::vector<std::string> bitmasks;
5620     std::istringstream inputStream(_res);
5621     std::string tempStr;
5622     while (getline(inputStream, tempStr, '|'))
5623     {
5624         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5625         bitmasks.push_back(tempStr);
5626     }
5627     for (auto &it : bitmasks)
5628     {
5629         o |= (VkCommandBufferResetFlagBits)VkCommandBufferResetFlagBits_map[it];
5630     }
5631 }
5632 
parse_VkStencilFaceFlags(const char * s,Json::Value & obj,VkStencilFaceFlags & o)5633 static void parse_VkStencilFaceFlags(const char *s, Json::Value &obj, VkStencilFaceFlags &o)
5634 {
5635     o                = (VkStencilFaceFlags)0;
5636     std::string _res = obj.asString();
5637     std::vector<std::string> bitmasks;
5638     std::istringstream inputStream(_res);
5639     std::string tempStr;
5640     while (getline(inputStream, tempStr, '|'))
5641     {
5642         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
5643         bitmasks.push_back(tempStr);
5644     }
5645     for (auto &it : bitmasks)
5646     {
5647         o |= (VkStencilFaceFlagBits)VkStencilFaceFlagBits_map[it];
5648     }
5649 }
5650 
parse_VkExtent2D(const char * s,Json::Value & obj,VkExtent2D & o)5651 static void parse_VkExtent2D(const char *s, Json::Value &obj, VkExtent2D &o)
5652 {
5653 
5654     parse_uint32_t("width", obj["width"], (o.width));
5655 
5656     parse_uint32_t("height", obj["height"], (o.height));
5657 }
5658 
parse_VkExtent3D(const char * s,Json::Value & obj,VkExtent3D & o)5659 static void parse_VkExtent3D(const char *s, Json::Value &obj, VkExtent3D &o)
5660 {
5661 
5662     parse_uint32_t("width", obj["width"], (o.width));
5663 
5664     parse_uint32_t("height", obj["height"], (o.height));
5665 
5666     parse_uint32_t("depth", obj["depth"], (o.depth));
5667 }
5668 
parse_VkOffset2D(const char * s,Json::Value & obj,VkOffset2D & o)5669 static void parse_VkOffset2D(const char *s, Json::Value &obj, VkOffset2D &o)
5670 {
5671 
5672     parse_int32_t("x", obj["x"], (o.x));
5673 
5674     parse_int32_t("y", obj["y"], (o.y));
5675 }
5676 
parse_VkOffset3D(const char * s,Json::Value & obj,VkOffset3D & o)5677 static void parse_VkOffset3D(const char *s, Json::Value &obj, VkOffset3D &o)
5678 {
5679 
5680     parse_int32_t("x", obj["x"], (o.x));
5681 
5682     parse_int32_t("y", obj["y"], (o.y));
5683 
5684     parse_int32_t("z", obj["z"], (o.z));
5685 }
5686 
parse_VkRect2D(const char * s,Json::Value & obj,VkRect2D & o)5687 static void parse_VkRect2D(const char *s, Json::Value &obj, VkRect2D &o)
5688 {
5689 
5690     parse_VkOffset2D("offset", obj["offset"], (o.offset));
5691 
5692     parse_VkExtent2D("extent", obj["extent"], (o.extent));
5693 }
5694 
parse_VkBaseInStructure(const char * s,Json::Value & obj,VkBaseInStructure & o)5695 static void parse_VkBaseInStructure(const char *s, Json::Value &obj, VkBaseInStructure &o)
5696 {
5697 
5698     parse_VkStructureType("sType", obj["sType"], (o.sType));
5699 
5700     o.pNext = (VkBaseInStructure *)parsePNextChain(obj);
5701 }
5702 
parse_VkBaseOutStructure(const char * s,Json::Value & obj,VkBaseOutStructure & o)5703 static void parse_VkBaseOutStructure(const char *s, Json::Value &obj, VkBaseOutStructure &o)
5704 {
5705 
5706     parse_VkStructureType("sType", obj["sType"], (o.sType));
5707 
5708     o.pNext = (VkBaseOutStructure *)parsePNextChain(obj);
5709 }
5710 
parse_VkBufferMemoryBarrier(const char * s,Json::Value & obj,VkBufferMemoryBarrier & o)5711 static void parse_VkBufferMemoryBarrier(const char *s, Json::Value &obj, VkBufferMemoryBarrier &o)
5712 {
5713 
5714     parse_VkStructureType("sType", obj["sType"], (o.sType));
5715 
5716     o.pNext = (VkBufferMemoryBarrier *)parsePNextChain(obj);
5717 
5718     parse_VkAccessFlags("srcAccessMask", obj["srcAccessMask"], (o.srcAccessMask));
5719 
5720     parse_VkAccessFlags("dstAccessMask", obj["dstAccessMask"], (o.dstAccessMask));
5721 
5722     parse_uint32_t("srcQueueFamilyIndex", obj["srcQueueFamilyIndex"], (o.srcQueueFamilyIndex));
5723 
5724     parse_uint32_t("dstQueueFamilyIndex", obj["dstQueueFamilyIndex"], (o.dstQueueFamilyIndex));
5725 
5726     parse_VkDeviceSize("offset", obj["offset"], (o.offset));
5727 
5728     parse_VkDeviceSize("size", obj["size"], (o.size));
5729 }
5730 
parse_VkDispatchIndirectCommand(const char * s,Json::Value & obj,VkDispatchIndirectCommand & o)5731 static void parse_VkDispatchIndirectCommand(const char *s, Json::Value &obj, VkDispatchIndirectCommand &o)
5732 {
5733 
5734     parse_uint32_t("x", obj["x"], (o.x));
5735 
5736     parse_uint32_t("y", obj["y"], (o.y));
5737 
5738     parse_uint32_t("z", obj["z"], (o.z));
5739 }
5740 
parse_VkDrawIndexedIndirectCommand(const char * s,Json::Value & obj,VkDrawIndexedIndirectCommand & o)5741 static void parse_VkDrawIndexedIndirectCommand(const char *s, Json::Value &obj, VkDrawIndexedIndirectCommand &o)
5742 {
5743 
5744     parse_uint32_t("indexCount", obj["indexCount"], (o.indexCount));
5745 
5746     parse_uint32_t("instanceCount", obj["instanceCount"], (o.instanceCount));
5747 
5748     parse_uint32_t("firstIndex", obj["firstIndex"], (o.firstIndex));
5749 
5750     parse_int32_t("vertexOffset", obj["vertexOffset"], (o.vertexOffset));
5751 
5752     parse_uint32_t("firstInstance", obj["firstInstance"], (o.firstInstance));
5753 }
5754 
parse_VkDrawIndirectCommand(const char * s,Json::Value & obj,VkDrawIndirectCommand & o)5755 static void parse_VkDrawIndirectCommand(const char *s, Json::Value &obj, VkDrawIndirectCommand &o)
5756 {
5757 
5758     parse_uint32_t("vertexCount", obj["vertexCount"], (o.vertexCount));
5759 
5760     parse_uint32_t("instanceCount", obj["instanceCount"], (o.instanceCount));
5761 
5762     parse_uint32_t("firstVertex", obj["firstVertex"], (o.firstVertex));
5763 
5764     parse_uint32_t("firstInstance", obj["firstInstance"], (o.firstInstance));
5765 }
5766 
parse_VkImageSubresourceRange(const char * s,Json::Value & obj,VkImageSubresourceRange & o)5767 static void parse_VkImageSubresourceRange(const char *s, Json::Value &obj, VkImageSubresourceRange &o)
5768 {
5769 
5770     parse_VkImageAspectFlags("aspectMask", obj["aspectMask"], (o.aspectMask));
5771 
5772     parse_uint32_t("baseMipLevel", obj["baseMipLevel"], (o.baseMipLevel));
5773 
5774     parse_uint32_t("levelCount", obj["levelCount"], (o.levelCount));
5775 
5776     parse_uint32_t("baseArrayLayer", obj["baseArrayLayer"], (o.baseArrayLayer));
5777 
5778     parse_uint32_t("layerCount", obj["layerCount"], (o.layerCount));
5779 }
5780 
parse_VkImageMemoryBarrier(const char * s,Json::Value & obj,VkImageMemoryBarrier & o)5781 static void parse_VkImageMemoryBarrier(const char *s, Json::Value &obj, VkImageMemoryBarrier &o)
5782 {
5783 
5784     parse_VkStructureType("sType", obj["sType"], (o.sType));
5785 
5786     o.pNext = (VkImageMemoryBarrier *)parsePNextChain(obj);
5787 
5788     parse_VkAccessFlags("srcAccessMask", obj["srcAccessMask"], (o.srcAccessMask));
5789 
5790     parse_VkAccessFlags("dstAccessMask", obj["dstAccessMask"], (o.dstAccessMask));
5791 
5792     parse_VkImageLayout("oldLayout", obj["oldLayout"], (o.oldLayout));
5793 
5794     parse_VkImageLayout("newLayout", obj["newLayout"], (o.newLayout));
5795 
5796     parse_uint32_t("srcQueueFamilyIndex", obj["srcQueueFamilyIndex"], (o.srcQueueFamilyIndex));
5797 
5798     parse_uint32_t("dstQueueFamilyIndex", obj["dstQueueFamilyIndex"], (o.dstQueueFamilyIndex));
5799 
5800     parse_VkImageSubresourceRange("subresourceRange", obj["subresourceRange"], (o.subresourceRange));
5801 }
5802 
parse_VkMemoryBarrier(const char * s,Json::Value & obj,VkMemoryBarrier & o)5803 static void parse_VkMemoryBarrier(const char *s, Json::Value &obj, VkMemoryBarrier &o)
5804 {
5805 
5806     parse_VkStructureType("sType", obj["sType"], (o.sType));
5807 
5808     o.pNext = (VkMemoryBarrier *)parsePNextChain(obj);
5809 
5810     parse_VkAccessFlags("srcAccessMask", obj["srcAccessMask"], (o.srcAccessMask));
5811 
5812     parse_VkAccessFlags("dstAccessMask", obj["dstAccessMask"], (o.dstAccessMask));
5813 }
5814 
parse_VkPipelineCacheHeaderVersionOne(const char * s,Json::Value & obj,VkPipelineCacheHeaderVersionOne & o)5815 static void parse_VkPipelineCacheHeaderVersionOne(const char *s, Json::Value &obj, VkPipelineCacheHeaderVersionOne &o)
5816 {
5817 
5818     parse_uint32_t("headerSize", obj["headerSize"], (o.headerSize));
5819 
5820     parse_VkPipelineCacheHeaderVersion("headerVersion", obj["headerVersion"], (o.headerVersion));
5821 
5822     parse_uint32_t("vendorID", obj["vendorID"], (o.vendorID));
5823 
5824     parse_uint32_t("deviceID", obj["deviceID"], (o.deviceID));
5825 
5826     Json::Value &obj_pipelineCacheUUID_arr = obj["pipelineCacheUUID"];
5827     for (unsigned int i = 0; i < obj_pipelineCacheUUID_arr.size(); i++)
5828     {
5829         parse_uint8_t("pipelineCacheUUID", obj_pipelineCacheUUID_arr[i],
5830                       const_cast<uint8_t &>((o.pipelineCacheUUID[i])));
5831     }
5832 }
5833 
parse_VkAllocationCallbacks(const char * s,Json::Value & obj,VkAllocationCallbacks & o)5834 static void parse_VkAllocationCallbacks(const char *s, Json::Value &obj, VkAllocationCallbacks &o)
5835 {
5836 
5837     /** Note: Ignoring function pointer (PFN_vkAllocationFunction). **/
5838 
5839     /** Note: Ignoring function pointer (PFN_vkReallocationFunction). **/
5840 
5841     /** Note: Ignoring function pointer (PFN_vkFreeFunction). **/
5842 
5843     /** Note: Ignoring function pointer (PFN_vkInternalAllocationNotification). **/
5844 
5845     /** Note: Ignoring function pointer (PFN_vkInternalFreeNotification). **/
5846 }
5847 
parse_VkApplicationInfo(const char * s,Json::Value & obj,VkApplicationInfo & o)5848 static void parse_VkApplicationInfo(const char *s, Json::Value &obj, VkApplicationInfo &o)
5849 {
5850 
5851     parse_VkStructureType("sType", obj["sType"], (o.sType));
5852 
5853     o.pNext = (VkApplicationInfo *)parsePNextChain(obj);
5854 
5855     /** TODO: Handle this - pApplicationName **/
5856 
5857     parse_uint32_t("applicationVersion", obj["applicationVersion"], (o.applicationVersion));
5858 
5859     /** TODO: Handle this - pEngineName **/
5860 
5861     parse_uint32_t("engineVersion", obj["engineVersion"], (o.engineVersion));
5862 
5863     parse_uint32_t("apiVersion", obj["apiVersion"], (o.apiVersion));
5864 }
5865 
parse_VkFormatProperties(const char * s,Json::Value & obj,VkFormatProperties & o)5866 static void parse_VkFormatProperties(const char *s, Json::Value &obj, VkFormatProperties &o)
5867 {
5868 
5869     parse_VkFormatFeatureFlags("linearTilingFeatures", obj["linearTilingFeatures"], (o.linearTilingFeatures));
5870 
5871     parse_VkFormatFeatureFlags("optimalTilingFeatures", obj["optimalTilingFeatures"], (o.optimalTilingFeatures));
5872 
5873     parse_VkFormatFeatureFlags("bufferFeatures", obj["bufferFeatures"], (o.bufferFeatures));
5874 }
5875 
parse_VkImageFormatProperties(const char * s,Json::Value & obj,VkImageFormatProperties & o)5876 static void parse_VkImageFormatProperties(const char *s, Json::Value &obj, VkImageFormatProperties &o)
5877 {
5878 
5879     parse_VkExtent3D("maxExtent", obj["maxExtent"], (o.maxExtent));
5880 
5881     parse_uint32_t("maxMipLevels", obj["maxMipLevels"], (o.maxMipLevels));
5882 
5883     parse_uint32_t("maxArrayLayers", obj["maxArrayLayers"], (o.maxArrayLayers));
5884 
5885     parse_VkSampleCountFlags("sampleCounts", obj["sampleCounts"], (o.sampleCounts));
5886 
5887     parse_VkDeviceSize("maxResourceSize", obj["maxResourceSize"], (o.maxResourceSize));
5888 }
5889 
parse_VkInstanceCreateInfo(const char * s,Json::Value & obj,VkInstanceCreateInfo & o)5890 static void parse_VkInstanceCreateInfo(const char *s, Json::Value &obj, VkInstanceCreateInfo &o)
5891 {
5892 
5893     parse_VkStructureType("sType", obj["sType"], (o.sType));
5894 
5895     o.pNext = (VkInstanceCreateInfo *)parsePNextChain(obj);
5896 
5897     parse_VkInstanceCreateFlags("flags", obj["flags"], (o.flags));
5898 
5899     {
5900         Json::Value &obj_pApplicationInfo = obj["pApplicationInfo"];
5901         const int sz                      = obj_pApplicationInfo.size();
5902         if (obj_pApplicationInfo.size() == 0)
5903         {
5904             (o.pApplicationInfo) = nullptr;
5905         }
5906         else
5907         {
5908             (o.pApplicationInfo) = (VkApplicationInfo *)s_globalMem.allocate(1, sizeof(VkApplicationInfo));
5909             parse_VkApplicationInfo("pApplicationInfo", obj_pApplicationInfo,
5910                                     const_cast<VkApplicationInfo &>(*(o.pApplicationInfo)));
5911         }
5912     }
5913 
5914     parse_uint32_t("enabledLayerCount", obj["enabledLayerCount"], (o.enabledLayerCount));
5915 
5916     /** TODO: Handle this - ppEnabledLayerNames **/
5917 
5918     parse_uint32_t("enabledExtensionCount", obj["enabledExtensionCount"], (o.enabledExtensionCount));
5919 
5920     /** TODO: Handle this - ppEnabledExtensionNames **/
5921 }
5922 
parse_VkMemoryHeap(const char * s,Json::Value & obj,VkMemoryHeap & o)5923 static void parse_VkMemoryHeap(const char *s, Json::Value &obj, VkMemoryHeap &o)
5924 {
5925 
5926     parse_VkDeviceSize("size", obj["size"], (o.size));
5927 
5928     parse_VkMemoryHeapFlags("flags", obj["flags"], (o.flags));
5929 }
5930 
parse_VkMemoryType(const char * s,Json::Value & obj,VkMemoryType & o)5931 static void parse_VkMemoryType(const char *s, Json::Value &obj, VkMemoryType &o)
5932 {
5933 
5934     parse_VkMemoryPropertyFlags("propertyFlags", obj["propertyFlags"], (o.propertyFlags));
5935 
5936     parse_uint32_t("heapIndex", obj["heapIndex"], (o.heapIndex));
5937 }
5938 
parse_VkPhysicalDeviceFeatures(const char * s,Json::Value & obj,VkPhysicalDeviceFeatures & o)5939 static void parse_VkPhysicalDeviceFeatures(const char *s, Json::Value &obj, VkPhysicalDeviceFeatures &o)
5940 {
5941 
5942     parse_VkBool32("robustBufferAccess", obj["robustBufferAccess"], (o.robustBufferAccess));
5943 
5944     parse_VkBool32("fullDrawIndexUint32", obj["fullDrawIndexUint32"], (o.fullDrawIndexUint32));
5945 
5946     parse_VkBool32("imageCubeArray", obj["imageCubeArray"], (o.imageCubeArray));
5947 
5948     parse_VkBool32("independentBlend", obj["independentBlend"], (o.independentBlend));
5949 
5950     parse_VkBool32("geometryShader", obj["geometryShader"], (o.geometryShader));
5951 
5952     parse_VkBool32("tessellationShader", obj["tessellationShader"], (o.tessellationShader));
5953 
5954     parse_VkBool32("sampleRateShading", obj["sampleRateShading"], (o.sampleRateShading));
5955 
5956     parse_VkBool32("dualSrcBlend", obj["dualSrcBlend"], (o.dualSrcBlend));
5957 
5958     parse_VkBool32("logicOp", obj["logicOp"], (o.logicOp));
5959 
5960     parse_VkBool32("multiDrawIndirect", obj["multiDrawIndirect"], (o.multiDrawIndirect));
5961 
5962     parse_VkBool32("drawIndirectFirstInstance", obj["drawIndirectFirstInstance"], (o.drawIndirectFirstInstance));
5963 
5964     parse_VkBool32("depthClamp", obj["depthClamp"], (o.depthClamp));
5965 
5966     parse_VkBool32("depthBiasClamp", obj["depthBiasClamp"], (o.depthBiasClamp));
5967 
5968     parse_VkBool32("fillModeNonSolid", obj["fillModeNonSolid"], (o.fillModeNonSolid));
5969 
5970     parse_VkBool32("depthBounds", obj["depthBounds"], (o.depthBounds));
5971 
5972     parse_VkBool32("wideLines", obj["wideLines"], (o.wideLines));
5973 
5974     parse_VkBool32("largePoints", obj["largePoints"], (o.largePoints));
5975 
5976     parse_VkBool32("alphaToOne", obj["alphaToOne"], (o.alphaToOne));
5977 
5978     parse_VkBool32("multiViewport", obj["multiViewport"], (o.multiViewport));
5979 
5980     parse_VkBool32("samplerAnisotropy", obj["samplerAnisotropy"], (o.samplerAnisotropy));
5981 
5982     parse_VkBool32("textureCompressionETC2", obj["textureCompressionETC2"], (o.textureCompressionETC2));
5983 
5984     parse_VkBool32("textureCompressionASTC_LDR", obj["textureCompressionASTC_LDR"], (o.textureCompressionASTC_LDR));
5985 
5986     parse_VkBool32("textureCompressionBC", obj["textureCompressionBC"], (o.textureCompressionBC));
5987 
5988     parse_VkBool32("occlusionQueryPrecise", obj["occlusionQueryPrecise"], (o.occlusionQueryPrecise));
5989 
5990     parse_VkBool32("pipelineStatisticsQuery", obj["pipelineStatisticsQuery"], (o.pipelineStatisticsQuery));
5991 
5992     parse_VkBool32("vertexPipelineStoresAndAtomics", obj["vertexPipelineStoresAndAtomics"],
5993                    (o.vertexPipelineStoresAndAtomics));
5994 
5995     parse_VkBool32("fragmentStoresAndAtomics", obj["fragmentStoresAndAtomics"], (o.fragmentStoresAndAtomics));
5996 
5997     parse_VkBool32("shaderTessellationAndGeometryPointSize", obj["shaderTessellationAndGeometryPointSize"],
5998                    (o.shaderTessellationAndGeometryPointSize));
5999 
6000     parse_VkBool32("shaderImageGatherExtended", obj["shaderImageGatherExtended"], (o.shaderImageGatherExtended));
6001 
6002     parse_VkBool32("shaderStorageImageExtendedFormats", obj["shaderStorageImageExtendedFormats"],
6003                    (o.shaderStorageImageExtendedFormats));
6004 
6005     parse_VkBool32("shaderStorageImageMultisample", obj["shaderStorageImageMultisample"],
6006                    (o.shaderStorageImageMultisample));
6007 
6008     parse_VkBool32("shaderStorageImageReadWithoutFormat", obj["shaderStorageImageReadWithoutFormat"],
6009                    (o.shaderStorageImageReadWithoutFormat));
6010 
6011     parse_VkBool32("shaderStorageImageWriteWithoutFormat", obj["shaderStorageImageWriteWithoutFormat"],
6012                    (o.shaderStorageImageWriteWithoutFormat));
6013 
6014     parse_VkBool32("shaderUniformBufferArrayDynamicIndexing", obj["shaderUniformBufferArrayDynamicIndexing"],
6015                    (o.shaderUniformBufferArrayDynamicIndexing));
6016 
6017     parse_VkBool32("shaderSampledImageArrayDynamicIndexing", obj["shaderSampledImageArrayDynamicIndexing"],
6018                    (o.shaderSampledImageArrayDynamicIndexing));
6019 
6020     parse_VkBool32("shaderStorageBufferArrayDynamicIndexing", obj["shaderStorageBufferArrayDynamicIndexing"],
6021                    (o.shaderStorageBufferArrayDynamicIndexing));
6022 
6023     parse_VkBool32("shaderStorageImageArrayDynamicIndexing", obj["shaderStorageImageArrayDynamicIndexing"],
6024                    (o.shaderStorageImageArrayDynamicIndexing));
6025 
6026     parse_VkBool32("shaderClipDistance", obj["shaderClipDistance"], (o.shaderClipDistance));
6027 
6028     parse_VkBool32("shaderCullDistance", obj["shaderCullDistance"], (o.shaderCullDistance));
6029 
6030     parse_VkBool32("shaderFloat64", obj["shaderFloat64"], (o.shaderFloat64));
6031 
6032     parse_VkBool32("shaderInt64", obj["shaderInt64"], (o.shaderInt64));
6033 
6034     parse_VkBool32("shaderInt16", obj["shaderInt16"], (o.shaderInt16));
6035 
6036     parse_VkBool32("shaderResourceResidency", obj["shaderResourceResidency"], (o.shaderResourceResidency));
6037 
6038     parse_VkBool32("shaderResourceMinLod", obj["shaderResourceMinLod"], (o.shaderResourceMinLod));
6039 
6040     parse_VkBool32("sparseBinding", obj["sparseBinding"], (o.sparseBinding));
6041 
6042     parse_VkBool32("sparseResidencyBuffer", obj["sparseResidencyBuffer"], (o.sparseResidencyBuffer));
6043 
6044     parse_VkBool32("sparseResidencyImage2D", obj["sparseResidencyImage2D"], (o.sparseResidencyImage2D));
6045 
6046     parse_VkBool32("sparseResidencyImage3D", obj["sparseResidencyImage3D"], (o.sparseResidencyImage3D));
6047 
6048     parse_VkBool32("sparseResidency2Samples", obj["sparseResidency2Samples"], (o.sparseResidency2Samples));
6049 
6050     parse_VkBool32("sparseResidency4Samples", obj["sparseResidency4Samples"], (o.sparseResidency4Samples));
6051 
6052     parse_VkBool32("sparseResidency8Samples", obj["sparseResidency8Samples"], (o.sparseResidency8Samples));
6053 
6054     parse_VkBool32("sparseResidency16Samples", obj["sparseResidency16Samples"], (o.sparseResidency16Samples));
6055 
6056     parse_VkBool32("sparseResidencyAliased", obj["sparseResidencyAliased"], (o.sparseResidencyAliased));
6057 
6058     parse_VkBool32("variableMultisampleRate", obj["variableMultisampleRate"], (o.variableMultisampleRate));
6059 
6060     parse_VkBool32("inheritedQueries", obj["inheritedQueries"], (o.inheritedQueries));
6061 }
6062 
parse_VkPhysicalDeviceLimits(const char * s,Json::Value & obj,VkPhysicalDeviceLimits & o)6063 static void parse_VkPhysicalDeviceLimits(const char *s, Json::Value &obj, VkPhysicalDeviceLimits &o)
6064 {
6065 
6066     parse_uint32_t("maxImageDimension1D", obj["maxImageDimension1D"], (o.maxImageDimension1D));
6067 
6068     parse_uint32_t("maxImageDimension2D", obj["maxImageDimension2D"], (o.maxImageDimension2D));
6069 
6070     parse_uint32_t("maxImageDimension3D", obj["maxImageDimension3D"], (o.maxImageDimension3D));
6071 
6072     parse_uint32_t("maxImageDimensionCube", obj["maxImageDimensionCube"], (o.maxImageDimensionCube));
6073 
6074     parse_uint32_t("maxImageArrayLayers", obj["maxImageArrayLayers"], (o.maxImageArrayLayers));
6075 
6076     parse_uint32_t("maxTexelBufferElements", obj["maxTexelBufferElements"], (o.maxTexelBufferElements));
6077 
6078     parse_uint32_t("maxUniformBufferRange", obj["maxUniformBufferRange"], (o.maxUniformBufferRange));
6079 
6080     parse_uint32_t("maxStorageBufferRange", obj["maxStorageBufferRange"], (o.maxStorageBufferRange));
6081 
6082     parse_uint32_t("maxPushConstantsSize", obj["maxPushConstantsSize"], (o.maxPushConstantsSize));
6083 
6084     parse_uint32_t("maxMemoryAllocationCount", obj["maxMemoryAllocationCount"], (o.maxMemoryAllocationCount));
6085 
6086     parse_uint32_t("maxSamplerAllocationCount", obj["maxSamplerAllocationCount"], (o.maxSamplerAllocationCount));
6087 
6088     parse_VkDeviceSize("bufferImageGranularity", obj["bufferImageGranularity"], (o.bufferImageGranularity));
6089 
6090     parse_VkDeviceSize("sparseAddressSpaceSize", obj["sparseAddressSpaceSize"], (o.sparseAddressSpaceSize));
6091 
6092     parse_uint32_t("maxBoundDescriptorSets", obj["maxBoundDescriptorSets"], (o.maxBoundDescriptorSets));
6093 
6094     parse_uint32_t("maxPerStageDescriptorSamplers", obj["maxPerStageDescriptorSamplers"],
6095                    (o.maxPerStageDescriptorSamplers));
6096 
6097     parse_uint32_t("maxPerStageDescriptorUniformBuffers", obj["maxPerStageDescriptorUniformBuffers"],
6098                    (o.maxPerStageDescriptorUniformBuffers));
6099 
6100     parse_uint32_t("maxPerStageDescriptorStorageBuffers", obj["maxPerStageDescriptorStorageBuffers"],
6101                    (o.maxPerStageDescriptorStorageBuffers));
6102 
6103     parse_uint32_t("maxPerStageDescriptorSampledImages", obj["maxPerStageDescriptorSampledImages"],
6104                    (o.maxPerStageDescriptorSampledImages));
6105 
6106     parse_uint32_t("maxPerStageDescriptorStorageImages", obj["maxPerStageDescriptorStorageImages"],
6107                    (o.maxPerStageDescriptorStorageImages));
6108 
6109     parse_uint32_t("maxPerStageDescriptorInputAttachments", obj["maxPerStageDescriptorInputAttachments"],
6110                    (o.maxPerStageDescriptorInputAttachments));
6111 
6112     parse_uint32_t("maxPerStageResources", obj["maxPerStageResources"], (o.maxPerStageResources));
6113 
6114     parse_uint32_t("maxDescriptorSetSamplers", obj["maxDescriptorSetSamplers"], (o.maxDescriptorSetSamplers));
6115 
6116     parse_uint32_t("maxDescriptorSetUniformBuffers", obj["maxDescriptorSetUniformBuffers"],
6117                    (o.maxDescriptorSetUniformBuffers));
6118 
6119     parse_uint32_t("maxDescriptorSetUniformBuffersDynamic", obj["maxDescriptorSetUniformBuffersDynamic"],
6120                    (o.maxDescriptorSetUniformBuffersDynamic));
6121 
6122     parse_uint32_t("maxDescriptorSetStorageBuffers", obj["maxDescriptorSetStorageBuffers"],
6123                    (o.maxDescriptorSetStorageBuffers));
6124 
6125     parse_uint32_t("maxDescriptorSetStorageBuffersDynamic", obj["maxDescriptorSetStorageBuffersDynamic"],
6126                    (o.maxDescriptorSetStorageBuffersDynamic));
6127 
6128     parse_uint32_t("maxDescriptorSetSampledImages", obj["maxDescriptorSetSampledImages"],
6129                    (o.maxDescriptorSetSampledImages));
6130 
6131     parse_uint32_t("maxDescriptorSetStorageImages", obj["maxDescriptorSetStorageImages"],
6132                    (o.maxDescriptorSetStorageImages));
6133 
6134     parse_uint32_t("maxDescriptorSetInputAttachments", obj["maxDescriptorSetInputAttachments"],
6135                    (o.maxDescriptorSetInputAttachments));
6136 
6137     parse_uint32_t("maxVertexInputAttributes", obj["maxVertexInputAttributes"], (o.maxVertexInputAttributes));
6138 
6139     parse_uint32_t("maxVertexInputBindings", obj["maxVertexInputBindings"], (o.maxVertexInputBindings));
6140 
6141     parse_uint32_t("maxVertexInputAttributeOffset", obj["maxVertexInputAttributeOffset"],
6142                    (o.maxVertexInputAttributeOffset));
6143 
6144     parse_uint32_t("maxVertexInputBindingStride", obj["maxVertexInputBindingStride"], (o.maxVertexInputBindingStride));
6145 
6146     parse_uint32_t("maxVertexOutputComponents", obj["maxVertexOutputComponents"], (o.maxVertexOutputComponents));
6147 
6148     parse_uint32_t("maxTessellationGenerationLevel", obj["maxTessellationGenerationLevel"],
6149                    (o.maxTessellationGenerationLevel));
6150 
6151     parse_uint32_t("maxTessellationPatchSize", obj["maxTessellationPatchSize"], (o.maxTessellationPatchSize));
6152 
6153     parse_uint32_t("maxTessellationControlPerVertexInputComponents",
6154                    obj["maxTessellationControlPerVertexInputComponents"],
6155                    (o.maxTessellationControlPerVertexInputComponents));
6156 
6157     parse_uint32_t("maxTessellationControlPerVertexOutputComponents",
6158                    obj["maxTessellationControlPerVertexOutputComponents"],
6159                    (o.maxTessellationControlPerVertexOutputComponents));
6160 
6161     parse_uint32_t("maxTessellationControlPerPatchOutputComponents",
6162                    obj["maxTessellationControlPerPatchOutputComponents"],
6163                    (o.maxTessellationControlPerPatchOutputComponents));
6164 
6165     parse_uint32_t("maxTessellationControlTotalOutputComponents", obj["maxTessellationControlTotalOutputComponents"],
6166                    (o.maxTessellationControlTotalOutputComponents));
6167 
6168     parse_uint32_t("maxTessellationEvaluationInputComponents", obj["maxTessellationEvaluationInputComponents"],
6169                    (o.maxTessellationEvaluationInputComponents));
6170 
6171     parse_uint32_t("maxTessellationEvaluationOutputComponents", obj["maxTessellationEvaluationOutputComponents"],
6172                    (o.maxTessellationEvaluationOutputComponents));
6173 
6174     parse_uint32_t("maxGeometryShaderInvocations", obj["maxGeometryShaderInvocations"],
6175                    (o.maxGeometryShaderInvocations));
6176 
6177     parse_uint32_t("maxGeometryInputComponents", obj["maxGeometryInputComponents"], (o.maxGeometryInputComponents));
6178 
6179     parse_uint32_t("maxGeometryOutputComponents", obj["maxGeometryOutputComponents"], (o.maxGeometryOutputComponents));
6180 
6181     parse_uint32_t("maxGeometryOutputVertices", obj["maxGeometryOutputVertices"], (o.maxGeometryOutputVertices));
6182 
6183     parse_uint32_t("maxGeometryTotalOutputComponents", obj["maxGeometryTotalOutputComponents"],
6184                    (o.maxGeometryTotalOutputComponents));
6185 
6186     parse_uint32_t("maxFragmentInputComponents", obj["maxFragmentInputComponents"], (o.maxFragmentInputComponents));
6187 
6188     parse_uint32_t("maxFragmentOutputAttachments", obj["maxFragmentOutputAttachments"],
6189                    (o.maxFragmentOutputAttachments));
6190 
6191     parse_uint32_t("maxFragmentDualSrcAttachments", obj["maxFragmentDualSrcAttachments"],
6192                    (o.maxFragmentDualSrcAttachments));
6193 
6194     parse_uint32_t("maxFragmentCombinedOutputResources", obj["maxFragmentCombinedOutputResources"],
6195                    (o.maxFragmentCombinedOutputResources));
6196 
6197     parse_uint32_t("maxComputeSharedMemorySize", obj["maxComputeSharedMemorySize"], (o.maxComputeSharedMemorySize));
6198 
6199     Json::Value &obj_maxComputeWorkGroupCount_arr = obj["maxComputeWorkGroupCount"];
6200     for (unsigned int i = 0; i < obj_maxComputeWorkGroupCount_arr.size(); i++)
6201     {
6202         parse_uint32_t("maxComputeWorkGroupCount", obj_maxComputeWorkGroupCount_arr[i],
6203                        const_cast<uint32_t &>((o.maxComputeWorkGroupCount[i])));
6204     }
6205 
6206     parse_uint32_t("maxComputeWorkGroupInvocations", obj["maxComputeWorkGroupInvocations"],
6207                    (o.maxComputeWorkGroupInvocations));
6208 
6209     Json::Value &obj_maxComputeWorkGroupSize_arr = obj["maxComputeWorkGroupSize"];
6210     for (unsigned int i = 0; i < obj_maxComputeWorkGroupSize_arr.size(); i++)
6211     {
6212         parse_uint32_t("maxComputeWorkGroupSize", obj_maxComputeWorkGroupSize_arr[i],
6213                        const_cast<uint32_t &>((o.maxComputeWorkGroupSize[i])));
6214     }
6215 
6216     parse_uint32_t("subPixelPrecisionBits", obj["subPixelPrecisionBits"], (o.subPixelPrecisionBits));
6217 
6218     parse_uint32_t("subTexelPrecisionBits", obj["subTexelPrecisionBits"], (o.subTexelPrecisionBits));
6219 
6220     parse_uint32_t("mipmapPrecisionBits", obj["mipmapPrecisionBits"], (o.mipmapPrecisionBits));
6221 
6222     parse_uint32_t("maxDrawIndexedIndexValue", obj["maxDrawIndexedIndexValue"], (o.maxDrawIndexedIndexValue));
6223 
6224     parse_uint32_t("maxDrawIndirectCount", obj["maxDrawIndirectCount"], (o.maxDrawIndirectCount));
6225 
6226     parse_float("maxSamplerLodBias", obj["maxSamplerLodBias"], (o.maxSamplerLodBias));
6227 
6228     parse_float("maxSamplerAnisotropy", obj["maxSamplerAnisotropy"], (o.maxSamplerAnisotropy));
6229 
6230     parse_uint32_t("maxViewports", obj["maxViewports"], (o.maxViewports));
6231 
6232     Json::Value &obj_maxViewportDimensions_arr = obj["maxViewportDimensions"];
6233     for (unsigned int i = 0; i < obj_maxViewportDimensions_arr.size(); i++)
6234     {
6235         parse_uint32_t("maxViewportDimensions", obj_maxViewportDimensions_arr[i],
6236                        const_cast<uint32_t &>((o.maxViewportDimensions[i])));
6237     }
6238 
6239     Json::Value &obj_viewportBoundsRange_arr = obj["viewportBoundsRange"];
6240     for (unsigned int i = 0; i < obj_viewportBoundsRange_arr.size(); i++)
6241     {
6242         parse_float("viewportBoundsRange", obj_viewportBoundsRange_arr[i],
6243                     const_cast<float &>((o.viewportBoundsRange[i])));
6244     }
6245 
6246     parse_uint32_t("viewportSubPixelBits", obj["viewportSubPixelBits"], (o.viewportSubPixelBits));
6247 
6248     parse_size_t("minMemoryMapAlignment", obj["minMemoryMapAlignment"], (o.minMemoryMapAlignment));
6249 
6250     parse_VkDeviceSize("minTexelBufferOffsetAlignment", obj["minTexelBufferOffsetAlignment"],
6251                        (o.minTexelBufferOffsetAlignment));
6252 
6253     parse_VkDeviceSize("minUniformBufferOffsetAlignment", obj["minUniformBufferOffsetAlignment"],
6254                        (o.minUniformBufferOffsetAlignment));
6255 
6256     parse_VkDeviceSize("minStorageBufferOffsetAlignment", obj["minStorageBufferOffsetAlignment"],
6257                        (o.minStorageBufferOffsetAlignment));
6258 
6259     parse_int32_t("minTexelOffset", obj["minTexelOffset"], (o.minTexelOffset));
6260 
6261     parse_uint32_t("maxTexelOffset", obj["maxTexelOffset"], (o.maxTexelOffset));
6262 
6263     parse_int32_t("minTexelGatherOffset", obj["minTexelGatherOffset"], (o.minTexelGatherOffset));
6264 
6265     parse_uint32_t("maxTexelGatherOffset", obj["maxTexelGatherOffset"], (o.maxTexelGatherOffset));
6266 
6267     parse_float("minInterpolationOffset", obj["minInterpolationOffset"], (o.minInterpolationOffset));
6268 
6269     parse_float("maxInterpolationOffset", obj["maxInterpolationOffset"], (o.maxInterpolationOffset));
6270 
6271     parse_uint32_t("subPixelInterpolationOffsetBits", obj["subPixelInterpolationOffsetBits"],
6272                    (o.subPixelInterpolationOffsetBits));
6273 
6274     parse_uint32_t("maxFramebufferWidth", obj["maxFramebufferWidth"], (o.maxFramebufferWidth));
6275 
6276     parse_uint32_t("maxFramebufferHeight", obj["maxFramebufferHeight"], (o.maxFramebufferHeight));
6277 
6278     parse_uint32_t("maxFramebufferLayers", obj["maxFramebufferLayers"], (o.maxFramebufferLayers));
6279 
6280     parse_VkSampleCountFlags("framebufferColorSampleCounts", obj["framebufferColorSampleCounts"],
6281                              (o.framebufferColorSampleCounts));
6282 
6283     parse_VkSampleCountFlags("framebufferDepthSampleCounts", obj["framebufferDepthSampleCounts"],
6284                              (o.framebufferDepthSampleCounts));
6285 
6286     parse_VkSampleCountFlags("framebufferStencilSampleCounts", obj["framebufferStencilSampleCounts"],
6287                              (o.framebufferStencilSampleCounts));
6288 
6289     parse_VkSampleCountFlags("framebufferNoAttachmentsSampleCounts", obj["framebufferNoAttachmentsSampleCounts"],
6290                              (o.framebufferNoAttachmentsSampleCounts));
6291 
6292     parse_uint32_t("maxColorAttachments", obj["maxColorAttachments"], (o.maxColorAttachments));
6293 
6294     parse_VkSampleCountFlags("sampledImageColorSampleCounts", obj["sampledImageColorSampleCounts"],
6295                              (o.sampledImageColorSampleCounts));
6296 
6297     parse_VkSampleCountFlags("sampledImageIntegerSampleCounts", obj["sampledImageIntegerSampleCounts"],
6298                              (o.sampledImageIntegerSampleCounts));
6299 
6300     parse_VkSampleCountFlags("sampledImageDepthSampleCounts", obj["sampledImageDepthSampleCounts"],
6301                              (o.sampledImageDepthSampleCounts));
6302 
6303     parse_VkSampleCountFlags("sampledImageStencilSampleCounts", obj["sampledImageStencilSampleCounts"],
6304                              (o.sampledImageStencilSampleCounts));
6305 
6306     parse_VkSampleCountFlags("storageImageSampleCounts", obj["storageImageSampleCounts"], (o.storageImageSampleCounts));
6307 
6308     parse_uint32_t("maxSampleMaskWords", obj["maxSampleMaskWords"], (o.maxSampleMaskWords));
6309 
6310     parse_VkBool32("timestampComputeAndGraphics", obj["timestampComputeAndGraphics"], (o.timestampComputeAndGraphics));
6311 
6312     parse_float("timestampPeriod", obj["timestampPeriod"], (o.timestampPeriod));
6313 
6314     parse_uint32_t("maxClipDistances", obj["maxClipDistances"], (o.maxClipDistances));
6315 
6316     parse_uint32_t("maxCullDistances", obj["maxCullDistances"], (o.maxCullDistances));
6317 
6318     parse_uint32_t("maxCombinedClipAndCullDistances", obj["maxCombinedClipAndCullDistances"],
6319                    (o.maxCombinedClipAndCullDistances));
6320 
6321     parse_uint32_t("discreteQueuePriorities", obj["discreteQueuePriorities"], (o.discreteQueuePriorities));
6322 
6323     Json::Value &obj_pointSizeRange_arr = obj["pointSizeRange"];
6324     for (unsigned int i = 0; i < obj_pointSizeRange_arr.size(); i++)
6325     {
6326         parse_float("pointSizeRange", obj_pointSizeRange_arr[i], const_cast<float &>((o.pointSizeRange[i])));
6327     }
6328 
6329     Json::Value &obj_lineWidthRange_arr = obj["lineWidthRange"];
6330     for (unsigned int i = 0; i < obj_lineWidthRange_arr.size(); i++)
6331     {
6332         parse_float("lineWidthRange", obj_lineWidthRange_arr[i], const_cast<float &>((o.lineWidthRange[i])));
6333     }
6334 
6335     parse_float("pointSizeGranularity", obj["pointSizeGranularity"], (o.pointSizeGranularity));
6336 
6337     parse_float("lineWidthGranularity", obj["lineWidthGranularity"], (o.lineWidthGranularity));
6338 
6339     parse_VkBool32("strictLines", obj["strictLines"], (o.strictLines));
6340 
6341     parse_VkBool32("standardSampleLocations", obj["standardSampleLocations"], (o.standardSampleLocations));
6342 
6343     parse_VkDeviceSize("optimalBufferCopyOffsetAlignment", obj["optimalBufferCopyOffsetAlignment"],
6344                        (o.optimalBufferCopyOffsetAlignment));
6345 
6346     parse_VkDeviceSize("optimalBufferCopyRowPitchAlignment", obj["optimalBufferCopyRowPitchAlignment"],
6347                        (o.optimalBufferCopyRowPitchAlignment));
6348 
6349     parse_VkDeviceSize("nonCoherentAtomSize", obj["nonCoherentAtomSize"], (o.nonCoherentAtomSize));
6350 }
6351 
parse_VkPhysicalDeviceMemoryProperties(const char * s,Json::Value & obj,VkPhysicalDeviceMemoryProperties & o)6352 static void parse_VkPhysicalDeviceMemoryProperties(const char *s, Json::Value &obj, VkPhysicalDeviceMemoryProperties &o)
6353 {
6354 
6355     parse_uint32_t("memoryTypeCount", obj["memoryTypeCount"], (o.memoryTypeCount));
6356 
6357     Json::Value &obj_memoryTypes_arr = obj["memoryTypes"];
6358     for (unsigned int i = 0; i < obj_memoryTypes_arr.size(); i++)
6359     {
6360         parse_VkMemoryType("memoryTypes", obj_memoryTypes_arr[i], const_cast<VkMemoryType &>((o.memoryTypes[i])));
6361     }
6362 
6363     parse_uint32_t("memoryHeapCount", obj["memoryHeapCount"], (o.memoryHeapCount));
6364 
6365     Json::Value &obj_memoryHeaps_arr = obj["memoryHeaps"];
6366     for (unsigned int i = 0; i < obj_memoryHeaps_arr.size(); i++)
6367     {
6368         parse_VkMemoryHeap("memoryHeaps", obj_memoryHeaps_arr[i], const_cast<VkMemoryHeap &>((o.memoryHeaps[i])));
6369     }
6370 }
6371 
parse_VkPhysicalDeviceSparseProperties(const char * s,Json::Value & obj,VkPhysicalDeviceSparseProperties & o)6372 static void parse_VkPhysicalDeviceSparseProperties(const char *s, Json::Value &obj, VkPhysicalDeviceSparseProperties &o)
6373 {
6374 
6375     parse_VkBool32("residencyStandard2DBlockShape", obj["residencyStandard2DBlockShape"],
6376                    (o.residencyStandard2DBlockShape));
6377 
6378     parse_VkBool32("residencyStandard2DMultisampleBlockShape", obj["residencyStandard2DMultisampleBlockShape"],
6379                    (o.residencyStandard2DMultisampleBlockShape));
6380 
6381     parse_VkBool32("residencyStandard3DBlockShape", obj["residencyStandard3DBlockShape"],
6382                    (o.residencyStandard3DBlockShape));
6383 
6384     parse_VkBool32("residencyAlignedMipSize", obj["residencyAlignedMipSize"], (o.residencyAlignedMipSize));
6385 
6386     parse_VkBool32("residencyNonResidentStrict", obj["residencyNonResidentStrict"], (o.residencyNonResidentStrict));
6387 }
6388 
parse_VkPhysicalDeviceProperties(const char * s,Json::Value & obj,VkPhysicalDeviceProperties & o)6389 static void parse_VkPhysicalDeviceProperties(const char *s, Json::Value &obj, VkPhysicalDeviceProperties &o)
6390 {
6391 
6392     parse_uint32_t("apiVersion", obj["apiVersion"], (o.apiVersion));
6393 
6394     parse_uint32_t("driverVersion", obj["driverVersion"], (o.driverVersion));
6395 
6396     parse_uint32_t("vendorID", obj["vendorID"], (o.vendorID));
6397 
6398     parse_uint32_t("deviceID", obj["deviceID"], (o.deviceID));
6399 
6400     parse_VkPhysicalDeviceType("deviceType", obj["deviceType"], (o.deviceType));
6401 
6402     /** TODO: Handle this - deviceName **/
6403 
6404     Json::Value &obj_pipelineCacheUUID_arr = obj["pipelineCacheUUID"];
6405     for (unsigned int i = 0; i < obj_pipelineCacheUUID_arr.size(); i++)
6406     {
6407         parse_uint8_t("pipelineCacheUUID", obj_pipelineCacheUUID_arr[i],
6408                       const_cast<uint8_t &>((o.pipelineCacheUUID[i])));
6409     }
6410 
6411     parse_VkPhysicalDeviceLimits("limits", obj["limits"], (o.limits));
6412 
6413     parse_VkPhysicalDeviceSparseProperties("sparseProperties", obj["sparseProperties"], (o.sparseProperties));
6414 }
6415 
parse_VkQueueFamilyProperties(const char * s,Json::Value & obj,VkQueueFamilyProperties & o)6416 static void parse_VkQueueFamilyProperties(const char *s, Json::Value &obj, VkQueueFamilyProperties &o)
6417 {
6418 
6419     parse_VkQueueFlags("queueFlags", obj["queueFlags"], (o.queueFlags));
6420 
6421     parse_uint32_t("queueCount", obj["queueCount"], (o.queueCount));
6422 
6423     parse_uint32_t("timestampValidBits", obj["timestampValidBits"], (o.timestampValidBits));
6424 
6425     parse_VkExtent3D("minImageTransferGranularity", obj["minImageTransferGranularity"],
6426                      (o.minImageTransferGranularity));
6427 }
6428 
parse_VkDeviceQueueCreateInfo(const char * s,Json::Value & obj,VkDeviceQueueCreateInfo & o)6429 static void parse_VkDeviceQueueCreateInfo(const char *s, Json::Value &obj, VkDeviceQueueCreateInfo &o)
6430 {
6431 
6432     parse_VkStructureType("sType", obj["sType"], (o.sType));
6433 
6434     o.pNext = (VkDeviceQueueCreateInfo *)parsePNextChain(obj);
6435 
6436     parse_VkDeviceQueueCreateFlags("flags", obj["flags"], (o.flags));
6437 
6438     parse_uint32_t("queueFamilyIndex", obj["queueFamilyIndex"], (o.queueFamilyIndex));
6439 
6440     parse_uint32_t("queueCount", obj["queueCount"], (o.queueCount));
6441 
6442     (o.pQueuePriorities)                  = (float *)s_globalMem.allocate((o.queueCount), sizeof(float));
6443     Json::Value &obj_pQueuePriorities_arr = obj["pQueuePriorities"];
6444     for (unsigned int i = 0; i < obj_pQueuePriorities_arr.size(); i++)
6445     {
6446         parse_float("pQueuePriorities", obj_pQueuePriorities_arr[i], const_cast<float &>((o.pQueuePriorities[i])));
6447     }
6448 }
6449 
parse_VkDeviceCreateInfo(const char * s,Json::Value & obj,VkDeviceCreateInfo & o)6450 static void parse_VkDeviceCreateInfo(const char *s, Json::Value &obj, VkDeviceCreateInfo &o)
6451 {
6452 
6453     parse_VkStructureType("sType", obj["sType"], (o.sType));
6454 
6455     o.pNext = (VkDeviceCreateInfo *)parsePNextChain(obj);
6456 
6457     parse_VkDeviceCreateFlags("flags", obj["flags"], (o.flags));
6458 
6459     parse_uint32_t("queueCreateInfoCount", obj["queueCreateInfoCount"], (o.queueCreateInfoCount));
6460 
6461     (o.pQueueCreateInfos) =
6462         (VkDeviceQueueCreateInfo *)s_globalMem.allocate((o.queueCreateInfoCount), sizeof(VkDeviceQueueCreateInfo));
6463     Json::Value &obj_pQueueCreateInfos = obj["pQueueCreateInfos"];
6464     if (obj_pQueueCreateInfos.size() == 0)
6465         (o.pQueueCreateInfos) = nullptr;
6466     else
6467     {
6468         for (unsigned int i = 0; i < (o.queueCreateInfoCount); i++)
6469         {
6470             parse_VkDeviceQueueCreateInfo("pQueueCreateInfos", obj_pQueueCreateInfos[i],
6471                                           const_cast<VkDeviceQueueCreateInfo &>((o.pQueueCreateInfos[i])));
6472         }
6473     }
6474 
6475     parse_uint32_t("enabledLayerCount", obj["enabledLayerCount"], (o.enabledLayerCount));
6476 
6477     /** TODO: Handle this - ppEnabledLayerNames **/
6478 
6479     parse_uint32_t("enabledExtensionCount", obj["enabledExtensionCount"], (o.enabledExtensionCount));
6480 
6481     /** TODO: Handle this - ppEnabledExtensionNames **/
6482 
6483     {
6484         Json::Value &obj_pEnabledFeatures = obj["pEnabledFeatures"];
6485         const int sz                      = obj_pEnabledFeatures.size();
6486         if (obj_pEnabledFeatures.size() == 0)
6487         {
6488             (o.pEnabledFeatures) = nullptr;
6489         }
6490         else
6491         {
6492             (o.pEnabledFeatures) =
6493                 (VkPhysicalDeviceFeatures *)s_globalMem.allocate(1, sizeof(VkPhysicalDeviceFeatures));
6494             parse_VkPhysicalDeviceFeatures("pEnabledFeatures", obj_pEnabledFeatures,
6495                                            const_cast<VkPhysicalDeviceFeatures &>(*(o.pEnabledFeatures)));
6496         }
6497     }
6498 }
6499 
parse_VkExtensionProperties(const char * s,Json::Value & obj,VkExtensionProperties & o)6500 static void parse_VkExtensionProperties(const char *s, Json::Value &obj, VkExtensionProperties &o)
6501 {
6502 
6503     /** TODO: Handle this - extensionName **/
6504 
6505     parse_uint32_t("specVersion", obj["specVersion"], (o.specVersion));
6506 }
6507 
parse_VkLayerProperties(const char * s,Json::Value & obj,VkLayerProperties & o)6508 static void parse_VkLayerProperties(const char *s, Json::Value &obj, VkLayerProperties &o)
6509 {
6510 
6511     /** TODO: Handle this - layerName **/
6512 
6513     parse_uint32_t("specVersion", obj["specVersion"], (o.specVersion));
6514 
6515     parse_uint32_t("implementationVersion", obj["implementationVersion"], (o.implementationVersion));
6516 
6517     /** TODO: Handle this - description **/
6518 }
6519 
parse_VkSubmitInfo(const char * s,Json::Value & obj,VkSubmitInfo & o)6520 static void parse_VkSubmitInfo(const char *s, Json::Value &obj, VkSubmitInfo &o)
6521 {
6522 
6523     parse_VkStructureType("sType", obj["sType"], (o.sType));
6524 
6525     o.pNext = (VkSubmitInfo *)parsePNextChain(obj);
6526 
6527     parse_uint32_t("waitSemaphoreCount", obj["waitSemaphoreCount"], (o.waitSemaphoreCount));
6528 
6529     (o.pWaitSemaphores) = (VkSemaphore *)s_globalMem.allocate((o.waitSemaphoreCount), sizeof(VkSemaphore));
6530     Json::Value &obj_pWaitSemaphores_arr = obj["pWaitSemaphores"];
6531     for (unsigned int i = 0; i < obj_pWaitSemaphores_arr.size(); i++)
6532     {
6533         parse_VkSemaphore("pWaitSemaphores", obj_pWaitSemaphores_arr[i],
6534                           const_cast<VkSemaphore &>((o.pWaitSemaphores[i])));
6535     }
6536 
6537     (o.pWaitDstStageMask) =
6538         (VkPipelineStageFlags *)s_globalMem.allocate((o.waitSemaphoreCount), sizeof(VkPipelineStageFlags));
6539     Json::Value &obj_pWaitDstStageMask_arr = obj["pWaitDstStageMask"];
6540     for (unsigned int i = 0; i < obj_pWaitDstStageMask_arr.size(); i++)
6541     {
6542         parse_VkPipelineStageFlags("pWaitDstStageMask", obj_pWaitDstStageMask_arr[i],
6543                                    const_cast<VkPipelineStageFlags &>((o.pWaitDstStageMask[i])));
6544     }
6545 
6546     parse_uint32_t("commandBufferCount", obj["commandBufferCount"], (o.commandBufferCount));
6547 
6548     (o.pCommandBuffers) = (VkCommandBuffer *)s_globalMem.allocate((o.commandBufferCount), sizeof(VkCommandBuffer));
6549     Json::Value &obj_pCommandBuffers_arr = obj["pCommandBuffers"];
6550     for (unsigned int i = 0; i < obj_pCommandBuffers_arr.size(); i++)
6551     {
6552         parse_VkCommandBuffer("pCommandBuffers", obj_pCommandBuffers_arr[i],
6553                               const_cast<VkCommandBuffer &>((o.pCommandBuffers[i])));
6554     }
6555 
6556     parse_uint32_t("signalSemaphoreCount", obj["signalSemaphoreCount"], (o.signalSemaphoreCount));
6557 
6558     (o.pSignalSemaphores) = (VkSemaphore *)s_globalMem.allocate((o.signalSemaphoreCount), sizeof(VkSemaphore));
6559     Json::Value &obj_pSignalSemaphores_arr = obj["pSignalSemaphores"];
6560     for (unsigned int i = 0; i < obj_pSignalSemaphores_arr.size(); i++)
6561     {
6562         parse_VkSemaphore("pSignalSemaphores", obj_pSignalSemaphores_arr[i],
6563                           const_cast<VkSemaphore &>((o.pSignalSemaphores[i])));
6564     }
6565 }
6566 
parse_VkMappedMemoryRange(const char * s,Json::Value & obj,VkMappedMemoryRange & o)6567 static void parse_VkMappedMemoryRange(const char *s, Json::Value &obj, VkMappedMemoryRange &o)
6568 {
6569 
6570     parse_VkStructureType("sType", obj["sType"], (o.sType));
6571 
6572     o.pNext = (VkMappedMemoryRange *)parsePNextChain(obj);
6573 
6574     parse_VkDeviceSize("offset", obj["offset"], (o.offset));
6575 
6576     parse_VkDeviceSize("size", obj["size"], (o.size));
6577 }
6578 
parse_VkMemoryAllocateInfo(const char * s,Json::Value & obj,VkMemoryAllocateInfo & o)6579 static void parse_VkMemoryAllocateInfo(const char *s, Json::Value &obj, VkMemoryAllocateInfo &o)
6580 {
6581 
6582     parse_VkStructureType("sType", obj["sType"], (o.sType));
6583 
6584     o.pNext = (VkMemoryAllocateInfo *)parsePNextChain(obj);
6585 
6586     parse_VkDeviceSize("allocationSize", obj["allocationSize"], (o.allocationSize));
6587 
6588     parse_uint32_t("memoryTypeIndex", obj["memoryTypeIndex"], (o.memoryTypeIndex));
6589 }
6590 
parse_VkMemoryRequirements(const char * s,Json::Value & obj,VkMemoryRequirements & o)6591 static void parse_VkMemoryRequirements(const char *s, Json::Value &obj, VkMemoryRequirements &o)
6592 {
6593 
6594     parse_VkDeviceSize("size", obj["size"], (o.size));
6595 
6596     parse_VkDeviceSize("alignment", obj["alignment"], (o.alignment));
6597 
6598     parse_uint32_t("memoryTypeBits", obj["memoryTypeBits"], (o.memoryTypeBits));
6599 }
6600 
parse_VkImageSubresource(const char * s,Json::Value & obj,VkImageSubresource & o)6601 static void parse_VkImageSubresource(const char *s, Json::Value &obj, VkImageSubresource &o)
6602 {
6603 
6604     parse_VkImageAspectFlags("aspectMask", obj["aspectMask"], (o.aspectMask));
6605 
6606     parse_uint32_t("mipLevel", obj["mipLevel"], (o.mipLevel));
6607 
6608     parse_uint32_t("arrayLayer", obj["arrayLayer"], (o.arrayLayer));
6609 }
6610 
parse_VkFenceCreateInfo(const char * s,Json::Value & obj,VkFenceCreateInfo & o)6611 static void parse_VkFenceCreateInfo(const char *s, Json::Value &obj, VkFenceCreateInfo &o)
6612 {
6613 
6614     parse_VkStructureType("sType", obj["sType"], (o.sType));
6615 
6616     o.pNext = (VkFenceCreateInfo *)parsePNextChain(obj);
6617 
6618     parse_VkFenceCreateFlags("flags", obj["flags"], (o.flags));
6619 }
6620 
parse_VkSemaphoreCreateInfo(const char * s,Json::Value & obj,VkSemaphoreCreateInfo & o)6621 static void parse_VkSemaphoreCreateInfo(const char *s, Json::Value &obj, VkSemaphoreCreateInfo &o)
6622 {
6623 
6624     parse_VkStructureType("sType", obj["sType"], (o.sType));
6625 
6626     o.pNext = (VkSemaphoreCreateInfo *)parsePNextChain(obj);
6627 
6628     parse_VkSemaphoreCreateFlags("flags", obj["flags"], (o.flags));
6629 }
6630 
parse_VkEventCreateInfo(const char * s,Json::Value & obj,VkEventCreateInfo & o)6631 static void parse_VkEventCreateInfo(const char *s, Json::Value &obj, VkEventCreateInfo &o)
6632 {
6633 
6634     parse_VkStructureType("sType", obj["sType"], (o.sType));
6635 
6636     o.pNext = (VkEventCreateInfo *)parsePNextChain(obj);
6637 
6638     parse_VkEventCreateFlags("flags", obj["flags"], (o.flags));
6639 }
6640 
parse_VkQueryPoolCreateInfo(const char * s,Json::Value & obj,VkQueryPoolCreateInfo & o)6641 static void parse_VkQueryPoolCreateInfo(const char *s, Json::Value &obj, VkQueryPoolCreateInfo &o)
6642 {
6643 
6644     parse_VkStructureType("sType", obj["sType"], (o.sType));
6645 
6646     o.pNext = (VkQueryPoolCreateInfo *)parsePNextChain(obj);
6647 
6648     parse_VkQueryPoolCreateFlags("flags", obj["flags"], (o.flags));
6649 
6650     parse_VkQueryType("queryType", obj["queryType"], (o.queryType));
6651 
6652     parse_uint32_t("queryCount", obj["queryCount"], (o.queryCount));
6653 
6654     parse_VkQueryPipelineStatisticFlags("pipelineStatistics", obj["pipelineStatistics"], (o.pipelineStatistics));
6655 }
6656 
parse_VkBufferCreateInfo(const char * s,Json::Value & obj,VkBufferCreateInfo & o)6657 static void parse_VkBufferCreateInfo(const char *s, Json::Value &obj, VkBufferCreateInfo &o)
6658 {
6659 
6660     parse_VkStructureType("sType", obj["sType"], (o.sType));
6661 
6662     o.pNext = (VkBufferCreateInfo *)parsePNextChain(obj);
6663 
6664     parse_VkBufferCreateFlags("flags", obj["flags"], (o.flags));
6665 
6666     parse_VkDeviceSize("size", obj["size"], (o.size));
6667 
6668     parse_VkBufferUsageFlags("usage", obj["usage"], (o.usage));
6669 
6670     parse_VkSharingMode("sharingMode", obj["sharingMode"], (o.sharingMode));
6671 
6672     parse_uint32_t("queueFamilyIndexCount", obj["queueFamilyIndexCount"], (o.queueFamilyIndexCount));
6673 
6674     (o.pQueueFamilyIndices) = (uint32_t *)s_globalMem.allocate((o.queueFamilyIndexCount), sizeof(uint32_t));
6675     Json::Value &obj_pQueueFamilyIndices_arr = obj["pQueueFamilyIndices"];
6676     for (unsigned int i = 0; i < obj_pQueueFamilyIndices_arr.size(); i++)
6677     {
6678         parse_uint32_t("pQueueFamilyIndices", obj_pQueueFamilyIndices_arr[i],
6679                        const_cast<uint32_t &>((o.pQueueFamilyIndices[i])));
6680     }
6681 }
6682 
parse_VkBufferViewCreateInfo(const char * s,Json::Value & obj,VkBufferViewCreateInfo & o)6683 static void parse_VkBufferViewCreateInfo(const char *s, Json::Value &obj, VkBufferViewCreateInfo &o)
6684 {
6685 
6686     parse_VkStructureType("sType", obj["sType"], (o.sType));
6687 
6688     o.pNext = (VkBufferViewCreateInfo *)parsePNextChain(obj);
6689 
6690     parse_VkBufferViewCreateFlags("flags", obj["flags"], (o.flags));
6691 
6692     parse_VkFormat("format", obj["format"], (o.format));
6693 
6694     parse_VkDeviceSize("offset", obj["offset"], (o.offset));
6695 
6696     parse_VkDeviceSize("range", obj["range"], (o.range));
6697 }
6698 
parse_VkImageCreateInfo(const char * s,Json::Value & obj,VkImageCreateInfo & o)6699 static void parse_VkImageCreateInfo(const char *s, Json::Value &obj, VkImageCreateInfo &o)
6700 {
6701 
6702     parse_VkStructureType("sType", obj["sType"], (o.sType));
6703 
6704     o.pNext = (VkImageCreateInfo *)parsePNextChain(obj);
6705 
6706     parse_VkImageCreateFlags("flags", obj["flags"], (o.flags));
6707 
6708     parse_VkImageType("imageType", obj["imageType"], (o.imageType));
6709 
6710     parse_VkFormat("format", obj["format"], (o.format));
6711 
6712     parse_VkExtent3D("extent", obj["extent"], (o.extent));
6713 
6714     parse_uint32_t("mipLevels", obj["mipLevels"], (o.mipLevels));
6715 
6716     parse_uint32_t("arrayLayers", obj["arrayLayers"], (o.arrayLayers));
6717 
6718     parse_VkSampleCountFlagBits("samples", obj["samples"], (o.samples));
6719 
6720     parse_VkImageTiling("tiling", obj["tiling"], (o.tiling));
6721 
6722     parse_VkImageUsageFlags("usage", obj["usage"], (o.usage));
6723 
6724     parse_VkSharingMode("sharingMode", obj["sharingMode"], (o.sharingMode));
6725 
6726     parse_uint32_t("queueFamilyIndexCount", obj["queueFamilyIndexCount"], (o.queueFamilyIndexCount));
6727 
6728     (o.pQueueFamilyIndices) = (uint32_t *)s_globalMem.allocate((o.queueFamilyIndexCount), sizeof(uint32_t));
6729     Json::Value &obj_pQueueFamilyIndices_arr = obj["pQueueFamilyIndices"];
6730     for (unsigned int i = 0; i < obj_pQueueFamilyIndices_arr.size(); i++)
6731     {
6732         parse_uint32_t("pQueueFamilyIndices", obj_pQueueFamilyIndices_arr[i],
6733                        const_cast<uint32_t &>((o.pQueueFamilyIndices[i])));
6734     }
6735 
6736     parse_VkImageLayout("initialLayout", obj["initialLayout"], (o.initialLayout));
6737 }
6738 
parse_VkSubresourceLayout(const char * s,Json::Value & obj,VkSubresourceLayout & o)6739 static void parse_VkSubresourceLayout(const char *s, Json::Value &obj, VkSubresourceLayout &o)
6740 {
6741 
6742     parse_VkDeviceSize("offset", obj["offset"], (o.offset));
6743 
6744     parse_VkDeviceSize("size", obj["size"], (o.size));
6745 
6746     parse_VkDeviceSize("rowPitch", obj["rowPitch"], (o.rowPitch));
6747 
6748     parse_VkDeviceSize("arrayPitch", obj["arrayPitch"], (o.arrayPitch));
6749 
6750     parse_VkDeviceSize("depthPitch", obj["depthPitch"], (o.depthPitch));
6751 }
6752 
parse_VkComponentMapping(const char * s,Json::Value & obj,VkComponentMapping & o)6753 static void parse_VkComponentMapping(const char *s, Json::Value &obj, VkComponentMapping &o)
6754 {
6755 
6756     parse_VkComponentSwizzle("r", obj["r"], (o.r));
6757 
6758     parse_VkComponentSwizzle("g", obj["g"], (o.g));
6759 
6760     parse_VkComponentSwizzle("b", obj["b"], (o.b));
6761 
6762     parse_VkComponentSwizzle("a", obj["a"], (o.a));
6763 }
6764 
parse_VkImageViewCreateInfo(const char * s,Json::Value & obj,VkImageViewCreateInfo & o)6765 static void parse_VkImageViewCreateInfo(const char *s, Json::Value &obj, VkImageViewCreateInfo &o)
6766 {
6767 
6768     parse_VkStructureType("sType", obj["sType"], (o.sType));
6769 
6770     o.pNext = (VkImageViewCreateInfo *)parsePNextChain(obj);
6771 
6772     parse_VkImageViewCreateFlags("flags", obj["flags"], (o.flags));
6773 
6774     parse_VkImageViewType("viewType", obj["viewType"], (o.viewType));
6775 
6776     parse_VkFormat("format", obj["format"], (o.format));
6777 
6778     parse_VkComponentMapping("components", obj["components"], (o.components));
6779 
6780     parse_VkImageSubresourceRange("subresourceRange", obj["subresourceRange"], (o.subresourceRange));
6781 }
6782 
parse_VkPipelineCacheCreateInfo(const char * s,Json::Value & obj,VkPipelineCacheCreateInfo & o)6783 static void parse_VkPipelineCacheCreateInfo(const char *s, Json::Value &obj, VkPipelineCacheCreateInfo &o)
6784 {
6785 
6786     parse_VkStructureType("sType", obj["sType"], (o.sType));
6787 
6788     o.pNext = (VkPipelineCacheCreateInfo *)parsePNextChain(obj);
6789 
6790     parse_VkPipelineCacheCreateFlags("flags", obj["flags"], (o.flags));
6791 
6792     parse_size_t("initialDataSize", obj["initialDataSize"], (o.initialDataSize));
6793 
6794     if (o.initialDataSize > 0U)
6795     {
6796         void *data = s_globalMem.allocate(uint32_t(o.initialDataSize));
6797         parse_void_data("pInitialData", obj["pInitialData"], data, int(o.initialDataSize));
6798         o.pInitialData = data;
6799     }
6800     else
6801         o.pInitialData = NULL;
6802 }
6803 
parse_VkSpecializationMapEntry(const char * s,Json::Value & obj,VkSpecializationMapEntry & o)6804 static void parse_VkSpecializationMapEntry(const char *s, Json::Value &obj, VkSpecializationMapEntry &o)
6805 {
6806 
6807     parse_uint32_t("constantID", obj["constantID"], (o.constantID));
6808 
6809     parse_uint32_t("offset", obj["offset"], (o.offset));
6810 
6811     parse_size_t("size", obj["size"], (o.size));
6812 }
6813 
parse_VkSpecializationInfo(const char * s,Json::Value & obj,VkSpecializationInfo & o)6814 static void parse_VkSpecializationInfo(const char *s, Json::Value &obj, VkSpecializationInfo &o)
6815 {
6816 
6817     parse_uint32_t("mapEntryCount", obj["mapEntryCount"], (o.mapEntryCount));
6818 
6819     (o.pMapEntries) =
6820         (VkSpecializationMapEntry *)s_globalMem.allocate((o.mapEntryCount), sizeof(VkSpecializationMapEntry));
6821     Json::Value &obj_pMapEntries = obj["pMapEntries"];
6822     if (obj_pMapEntries.size() == 0)
6823         (o.pMapEntries) = nullptr;
6824     else
6825     {
6826         for (unsigned int i = 0; i < (o.mapEntryCount); i++)
6827         {
6828             parse_VkSpecializationMapEntry("pMapEntries", obj_pMapEntries[i],
6829                                            const_cast<VkSpecializationMapEntry &>((o.pMapEntries[i])));
6830         }
6831     }
6832 
6833     parse_size_t("dataSize", obj["dataSize"], (o.dataSize));
6834 
6835     if (o.dataSize > 0U)
6836     {
6837         void *data = s_globalMem.allocate(uint32_t(o.dataSize));
6838         parse_void_data("pData", obj["pData"], data, int(o.dataSize));
6839         o.pData = data;
6840     }
6841     else
6842         o.pData = NULL;
6843 }
6844 
parse_VkPipelineShaderStageCreateInfo(const char * s,Json::Value & obj,VkPipelineShaderStageCreateInfo & o)6845 static void parse_VkPipelineShaderStageCreateInfo(const char *s, Json::Value &obj, VkPipelineShaderStageCreateInfo &o)
6846 {
6847 
6848     parse_VkStructureType("sType", obj["sType"], (o.sType));
6849 
6850     o.pNext = (VkPipelineShaderStageCreateInfo *)parsePNextChain(obj);
6851 
6852     parse_VkPipelineShaderStageCreateFlags("flags", obj["flags"], (o.flags));
6853 
6854     parse_VkShaderStageFlagBits("stage", obj["stage"], (o.stage));
6855 
6856     uint64_t moduleInternal = 0;
6857     parse_uint64_t("module", obj["module"], moduleInternal);
6858     o.module = VkShaderModule(moduleInternal);
6859 
6860     (o.pName) = (const char *)s_globalMem.allocate(255);
6861     parse_char("pName", obj["pName"], &(o.pName));
6862 
6863     {
6864         Json::Value &obj_pSpecializationInfo = obj["pSpecializationInfo"];
6865         const int sz                         = obj_pSpecializationInfo.size();
6866         if (obj_pSpecializationInfo.size() == 0)
6867         {
6868             (o.pSpecializationInfo) = nullptr;
6869         }
6870         else
6871         {
6872             (o.pSpecializationInfo) = (VkSpecializationInfo *)s_globalMem.allocate(1, sizeof(VkSpecializationInfo));
6873             parse_VkSpecializationInfo("pSpecializationInfo", obj_pSpecializationInfo,
6874                                        const_cast<VkSpecializationInfo &>(*(o.pSpecializationInfo)));
6875         }
6876     }
6877 }
6878 
parse_VkComputePipelineCreateInfo(const char * s,Json::Value & obj,VkComputePipelineCreateInfo & o)6879 static void parse_VkComputePipelineCreateInfo(const char *s, Json::Value &obj, VkComputePipelineCreateInfo &o)
6880 {
6881 
6882     parse_VkStructureType("sType", obj["sType"], (o.sType));
6883 
6884     o.pNext = (VkComputePipelineCreateInfo *)parsePNextChain(obj);
6885 
6886     parse_VkPipelineCreateFlags("flags", obj["flags"], (o.flags));
6887 
6888     parse_VkPipelineShaderStageCreateInfo("stage", obj["stage"], (o.stage));
6889 
6890     uint64_t layoutInternal = 0;
6891     parse_uint64_t("layout", obj["layout"], layoutInternal);
6892     o.layout = VkPipelineLayout(layoutInternal);
6893 
6894     parse_int32_t("basePipelineIndex", obj["basePipelineIndex"], (o.basePipelineIndex));
6895 }
6896 
parse_VkVertexInputBindingDescription(const char * s,Json::Value & obj,VkVertexInputBindingDescription & o)6897 static void parse_VkVertexInputBindingDescription(const char *s, Json::Value &obj, VkVertexInputBindingDescription &o)
6898 {
6899 
6900     parse_uint32_t("binding", obj["binding"], (o.binding));
6901 
6902     parse_uint32_t("stride", obj["stride"], (o.stride));
6903 
6904     parse_VkVertexInputRate("inputRate", obj["inputRate"], (o.inputRate));
6905 }
6906 
parse_VkVertexInputAttributeDescription(const char * s,Json::Value & obj,VkVertexInputAttributeDescription & o)6907 static void parse_VkVertexInputAttributeDescription(const char *s, Json::Value &obj,
6908                                                     VkVertexInputAttributeDescription &o)
6909 {
6910 
6911     parse_uint32_t("location", obj["location"], (o.location));
6912 
6913     parse_uint32_t("binding", obj["binding"], (o.binding));
6914 
6915     parse_VkFormat("format", obj["format"], (o.format));
6916 
6917     parse_uint32_t("offset", obj["offset"], (o.offset));
6918 }
6919 
parse_VkPipelineVertexInputStateCreateInfo(const char * s,Json::Value & obj,VkPipelineVertexInputStateCreateInfo & o)6920 static void parse_VkPipelineVertexInputStateCreateInfo(const char *s, Json::Value &obj,
6921                                                        VkPipelineVertexInputStateCreateInfo &o)
6922 {
6923 
6924     parse_VkStructureType("sType", obj["sType"], (o.sType));
6925 
6926     o.pNext = (VkPipelineVertexInputStateCreateInfo *)parsePNextChain(obj);
6927 
6928     parse_VkPipelineVertexInputStateCreateFlags("flags", obj["flags"], (o.flags));
6929 
6930     parse_uint32_t("vertexBindingDescriptionCount", obj["vertexBindingDescriptionCount"],
6931                    (o.vertexBindingDescriptionCount));
6932 
6933     (o.pVertexBindingDescriptions) = (VkVertexInputBindingDescription *)s_globalMem.allocate(
6934         (o.vertexBindingDescriptionCount), sizeof(VkVertexInputBindingDescription));
6935     Json::Value &obj_pVertexBindingDescriptions = obj["pVertexBindingDescriptions"];
6936     if (obj_pVertexBindingDescriptions.size() == 0)
6937         (o.pVertexBindingDescriptions) = nullptr;
6938     else
6939     {
6940         for (unsigned int i = 0; i < (o.vertexBindingDescriptionCount); i++)
6941         {
6942             parse_VkVertexInputBindingDescription(
6943                 "pVertexBindingDescriptions", obj_pVertexBindingDescriptions[i],
6944                 const_cast<VkVertexInputBindingDescription &>((o.pVertexBindingDescriptions[i])));
6945         }
6946     }
6947 
6948     parse_uint32_t("vertexAttributeDescriptionCount", obj["vertexAttributeDescriptionCount"],
6949                    (o.vertexAttributeDescriptionCount));
6950 
6951     (o.pVertexAttributeDescriptions) = (VkVertexInputAttributeDescription *)s_globalMem.allocate(
6952         (o.vertexAttributeDescriptionCount), sizeof(VkVertexInputAttributeDescription));
6953     Json::Value &obj_pVertexAttributeDescriptions = obj["pVertexAttributeDescriptions"];
6954     if (obj_pVertexAttributeDescriptions.size() == 0)
6955         (o.pVertexAttributeDescriptions) = nullptr;
6956     else
6957     {
6958         for (unsigned int i = 0; i < (o.vertexAttributeDescriptionCount); i++)
6959         {
6960             parse_VkVertexInputAttributeDescription(
6961                 "pVertexAttributeDescriptions", obj_pVertexAttributeDescriptions[i],
6962                 const_cast<VkVertexInputAttributeDescription &>((o.pVertexAttributeDescriptions[i])));
6963         }
6964     }
6965 }
6966 
parse_VkPipelineInputAssemblyStateCreateInfo(const char * s,Json::Value & obj,VkPipelineInputAssemblyStateCreateInfo & o)6967 static void parse_VkPipelineInputAssemblyStateCreateInfo(const char *s, Json::Value &obj,
6968                                                          VkPipelineInputAssemblyStateCreateInfo &o)
6969 {
6970 
6971     parse_VkStructureType("sType", obj["sType"], (o.sType));
6972 
6973     o.pNext = (VkPipelineInputAssemblyStateCreateInfo *)parsePNextChain(obj);
6974 
6975     parse_VkPipelineInputAssemblyStateCreateFlags("flags", obj["flags"], (o.flags));
6976 
6977     parse_VkPrimitiveTopology("topology", obj["topology"], (o.topology));
6978 
6979     parse_VkBool32("primitiveRestartEnable", obj["primitiveRestartEnable"], (o.primitiveRestartEnable));
6980 }
6981 
parse_VkPipelineTessellationStateCreateInfo(const char * s,Json::Value & obj,VkPipelineTessellationStateCreateInfo & o)6982 static void parse_VkPipelineTessellationStateCreateInfo(const char *s, Json::Value &obj,
6983                                                         VkPipelineTessellationStateCreateInfo &o)
6984 {
6985 
6986     parse_VkStructureType("sType", obj["sType"], (o.sType));
6987 
6988     o.pNext = (VkPipelineTessellationStateCreateInfo *)parsePNextChain(obj);
6989 
6990     parse_VkPipelineTessellationStateCreateFlags("flags", obj["flags"], (o.flags));
6991 
6992     parse_uint32_t("patchControlPoints", obj["patchControlPoints"], (o.patchControlPoints));
6993 }
6994 
parse_VkViewport(const char * s,Json::Value & obj,VkViewport & o)6995 static void parse_VkViewport(const char *s, Json::Value &obj, VkViewport &o)
6996 {
6997 
6998     parse_float("x", obj["x"], (o.x));
6999 
7000     parse_float("y", obj["y"], (o.y));
7001 
7002     parse_float("width", obj["width"], (o.width));
7003 
7004     parse_float("height", obj["height"], (o.height));
7005 
7006     parse_float("minDepth", obj["minDepth"], (o.minDepth));
7007 
7008     parse_float("maxDepth", obj["maxDepth"], (o.maxDepth));
7009 }
7010 
parse_VkPipelineViewportStateCreateInfo(const char * s,Json::Value & obj,VkPipelineViewportStateCreateInfo & o)7011 static void parse_VkPipelineViewportStateCreateInfo(const char *s, Json::Value &obj,
7012                                                     VkPipelineViewportStateCreateInfo &o)
7013 {
7014 
7015     parse_VkStructureType("sType", obj["sType"], (o.sType));
7016 
7017     o.pNext = (VkPipelineViewportStateCreateInfo *)parsePNextChain(obj);
7018 
7019     parse_VkPipelineViewportStateCreateFlags("flags", obj["flags"], (o.flags));
7020 
7021     parse_uint32_t("viewportCount", obj["viewportCount"], (o.viewportCount));
7022 
7023     (o.pViewports)              = (VkViewport *)s_globalMem.allocate((o.viewportCount), sizeof(VkViewport));
7024     Json::Value &obj_pViewports = obj["pViewports"];
7025     if (obj_pViewports.size() == 0)
7026         (o.pViewports) = nullptr;
7027     else
7028     {
7029         for (unsigned int i = 0; i < (o.viewportCount); i++)
7030         {
7031             parse_VkViewport("pViewports", obj_pViewports[i], const_cast<VkViewport &>((o.pViewports[i])));
7032         }
7033     }
7034 
7035     parse_uint32_t("scissorCount", obj["scissorCount"], (o.scissorCount));
7036 
7037     (o.pScissors)              = (VkRect2D *)s_globalMem.allocate((o.scissorCount), sizeof(VkRect2D));
7038     Json::Value &obj_pScissors = obj["pScissors"];
7039     if (obj_pScissors.size() == 0)
7040         (o.pScissors) = nullptr;
7041     else
7042     {
7043         for (unsigned int i = 0; i < (o.scissorCount); i++)
7044         {
7045             parse_VkRect2D("pScissors", obj_pScissors[i], const_cast<VkRect2D &>((o.pScissors[i])));
7046         }
7047     }
7048 }
7049 
parse_VkPipelineRasterizationStateCreateInfo(const char * s,Json::Value & obj,VkPipelineRasterizationStateCreateInfo & o)7050 static void parse_VkPipelineRasterizationStateCreateInfo(const char *s, Json::Value &obj,
7051                                                          VkPipelineRasterizationStateCreateInfo &o)
7052 {
7053 
7054     parse_VkStructureType("sType", obj["sType"], (o.sType));
7055 
7056     o.pNext = (VkPipelineRasterizationStateCreateInfo *)parsePNextChain(obj);
7057 
7058     parse_VkPipelineRasterizationStateCreateFlags("flags", obj["flags"], (o.flags));
7059 
7060     parse_VkBool32("depthClampEnable", obj["depthClampEnable"], (o.depthClampEnable));
7061 
7062     parse_VkBool32("rasterizerDiscardEnable", obj["rasterizerDiscardEnable"], (o.rasterizerDiscardEnable));
7063 
7064     parse_VkPolygonMode("polygonMode", obj["polygonMode"], (o.polygonMode));
7065 
7066     parse_VkCullModeFlags("cullMode", obj["cullMode"], (o.cullMode));
7067 
7068     parse_VkFrontFace("frontFace", obj["frontFace"], (o.frontFace));
7069 
7070     parse_VkBool32("depthBiasEnable", obj["depthBiasEnable"], (o.depthBiasEnable));
7071 
7072     parse_float("depthBiasConstantFactor", obj["depthBiasConstantFactor"], (o.depthBiasConstantFactor));
7073 
7074     parse_float("depthBiasClamp", obj["depthBiasClamp"], (o.depthBiasClamp));
7075 
7076     parse_float("depthBiasSlopeFactor", obj["depthBiasSlopeFactor"], (o.depthBiasSlopeFactor));
7077 
7078     parse_float("lineWidth", obj["lineWidth"], (o.lineWidth));
7079 }
7080 
parse_VkPipelineMultisampleStateCreateInfo(const char * s,Json::Value & obj,VkPipelineMultisampleStateCreateInfo & o)7081 static void parse_VkPipelineMultisampleStateCreateInfo(const char *s, Json::Value &obj,
7082                                                        VkPipelineMultisampleStateCreateInfo &o)
7083 {
7084 
7085     parse_VkStructureType("sType", obj["sType"], (o.sType));
7086 
7087     o.pNext = (VkPipelineMultisampleStateCreateInfo *)parsePNextChain(obj);
7088 
7089     parse_VkPipelineMultisampleStateCreateFlags("flags", obj["flags"], (o.flags));
7090 
7091     parse_VkSampleCountFlagBits("rasterizationSamples", obj["rasterizationSamples"], (o.rasterizationSamples));
7092 
7093     parse_VkBool32("sampleShadingEnable", obj["sampleShadingEnable"], (o.sampleShadingEnable));
7094 
7095     parse_float("minSampleShading", obj["minSampleShading"], (o.minSampleShading));
7096 
7097     (o.pSampleMask) =
7098         (VkSampleMask *)s_globalMem.allocate((uint32_t(o.rasterizationSamples + 31) / 32), sizeof(VkSampleMask));
7099     Json::Value &obj_pSampleMask = obj["pSampleMask"];
7100     if (o.rasterizationSamples == 0 || obj_pSampleMask.size() == 0)
7101     {
7102         (o.pSampleMask) = nullptr;
7103     }
7104     else
7105     {
7106         for (uint32_t i = 0; i < (uint32_t(o.rasterizationSamples + 31) / 32); i++)
7107         {
7108             parse_uint32_t("pSampleMask", obj_pSampleMask[i], const_cast<VkSampleMask &>((o.pSampleMask[i])));
7109         }
7110     }
7111 
7112     parse_VkBool32("alphaToCoverageEnable", obj["alphaToCoverageEnable"], (o.alphaToCoverageEnable));
7113 
7114     parse_VkBool32("alphaToOneEnable", obj["alphaToOneEnable"], (o.alphaToOneEnable));
7115 }
7116 
parse_VkStencilOpState(const char * s,Json::Value & obj,VkStencilOpState & o)7117 static void parse_VkStencilOpState(const char *s, Json::Value &obj, VkStencilOpState &o)
7118 {
7119 
7120     parse_VkStencilOp("failOp", obj["failOp"], (o.failOp));
7121 
7122     parse_VkStencilOp("passOp", obj["passOp"], (o.passOp));
7123 
7124     parse_VkStencilOp("depthFailOp", obj["depthFailOp"], (o.depthFailOp));
7125 
7126     parse_VkCompareOp("compareOp", obj["compareOp"], (o.compareOp));
7127 
7128     parse_uint32_t("compareMask", obj["compareMask"], (o.compareMask));
7129 
7130     parse_uint32_t("writeMask", obj["writeMask"], (o.writeMask));
7131 
7132     parse_uint32_t("reference", obj["reference"], (o.reference));
7133 }
7134 
parse_VkPipelineDepthStencilStateCreateInfo(const char * s,Json::Value & obj,VkPipelineDepthStencilStateCreateInfo & o)7135 static void parse_VkPipelineDepthStencilStateCreateInfo(const char *s, Json::Value &obj,
7136                                                         VkPipelineDepthStencilStateCreateInfo &o)
7137 {
7138 
7139     parse_VkStructureType("sType", obj["sType"], (o.sType));
7140 
7141     o.pNext = (VkPipelineDepthStencilStateCreateInfo *)parsePNextChain(obj);
7142 
7143     parse_VkPipelineDepthStencilStateCreateFlags("flags", obj["flags"], (o.flags));
7144 
7145     parse_VkBool32("depthTestEnable", obj["depthTestEnable"], (o.depthTestEnable));
7146 
7147     parse_VkBool32("depthWriteEnable", obj["depthWriteEnable"], (o.depthWriteEnable));
7148 
7149     parse_VkCompareOp("depthCompareOp", obj["depthCompareOp"], (o.depthCompareOp));
7150 
7151     parse_VkBool32("depthBoundsTestEnable", obj["depthBoundsTestEnable"], (o.depthBoundsTestEnable));
7152 
7153     parse_VkBool32("stencilTestEnable", obj["stencilTestEnable"], (o.stencilTestEnable));
7154 
7155     parse_VkStencilOpState("front", obj["front"], (o.front));
7156 
7157     parse_VkStencilOpState("back", obj["back"], (o.back));
7158 
7159     parse_float("minDepthBounds", obj["minDepthBounds"], (o.minDepthBounds));
7160 
7161     parse_float("maxDepthBounds", obj["maxDepthBounds"], (o.maxDepthBounds));
7162 }
7163 
parse_VkPipelineColorBlendAttachmentState(const char * s,Json::Value & obj,VkPipelineColorBlendAttachmentState & o)7164 static void parse_VkPipelineColorBlendAttachmentState(const char *s, Json::Value &obj,
7165                                                       VkPipelineColorBlendAttachmentState &o)
7166 {
7167 
7168     parse_VkBool32("blendEnable", obj["blendEnable"], (o.blendEnable));
7169 
7170     parse_VkBlendFactor("srcColorBlendFactor", obj["srcColorBlendFactor"], (o.srcColorBlendFactor));
7171 
7172     parse_VkBlendFactor("dstColorBlendFactor", obj["dstColorBlendFactor"], (o.dstColorBlendFactor));
7173 
7174     parse_VkBlendOp("colorBlendOp", obj["colorBlendOp"], (o.colorBlendOp));
7175 
7176     parse_VkBlendFactor("srcAlphaBlendFactor", obj["srcAlphaBlendFactor"], (o.srcAlphaBlendFactor));
7177 
7178     parse_VkBlendFactor("dstAlphaBlendFactor", obj["dstAlphaBlendFactor"], (o.dstAlphaBlendFactor));
7179 
7180     parse_VkBlendOp("alphaBlendOp", obj["alphaBlendOp"], (o.alphaBlendOp));
7181 
7182     parse_VkColorComponentFlags("colorWriteMask", obj["colorWriteMask"], (o.colorWriteMask));
7183 }
7184 
parse_VkPipelineColorBlendStateCreateInfo(const char * s,Json::Value & obj,VkPipelineColorBlendStateCreateInfo & o)7185 static void parse_VkPipelineColorBlendStateCreateInfo(const char *s, Json::Value &obj,
7186                                                       VkPipelineColorBlendStateCreateInfo &o)
7187 {
7188 
7189     parse_VkStructureType("sType", obj["sType"], (o.sType));
7190 
7191     o.pNext = (VkPipelineColorBlendStateCreateInfo *)parsePNextChain(obj);
7192 
7193     parse_VkPipelineColorBlendStateCreateFlags("flags", obj["flags"], (o.flags));
7194 
7195     parse_VkBool32("logicOpEnable", obj["logicOpEnable"], (o.logicOpEnable));
7196 
7197     parse_VkLogicOp("logicOp", obj["logicOp"], (o.logicOp));
7198 
7199     parse_uint32_t("attachmentCount", obj["attachmentCount"], (o.attachmentCount));
7200 
7201     (o.pAttachments) = (VkPipelineColorBlendAttachmentState *)s_globalMem.allocate(
7202         (o.attachmentCount), sizeof(VkPipelineColorBlendAttachmentState));
7203     Json::Value &obj_pAttachments = obj["pAttachments"];
7204     if (obj_pAttachments.size() == 0)
7205         (o.pAttachments) = nullptr;
7206     else
7207     {
7208         for (unsigned int i = 0; i < (o.attachmentCount); i++)
7209         {
7210             parse_VkPipelineColorBlendAttachmentState(
7211                 "pAttachments", obj_pAttachments[i],
7212                 const_cast<VkPipelineColorBlendAttachmentState &>((o.pAttachments[i])));
7213         }
7214     }
7215 
7216     Json::Value &obj_blendConstants_arr = obj["blendConstants"];
7217     for (unsigned int i = 0; i < obj_blendConstants_arr.size(); i++)
7218     {
7219         parse_float("blendConstants", obj_blendConstants_arr[i], const_cast<float &>((o.blendConstants[i])));
7220     }
7221 }
7222 
parse_VkPipelineDynamicStateCreateInfo(const char * s,Json::Value & obj,VkPipelineDynamicStateCreateInfo & o)7223 static void parse_VkPipelineDynamicStateCreateInfo(const char *s, Json::Value &obj, VkPipelineDynamicStateCreateInfo &o)
7224 {
7225 
7226     parse_VkStructureType("sType", obj["sType"], (o.sType));
7227 
7228     o.pNext = (VkPipelineDynamicStateCreateInfo *)parsePNextChain(obj);
7229 
7230     parse_VkPipelineDynamicStateCreateFlags("flags", obj["flags"], (o.flags));
7231 
7232     parse_uint32_t("dynamicStateCount", obj["dynamicStateCount"], (o.dynamicStateCount));
7233 
7234     (o.pDynamicStates) = (VkDynamicState *)s_globalMem.allocate((o.dynamicStateCount), sizeof(VkDynamicState));
7235     Json::Value &obj_pDynamicStates_arr = obj["pDynamicStates"];
7236     for (unsigned int i = 0; i < obj_pDynamicStates_arr.size(); i++)
7237     {
7238         parse_VkDynamicState("pDynamicStates", obj_pDynamicStates_arr[i],
7239                              const_cast<VkDynamicState &>((o.pDynamicStates[i])));
7240     }
7241 }
7242 
parse_VkGraphicsPipelineCreateInfo(const char * s,Json::Value & obj,VkGraphicsPipelineCreateInfo & o)7243 static void parse_VkGraphicsPipelineCreateInfo(const char *s, Json::Value &obj, VkGraphicsPipelineCreateInfo &o)
7244 {
7245 
7246     parse_VkStructureType("sType", obj["sType"], (o.sType));
7247 
7248     o.pNext = (VkGraphicsPipelineCreateInfo *)parsePNextChain(obj);
7249 
7250     parse_VkPipelineCreateFlags("flags", obj["flags"], (o.flags));
7251 
7252     parse_uint32_t("stageCount", obj["stageCount"], (o.stageCount));
7253 
7254     (o.pStages)              = (VkPipelineShaderStageCreateInfo *)s_globalMem.allocate((o.stageCount),
7255                                                                                        sizeof(VkPipelineShaderStageCreateInfo));
7256     Json::Value &obj_pStages = obj["pStages"];
7257     if (obj_pStages.size() == 0)
7258         (o.pStages) = nullptr;
7259     else
7260     {
7261         for (unsigned int i = 0; i < (o.stageCount); i++)
7262         {
7263             parse_VkPipelineShaderStageCreateInfo("pStages", obj_pStages[i],
7264                                                   const_cast<VkPipelineShaderStageCreateInfo &>((o.pStages[i])));
7265         }
7266     }
7267 
7268     {
7269         Json::Value &obj_pVertexInputState = obj["pVertexInputState"];
7270         const int sz                       = obj_pVertexInputState.size();
7271         if (obj_pVertexInputState.size() == 0)
7272         {
7273             (o.pVertexInputState) = nullptr;
7274         }
7275         else
7276         {
7277             (o.pVertexInputState) = (VkPipelineVertexInputStateCreateInfo *)s_globalMem.allocate(
7278                 1, sizeof(VkPipelineVertexInputStateCreateInfo));
7279             parse_VkPipelineVertexInputStateCreateInfo(
7280                 "pVertexInputState", obj_pVertexInputState,
7281                 const_cast<VkPipelineVertexInputStateCreateInfo &>(*(o.pVertexInputState)));
7282         }
7283     }
7284 
7285     {
7286         Json::Value &obj_pInputAssemblyState = obj["pInputAssemblyState"];
7287         const int sz                         = obj_pInputAssemblyState.size();
7288         if (obj_pInputAssemblyState.size() == 0)
7289         {
7290             (o.pInputAssemblyState) = nullptr;
7291         }
7292         else
7293         {
7294             (o.pInputAssemblyState) = (VkPipelineInputAssemblyStateCreateInfo *)s_globalMem.allocate(
7295                 1, sizeof(VkPipelineInputAssemblyStateCreateInfo));
7296             parse_VkPipelineInputAssemblyStateCreateInfo(
7297                 "pInputAssemblyState", obj_pInputAssemblyState,
7298                 const_cast<VkPipelineInputAssemblyStateCreateInfo &>(*(o.pInputAssemblyState)));
7299         }
7300     }
7301 
7302     {
7303         Json::Value &obj_pTessellationState = obj["pTessellationState"];
7304         const int sz                        = obj_pTessellationState.size();
7305         if (obj_pTessellationState.size() == 0)
7306         {
7307             (o.pTessellationState) = nullptr;
7308         }
7309         else
7310         {
7311             (o.pTessellationState) = (VkPipelineTessellationStateCreateInfo *)s_globalMem.allocate(
7312                 1, sizeof(VkPipelineTessellationStateCreateInfo));
7313             parse_VkPipelineTessellationStateCreateInfo(
7314                 "pTessellationState", obj_pTessellationState,
7315                 const_cast<VkPipelineTessellationStateCreateInfo &>(*(o.pTessellationState)));
7316         }
7317     }
7318 
7319     {
7320         Json::Value &obj_pViewportState = obj["pViewportState"];
7321         const int sz                    = obj_pViewportState.size();
7322         if (obj_pViewportState.size() == 0)
7323         {
7324             (o.pViewportState) = nullptr;
7325         }
7326         else
7327         {
7328             (o.pViewportState) =
7329                 (VkPipelineViewportStateCreateInfo *)s_globalMem.allocate(1, sizeof(VkPipelineViewportStateCreateInfo));
7330             parse_VkPipelineViewportStateCreateInfo(
7331                 "pViewportState", obj_pViewportState,
7332                 const_cast<VkPipelineViewportStateCreateInfo &>(*(o.pViewportState)));
7333         }
7334     }
7335 
7336     {
7337         Json::Value &obj_pRasterizationState = obj["pRasterizationState"];
7338         const int sz                         = obj_pRasterizationState.size();
7339         if (obj_pRasterizationState.size() == 0)
7340         {
7341             (o.pRasterizationState) = nullptr;
7342         }
7343         else
7344         {
7345             (o.pRasterizationState) = (VkPipelineRasterizationStateCreateInfo *)s_globalMem.allocate(
7346                 1, sizeof(VkPipelineRasterizationStateCreateInfo));
7347             parse_VkPipelineRasterizationStateCreateInfo(
7348                 "pRasterizationState", obj_pRasterizationState,
7349                 const_cast<VkPipelineRasterizationStateCreateInfo &>(*(o.pRasterizationState)));
7350         }
7351     }
7352 
7353     {
7354         Json::Value &obj_pMultisampleState = obj["pMultisampleState"];
7355         const int sz                       = obj_pMultisampleState.size();
7356         if (obj_pMultisampleState.size() == 0)
7357         {
7358             (o.pMultisampleState) = nullptr;
7359         }
7360         else
7361         {
7362             (o.pMultisampleState) = (VkPipelineMultisampleStateCreateInfo *)s_globalMem.allocate(
7363                 1, sizeof(VkPipelineMultisampleStateCreateInfo));
7364             parse_VkPipelineMultisampleStateCreateInfo(
7365                 "pMultisampleState", obj_pMultisampleState,
7366                 const_cast<VkPipelineMultisampleStateCreateInfo &>(*(o.pMultisampleState)));
7367         }
7368     }
7369 
7370     {
7371         Json::Value &obj_pDepthStencilState = obj["pDepthStencilState"];
7372         const int sz                        = obj_pDepthStencilState.size();
7373         if (obj_pDepthStencilState.size() == 0)
7374         {
7375             (o.pDepthStencilState) = nullptr;
7376         }
7377         else
7378         {
7379             (o.pDepthStencilState) = (VkPipelineDepthStencilStateCreateInfo *)s_globalMem.allocate(
7380                 1, sizeof(VkPipelineDepthStencilStateCreateInfo));
7381             parse_VkPipelineDepthStencilStateCreateInfo(
7382                 "pDepthStencilState", obj_pDepthStencilState,
7383                 const_cast<VkPipelineDepthStencilStateCreateInfo &>(*(o.pDepthStencilState)));
7384         }
7385     }
7386 
7387     {
7388         Json::Value &obj_pColorBlendState = obj["pColorBlendState"];
7389         const int sz                      = obj_pColorBlendState.size();
7390         if (obj_pColorBlendState.size() == 0)
7391         {
7392             (o.pColorBlendState) = nullptr;
7393         }
7394         else
7395         {
7396             (o.pColorBlendState) = (VkPipelineColorBlendStateCreateInfo *)s_globalMem.allocate(
7397                 1, sizeof(VkPipelineColorBlendStateCreateInfo));
7398             parse_VkPipelineColorBlendStateCreateInfo(
7399                 "pColorBlendState", obj_pColorBlendState,
7400                 const_cast<VkPipelineColorBlendStateCreateInfo &>(*(o.pColorBlendState)));
7401         }
7402     }
7403 
7404     {
7405         Json::Value &obj_pDynamicState = obj["pDynamicState"];
7406         const int sz                   = obj_pDynamicState.size();
7407         if (obj_pDynamicState.size() == 0)
7408         {
7409             (o.pDynamicState) = nullptr;
7410         }
7411         else
7412         {
7413             (o.pDynamicState) =
7414                 (VkPipelineDynamicStateCreateInfo *)s_globalMem.allocate(1, sizeof(VkPipelineDynamicStateCreateInfo));
7415             parse_VkPipelineDynamicStateCreateInfo("pDynamicState", obj_pDynamicState,
7416                                                    const_cast<VkPipelineDynamicStateCreateInfo &>(*(o.pDynamicState)));
7417         }
7418     }
7419 
7420     uint64_t layoutInternal = 0;
7421     parse_uint64_t("layout", obj["layout"], layoutInternal);
7422     o.layout = VkPipelineLayout(layoutInternal);
7423 
7424     uint64_t renderPassInternal = 0;
7425     parse_uint64_t("renderPass", obj["renderPass"], renderPassInternal);
7426     o.renderPass = VkRenderPass(renderPassInternal);
7427 
7428     parse_uint32_t("subpass", obj["subpass"], (o.subpass));
7429 
7430     parse_int32_t("basePipelineIndex", obj["basePipelineIndex"], (o.basePipelineIndex));
7431 }
7432 
parse_VkPushConstantRange(const char * s,Json::Value & obj,VkPushConstantRange & o)7433 static void parse_VkPushConstantRange(const char *s, Json::Value &obj, VkPushConstantRange &o)
7434 {
7435 
7436     parse_VkShaderStageFlags("stageFlags", obj["stageFlags"], (o.stageFlags));
7437 
7438     parse_uint32_t("offset", obj["offset"], (o.offset));
7439 
7440     parse_uint32_t("size", obj["size"], (o.size));
7441 }
7442 
parse_VkPipelineLayoutCreateInfo(const char * s,Json::Value & obj,VkPipelineLayoutCreateInfo & o)7443 static void parse_VkPipelineLayoutCreateInfo(const char *s, Json::Value &obj, VkPipelineLayoutCreateInfo &o)
7444 {
7445 
7446     parse_VkStructureType("sType", obj["sType"], (o.sType));
7447 
7448     o.pNext = (VkPipelineLayoutCreateInfo *)parsePNextChain(obj);
7449 
7450     parse_VkPipelineLayoutCreateFlags("flags", obj["flags"], (o.flags));
7451 
7452     parse_uint32_t("setLayoutCount", obj["setLayoutCount"], (o.setLayoutCount));
7453 
7454     VkDescriptorSetLayout *pSetLayoutsTab =
7455         (VkDescriptorSetLayout *)s_globalMem.allocate((o.setLayoutCount), sizeof(VkDescriptorSetLayout));
7456     Json::Value &obj_pSetLayouts_arr = obj["pSetLayouts"];
7457     for (unsigned int i = 0; i < obj_pSetLayouts_arr.size(); i++)
7458     {
7459         uint64_t pSetLayoutsInternal = 0;
7460         parse_uint64_t("pSetLayouts", obj_pSetLayouts_arr[i], pSetLayoutsInternal);
7461         pSetLayoutsTab[i] = VkDescriptorSetLayout(pSetLayoutsInternal);
7462     }
7463     o.pSetLayouts = pSetLayoutsTab;
7464 
7465     parse_uint32_t("pushConstantRangeCount", obj["pushConstantRangeCount"], (o.pushConstantRangeCount));
7466 
7467     (o.pPushConstantRanges) =
7468         (VkPushConstantRange *)s_globalMem.allocate((o.pushConstantRangeCount), sizeof(VkPushConstantRange));
7469     Json::Value &obj_pPushConstantRanges = obj["pPushConstantRanges"];
7470     if (obj_pPushConstantRanges.size() == 0)
7471         (o.pPushConstantRanges) = nullptr;
7472     else
7473     {
7474         for (unsigned int i = 0; i < (o.pushConstantRangeCount); i++)
7475         {
7476             parse_VkPushConstantRange("pPushConstantRanges", obj_pPushConstantRanges[i],
7477                                       const_cast<VkPushConstantRange &>((o.pPushConstantRanges[i])));
7478         }
7479     }
7480 }
7481 
parse_VkSamplerCreateInfo(const char * s,Json::Value & obj,VkSamplerCreateInfo & o)7482 static void parse_VkSamplerCreateInfo(const char *s, Json::Value &obj, VkSamplerCreateInfo &o)
7483 {
7484 
7485     parse_VkStructureType("sType", obj["sType"], (o.sType));
7486 
7487     o.pNext = (VkSamplerCreateInfo *)parsePNextChain(obj);
7488 
7489     parse_VkSamplerCreateFlags("flags", obj["flags"], (o.flags));
7490 
7491     parse_VkFilter("magFilter", obj["magFilter"], (o.magFilter));
7492 
7493     parse_VkFilter("minFilter", obj["minFilter"], (o.minFilter));
7494 
7495     parse_VkSamplerMipmapMode("mipmapMode", obj["mipmapMode"], (o.mipmapMode));
7496 
7497     parse_VkSamplerAddressMode("addressModeU", obj["addressModeU"], (o.addressModeU));
7498 
7499     parse_VkSamplerAddressMode("addressModeV", obj["addressModeV"], (o.addressModeV));
7500 
7501     parse_VkSamplerAddressMode("addressModeW", obj["addressModeW"], (o.addressModeW));
7502 
7503     parse_float("mipLodBias", obj["mipLodBias"], (o.mipLodBias));
7504 
7505     parse_VkBool32("anisotropyEnable", obj["anisotropyEnable"], (o.anisotropyEnable));
7506 
7507     parse_float("maxAnisotropy", obj["maxAnisotropy"], (o.maxAnisotropy));
7508 
7509     parse_VkBool32("compareEnable", obj["compareEnable"], (o.compareEnable));
7510 
7511     parse_VkCompareOp("compareOp", obj["compareOp"], (o.compareOp));
7512 
7513     parse_float("minLod", obj["minLod"], (o.minLod));
7514 
7515     parse_float("maxLod", obj["maxLod"], (o.maxLod));
7516 
7517     parse_VkBorderColor("borderColor", obj["borderColor"], (o.borderColor));
7518 
7519     parse_VkBool32("unnormalizedCoordinates", obj["unnormalizedCoordinates"], (o.unnormalizedCoordinates));
7520 }
7521 
parse_VkCopyDescriptorSet(const char * s,Json::Value & obj,VkCopyDescriptorSet & o)7522 static void parse_VkCopyDescriptorSet(const char *s, Json::Value &obj, VkCopyDescriptorSet &o)
7523 {
7524 
7525     parse_VkStructureType("sType", obj["sType"], (o.sType));
7526 
7527     o.pNext = (VkCopyDescriptorSet *)parsePNextChain(obj);
7528 
7529     parse_uint32_t("srcBinding", obj["srcBinding"], (o.srcBinding));
7530 
7531     parse_uint32_t("srcArrayElement", obj["srcArrayElement"], (o.srcArrayElement));
7532 
7533     parse_uint32_t("dstBinding", obj["dstBinding"], (o.dstBinding));
7534 
7535     parse_uint32_t("dstArrayElement", obj["dstArrayElement"], (o.dstArrayElement));
7536 
7537     parse_uint32_t("descriptorCount", obj["descriptorCount"], (o.descriptorCount));
7538 }
7539 
parse_VkDescriptorBufferInfo(const char * s,Json::Value & obj,VkDescriptorBufferInfo & o)7540 static void parse_VkDescriptorBufferInfo(const char *s, Json::Value &obj, VkDescriptorBufferInfo &o)
7541 {
7542 
7543     parse_VkDeviceSize("offset", obj["offset"], (o.offset));
7544 
7545     parse_VkDeviceSize("range", obj["range"], (o.range));
7546 }
7547 
parse_VkDescriptorImageInfo(const char * s,Json::Value & obj,VkDescriptorImageInfo & o)7548 static void parse_VkDescriptorImageInfo(const char *s, Json::Value &obj, VkDescriptorImageInfo &o)
7549 {
7550 
7551     parse_VkImageLayout("imageLayout", obj["imageLayout"], (o.imageLayout));
7552 }
7553 
parse_VkDescriptorPoolSize(const char * s,Json::Value & obj,VkDescriptorPoolSize & o)7554 static void parse_VkDescriptorPoolSize(const char *s, Json::Value &obj, VkDescriptorPoolSize &o)
7555 {
7556 
7557     parse_VkDescriptorType("type", obj["type"], (o.type));
7558 
7559     parse_uint32_t("descriptorCount", obj["descriptorCount"], (o.descriptorCount));
7560 }
7561 
parse_VkDescriptorPoolCreateInfo(const char * s,Json::Value & obj,VkDescriptorPoolCreateInfo & o)7562 static void parse_VkDescriptorPoolCreateInfo(const char *s, Json::Value &obj, VkDescriptorPoolCreateInfo &o)
7563 {
7564 
7565     parse_VkStructureType("sType", obj["sType"], (o.sType));
7566 
7567     o.pNext = (VkDescriptorPoolCreateInfo *)parsePNextChain(obj);
7568 
7569     parse_VkDescriptorPoolCreateFlags("flags", obj["flags"], (o.flags));
7570 
7571     parse_uint32_t("maxSets", obj["maxSets"], (o.maxSets));
7572 
7573     parse_uint32_t("poolSizeCount", obj["poolSizeCount"], (o.poolSizeCount));
7574 
7575     (o.pPoolSizes) = (VkDescriptorPoolSize *)s_globalMem.allocate((o.poolSizeCount), sizeof(VkDescriptorPoolSize));
7576     Json::Value &obj_pPoolSizes = obj["pPoolSizes"];
7577     if (obj_pPoolSizes.size() == 0)
7578         (o.pPoolSizes) = nullptr;
7579     else
7580     {
7581         for (unsigned int i = 0; i < (o.poolSizeCount); i++)
7582         {
7583             parse_VkDescriptorPoolSize("pPoolSizes", obj_pPoolSizes[i],
7584                                        const_cast<VkDescriptorPoolSize &>((o.pPoolSizes[i])));
7585         }
7586     }
7587 }
7588 
parse_VkDescriptorSetAllocateInfo(const char * s,Json::Value & obj,VkDescriptorSetAllocateInfo & o)7589 static void parse_VkDescriptorSetAllocateInfo(const char *s, Json::Value &obj, VkDescriptorSetAllocateInfo &o)
7590 {
7591 
7592     parse_VkStructureType("sType", obj["sType"], (o.sType));
7593 
7594     o.pNext = (VkDescriptorSetAllocateInfo *)parsePNextChain(obj);
7595 
7596     parse_uint32_t("descriptorSetCount", obj["descriptorSetCount"], (o.descriptorSetCount));
7597 
7598     (o.pSetLayouts) =
7599         (VkDescriptorSetLayout *)s_globalMem.allocate((o.descriptorSetCount), sizeof(VkDescriptorSetLayout));
7600     Json::Value &obj_pSetLayouts_arr = obj["pSetLayouts"];
7601     for (unsigned int i = 0; i < obj_pSetLayouts_arr.size(); i++)
7602     {
7603         parse_VkDescriptorSetLayout("pSetLayouts", obj_pSetLayouts_arr[i],
7604                                     const_cast<VkDescriptorSetLayout &>((o.pSetLayouts[i])));
7605     }
7606 }
7607 
parse_VkDescriptorSetLayoutBinding(const char * s,Json::Value & obj,VkDescriptorSetLayoutBinding & o)7608 static void parse_VkDescriptorSetLayoutBinding(const char *s, Json::Value &obj, VkDescriptorSetLayoutBinding &o)
7609 {
7610 
7611     parse_uint32_t("binding", obj["binding"], (o.binding));
7612 
7613     parse_VkDescriptorType("descriptorType", obj["descriptorType"], (o.descriptorType));
7614 
7615     parse_uint32_t("descriptorCount", obj["descriptorCount"], (o.descriptorCount));
7616 
7617     parse_VkShaderStageFlags("stageFlags", obj["stageFlags"], (o.stageFlags));
7618 
7619     Json::Value &obj_pImmutableSamplers = obj["pImmutableSamplers"];
7620     if (obj_pImmutableSamplers.empty() ||
7621         (obj_pImmutableSamplers.isString() && obj_pImmutableSamplers.asString() == "NULL"))
7622         o.pImmutableSamplers = nullptr;
7623     else
7624     {
7625         VkSampler *samplers = (VkSampler *)s_globalMem.allocate((o.descriptorCount), sizeof(VkSampler));
7626         for (unsigned int i = 0; i < obj_pImmutableSamplers.size(); i++)
7627         {
7628             uint64_t sInternal = 0;
7629             parse_uint64_t("pImmutableSamplers", obj_pImmutableSamplers[i], sInternal);
7630             samplers[i] = VkSampler(sInternal);
7631         }
7632         o.pImmutableSamplers = samplers;
7633     }
7634 }
7635 
parse_VkDescriptorSetLayoutCreateInfo(const char * s,Json::Value & obj,VkDescriptorSetLayoutCreateInfo & o)7636 static void parse_VkDescriptorSetLayoutCreateInfo(const char *s, Json::Value &obj, VkDescriptorSetLayoutCreateInfo &o)
7637 {
7638 
7639     parse_VkStructureType("sType", obj["sType"], (o.sType));
7640 
7641     o.pNext = (VkDescriptorSetLayoutCreateInfo *)parsePNextChain(obj);
7642 
7643     parse_VkDescriptorSetLayoutCreateFlags("flags", obj["flags"], (o.flags));
7644 
7645     parse_uint32_t("bindingCount", obj["bindingCount"], (o.bindingCount));
7646 
7647     (o.pBindings) =
7648         (VkDescriptorSetLayoutBinding *)s_globalMem.allocate((o.bindingCount), sizeof(VkDescriptorSetLayoutBinding));
7649     Json::Value &obj_pBindings = obj["pBindings"];
7650     if (obj_pBindings.size() == 0)
7651         (o.pBindings) = nullptr;
7652     else
7653     {
7654         for (unsigned int i = 0; i < (o.bindingCount); i++)
7655         {
7656             parse_VkDescriptorSetLayoutBinding("pBindings", obj_pBindings[i],
7657                                                const_cast<VkDescriptorSetLayoutBinding &>((o.pBindings[i])));
7658         }
7659     }
7660 }
7661 
parse_VkWriteDescriptorSet(const char * s,Json::Value & obj,VkWriteDescriptorSet & o)7662 static void parse_VkWriteDescriptorSet(const char *s, Json::Value &obj, VkWriteDescriptorSet &o)
7663 {
7664 
7665     parse_VkStructureType("sType", obj["sType"], (o.sType));
7666 
7667     o.pNext = (VkWriteDescriptorSet *)parsePNextChain(obj);
7668 
7669     parse_uint32_t("dstBinding", obj["dstBinding"], (o.dstBinding));
7670 
7671     parse_uint32_t("dstArrayElement", obj["dstArrayElement"], (o.dstArrayElement));
7672 
7673     parse_uint32_t("descriptorCount", obj["descriptorCount"], (o.descriptorCount));
7674 
7675     parse_VkDescriptorType("descriptorType", obj["descriptorType"], (o.descriptorType));
7676 
7677     (o.pImageInfo) = (VkDescriptorImageInfo *)s_globalMem.allocate((o.descriptorCount), sizeof(VkDescriptorImageInfo));
7678     Json::Value &obj_pImageInfo = obj["pImageInfo"];
7679     if (obj_pImageInfo.size() == 0)
7680         (o.pImageInfo) = nullptr;
7681     else
7682     {
7683         for (unsigned int i = 0; i < (o.descriptorCount); i++)
7684         {
7685             parse_VkDescriptorImageInfo("pImageInfo", obj_pImageInfo[i],
7686                                         const_cast<VkDescriptorImageInfo &>((o.pImageInfo[i])));
7687         }
7688     }
7689 
7690     (o.pBufferInfo) =
7691         (VkDescriptorBufferInfo *)s_globalMem.allocate((o.descriptorCount), sizeof(VkDescriptorBufferInfo));
7692     Json::Value &obj_pBufferInfo = obj["pBufferInfo"];
7693     if (obj_pBufferInfo.size() == 0)
7694         (o.pBufferInfo) = nullptr;
7695     else
7696     {
7697         for (unsigned int i = 0; i < (o.descriptorCount); i++)
7698         {
7699             parse_VkDescriptorBufferInfo("pBufferInfo", obj_pBufferInfo[i],
7700                                          const_cast<VkDescriptorBufferInfo &>((o.pBufferInfo[i])));
7701         }
7702     }
7703 
7704     (o.pTexelBufferView) = (VkBufferView *)s_globalMem.allocate((o.descriptorCount), sizeof(VkBufferView));
7705     Json::Value &obj_pTexelBufferView_arr = obj["pTexelBufferView"];
7706     for (unsigned int i = 0; i < obj_pTexelBufferView_arr.size(); i++)
7707     {
7708         parse_VkBufferView("pTexelBufferView", obj_pTexelBufferView_arr[i],
7709                            const_cast<VkBufferView &>((o.pTexelBufferView[i])));
7710     }
7711 }
7712 
parse_VkAttachmentDescription(const char * s,Json::Value & obj,VkAttachmentDescription & o)7713 static void parse_VkAttachmentDescription(const char *s, Json::Value &obj, VkAttachmentDescription &o)
7714 {
7715 
7716     parse_VkAttachmentDescriptionFlags("flags", obj["flags"], (o.flags));
7717 
7718     parse_VkFormat("format", obj["format"], (o.format));
7719 
7720     parse_VkSampleCountFlagBits("samples", obj["samples"], (o.samples));
7721 
7722     parse_VkAttachmentLoadOp("loadOp", obj["loadOp"], (o.loadOp));
7723 
7724     parse_VkAttachmentStoreOp("storeOp", obj["storeOp"], (o.storeOp));
7725 
7726     parse_VkAttachmentLoadOp("stencilLoadOp", obj["stencilLoadOp"], (o.stencilLoadOp));
7727 
7728     parse_VkAttachmentStoreOp("stencilStoreOp", obj["stencilStoreOp"], (o.stencilStoreOp));
7729 
7730     parse_VkImageLayout("initialLayout", obj["initialLayout"], (o.initialLayout));
7731 
7732     parse_VkImageLayout("finalLayout", obj["finalLayout"], (o.finalLayout));
7733 }
7734 
parse_VkAttachmentReference(const char * s,Json::Value & obj,VkAttachmentReference & o)7735 static void parse_VkAttachmentReference(const char *s, Json::Value &obj, VkAttachmentReference &o)
7736 {
7737 
7738     parse_uint32_t("attachment", obj["attachment"], (o.attachment));
7739 
7740     parse_VkImageLayout("layout", obj["layout"], (o.layout));
7741 }
7742 
parse_VkFramebufferCreateInfo(const char * s,Json::Value & obj,VkFramebufferCreateInfo & o)7743 static void parse_VkFramebufferCreateInfo(const char *s, Json::Value &obj, VkFramebufferCreateInfo &o)
7744 {
7745 
7746     parse_VkStructureType("sType", obj["sType"], (o.sType));
7747 
7748     o.pNext = (VkFramebufferCreateInfo *)parsePNextChain(obj);
7749 
7750     parse_VkFramebufferCreateFlags("flags", obj["flags"], (o.flags));
7751 
7752     uint64_t renderPassInternal = 0;
7753     parse_uint64_t("renderPass", obj["renderPass"], renderPassInternal);
7754     o.renderPass = VkRenderPass(renderPassInternal);
7755 
7756     parse_uint32_t("attachmentCount", obj["attachmentCount"], (o.attachmentCount));
7757 
7758     (o.pAttachments)                  = (VkImageView *)s_globalMem.allocate((o.attachmentCount), sizeof(VkImageView));
7759     Json::Value &obj_pAttachments_arr = obj["pAttachments"];
7760     for (unsigned int i = 0; i < obj_pAttachments_arr.size(); i++)
7761     {
7762         parse_VkImageView("pAttachments", obj_pAttachments_arr[i], const_cast<VkImageView &>((o.pAttachments[i])));
7763     }
7764 
7765     parse_uint32_t("width", obj["width"], (o.width));
7766 
7767     parse_uint32_t("height", obj["height"], (o.height));
7768 
7769     parse_uint32_t("layers", obj["layers"], (o.layers));
7770 }
7771 
parse_VkSubpassDescription(const char * s,Json::Value & obj,VkSubpassDescription & o)7772 static void parse_VkSubpassDescription(const char *s, Json::Value &obj, VkSubpassDescription &o)
7773 {
7774 
7775     parse_VkSubpassDescriptionFlags("flags", obj["flags"], (o.flags));
7776 
7777     parse_VkPipelineBindPoint("pipelineBindPoint", obj["pipelineBindPoint"], (o.pipelineBindPoint));
7778 
7779     parse_uint32_t("inputAttachmentCount", obj["inputAttachmentCount"], (o.inputAttachmentCount));
7780 
7781     (o.pInputAttachments) =
7782         (VkAttachmentReference *)s_globalMem.allocate((o.inputAttachmentCount), sizeof(VkAttachmentReference));
7783     Json::Value &obj_pInputAttachments = obj["pInputAttachments"];
7784     if (obj_pInputAttachments.size() == 0)
7785         (o.pInputAttachments) = nullptr;
7786     else
7787     {
7788         for (unsigned int i = 0; i < (o.inputAttachmentCount); i++)
7789         {
7790             parse_VkAttachmentReference("pInputAttachments", obj_pInputAttachments[i],
7791                                         const_cast<VkAttachmentReference &>((o.pInputAttachments[i])));
7792         }
7793     }
7794 
7795     parse_uint32_t("colorAttachmentCount", obj["colorAttachmentCount"], (o.colorAttachmentCount));
7796 
7797     (o.pColorAttachments) =
7798         (VkAttachmentReference *)s_globalMem.allocate((o.colorAttachmentCount), sizeof(VkAttachmentReference));
7799     Json::Value &obj_pColorAttachments = obj["pColorAttachments"];
7800     if (obj_pColorAttachments.size() == 0)
7801         (o.pColorAttachments) = nullptr;
7802     else
7803     {
7804         for (unsigned int i = 0; i < (o.colorAttachmentCount); i++)
7805         {
7806             parse_VkAttachmentReference("pColorAttachments", obj_pColorAttachments[i],
7807                                         const_cast<VkAttachmentReference &>((o.pColorAttachments[i])));
7808         }
7809     }
7810 
7811     (o.pResolveAttachments) =
7812         (VkAttachmentReference *)s_globalMem.allocate((o.colorAttachmentCount), sizeof(VkAttachmentReference));
7813     Json::Value &obj_pResolveAttachments = obj["pResolveAttachments"];
7814     if (obj_pResolveAttachments.size() == 0)
7815         (o.pResolveAttachments) = nullptr;
7816     else
7817     {
7818         for (unsigned int i = 0; i < (o.colorAttachmentCount); i++)
7819         {
7820             parse_VkAttachmentReference("pResolveAttachments", obj_pResolveAttachments[i],
7821                                         const_cast<VkAttachmentReference &>((o.pResolveAttachments[i])));
7822         }
7823     }
7824 
7825     {
7826         Json::Value &obj_pDepthStencilAttachment = obj["pDepthStencilAttachment"];
7827         const int sz                             = obj_pDepthStencilAttachment.size();
7828         if (obj_pDepthStencilAttachment.size() == 0)
7829         {
7830             (o.pDepthStencilAttachment) = nullptr;
7831         }
7832         else
7833         {
7834             (o.pDepthStencilAttachment) =
7835                 (VkAttachmentReference *)s_globalMem.allocate(1, sizeof(VkAttachmentReference));
7836             parse_VkAttachmentReference("pDepthStencilAttachment", obj_pDepthStencilAttachment,
7837                                         const_cast<VkAttachmentReference &>(*(o.pDepthStencilAttachment)));
7838         }
7839     }
7840 
7841     parse_uint32_t("preserveAttachmentCount", obj["preserveAttachmentCount"], (o.preserveAttachmentCount));
7842 
7843     (o.pPreserveAttachments) = (uint32_t *)s_globalMem.allocate((o.preserveAttachmentCount), sizeof(uint32_t));
7844     Json::Value &obj_pPreserveAttachments_arr = obj["pPreserveAttachments"];
7845     for (unsigned int i = 0; i < obj_pPreserveAttachments_arr.size(); i++)
7846     {
7847         parse_uint32_t("pPreserveAttachments", obj_pPreserveAttachments_arr[i],
7848                        const_cast<uint32_t &>((o.pPreserveAttachments[i])));
7849     }
7850 }
7851 
parse_VkSubpassDependency(const char * s,Json::Value & obj,VkSubpassDependency & o)7852 static void parse_VkSubpassDependency(const char *s, Json::Value &obj, VkSubpassDependency &o)
7853 {
7854 
7855     parse_uint32_t("srcSubpass", obj["srcSubpass"], (o.srcSubpass));
7856 
7857     parse_uint32_t("dstSubpass", obj["dstSubpass"], (o.dstSubpass));
7858 
7859     parse_VkPipelineStageFlags("srcStageMask", obj["srcStageMask"], (o.srcStageMask));
7860 
7861     parse_VkPipelineStageFlags("dstStageMask", obj["dstStageMask"], (o.dstStageMask));
7862 
7863     parse_VkAccessFlags("srcAccessMask", obj["srcAccessMask"], (o.srcAccessMask));
7864 
7865     parse_VkAccessFlags("dstAccessMask", obj["dstAccessMask"], (o.dstAccessMask));
7866 
7867     parse_VkDependencyFlags("dependencyFlags", obj["dependencyFlags"], (o.dependencyFlags));
7868 }
7869 
parse_VkRenderPassCreateInfo(const char * s,Json::Value & obj,VkRenderPassCreateInfo & o)7870 static void parse_VkRenderPassCreateInfo(const char *s, Json::Value &obj, VkRenderPassCreateInfo &o)
7871 {
7872 
7873     parse_VkStructureType("sType", obj["sType"], (o.sType));
7874 
7875     o.pNext = (VkRenderPassCreateInfo *)parsePNextChain(obj);
7876 
7877     parse_VkRenderPassCreateFlags("flags", obj["flags"], (o.flags));
7878 
7879     parse_uint32_t("attachmentCount", obj["attachmentCount"], (o.attachmentCount));
7880 
7881     (o.pAttachments) =
7882         (VkAttachmentDescription *)s_globalMem.allocate((o.attachmentCount), sizeof(VkAttachmentDescription));
7883     Json::Value &obj_pAttachments = obj["pAttachments"];
7884     if (obj_pAttachments.size() == 0)
7885         (o.pAttachments) = nullptr;
7886     else
7887     {
7888         for (unsigned int i = 0; i < (o.attachmentCount); i++)
7889         {
7890             parse_VkAttachmentDescription("pAttachments", obj_pAttachments[i],
7891                                           const_cast<VkAttachmentDescription &>((o.pAttachments[i])));
7892         }
7893     }
7894 
7895     parse_uint32_t("subpassCount", obj["subpassCount"], (o.subpassCount));
7896 
7897     (o.pSubpasses) = (VkSubpassDescription *)s_globalMem.allocate((o.subpassCount), sizeof(VkSubpassDescription));
7898     Json::Value &obj_pSubpasses = obj["pSubpasses"];
7899     if (obj_pSubpasses.size() == 0)
7900         (o.pSubpasses) = nullptr;
7901     else
7902     {
7903         for (unsigned int i = 0; i < (o.subpassCount); i++)
7904         {
7905             parse_VkSubpassDescription("pSubpasses", obj_pSubpasses[i],
7906                                        const_cast<VkSubpassDescription &>((o.pSubpasses[i])));
7907         }
7908     }
7909 
7910     parse_uint32_t("dependencyCount", obj["dependencyCount"], (o.dependencyCount));
7911 
7912     (o.pDependencies) = (VkSubpassDependency *)s_globalMem.allocate((o.dependencyCount), sizeof(VkSubpassDependency));
7913     Json::Value &obj_pDependencies = obj["pDependencies"];
7914     if (obj_pDependencies.size() == 0)
7915         (o.pDependencies) = nullptr;
7916     else
7917     {
7918         for (unsigned int i = 0; i < (o.dependencyCount); i++)
7919         {
7920             parse_VkSubpassDependency("pDependencies", obj_pDependencies[i],
7921                                       const_cast<VkSubpassDependency &>((o.pDependencies[i])));
7922         }
7923     }
7924 }
7925 
parse_VkCommandPoolCreateInfo(const char * s,Json::Value & obj,VkCommandPoolCreateInfo & o)7926 static void parse_VkCommandPoolCreateInfo(const char *s, Json::Value &obj, VkCommandPoolCreateInfo &o)
7927 {
7928 
7929     parse_VkStructureType("sType", obj["sType"], (o.sType));
7930 
7931     o.pNext = (VkCommandPoolCreateInfo *)parsePNextChain(obj);
7932 
7933     parse_VkCommandPoolCreateFlags("flags", obj["flags"], (o.flags));
7934 
7935     parse_uint32_t("queueFamilyIndex", obj["queueFamilyIndex"], (o.queueFamilyIndex));
7936 }
7937 
parse_VkCommandBufferAllocateInfo(const char * s,Json::Value & obj,VkCommandBufferAllocateInfo & o)7938 static void parse_VkCommandBufferAllocateInfo(const char *s, Json::Value &obj, VkCommandBufferAllocateInfo &o)
7939 {
7940 
7941     parse_VkStructureType("sType", obj["sType"], (o.sType));
7942 
7943     o.pNext = (VkCommandBufferAllocateInfo *)parsePNextChain(obj);
7944 
7945     parse_VkCommandBufferLevel("level", obj["level"], (o.level));
7946 
7947     parse_uint32_t("commandBufferCount", obj["commandBufferCount"], (o.commandBufferCount));
7948 }
7949 
parse_VkCommandBufferInheritanceInfo(const char * s,Json::Value & obj,VkCommandBufferInheritanceInfo & o)7950 static void parse_VkCommandBufferInheritanceInfo(const char *s, Json::Value &obj, VkCommandBufferInheritanceInfo &o)
7951 {
7952 
7953     parse_VkStructureType("sType", obj["sType"], (o.sType));
7954 
7955     o.pNext = (VkCommandBufferInheritanceInfo *)parsePNextChain(obj);
7956 
7957     uint64_t renderPassInternal = 0;
7958     parse_uint64_t("renderPass", obj["renderPass"], renderPassInternal);
7959     o.renderPass = VkRenderPass(renderPassInternal);
7960 
7961     parse_uint32_t("subpass", obj["subpass"], (o.subpass));
7962 
7963     parse_VkBool32("occlusionQueryEnable", obj["occlusionQueryEnable"], (o.occlusionQueryEnable));
7964 
7965     parse_VkQueryControlFlags("queryFlags", obj["queryFlags"], (o.queryFlags));
7966 
7967     parse_VkQueryPipelineStatisticFlags("pipelineStatistics", obj["pipelineStatistics"], (o.pipelineStatistics));
7968 }
7969 
parse_VkCommandBufferBeginInfo(const char * s,Json::Value & obj,VkCommandBufferBeginInfo & o)7970 static void parse_VkCommandBufferBeginInfo(const char *s, Json::Value &obj, VkCommandBufferBeginInfo &o)
7971 {
7972 
7973     parse_VkStructureType("sType", obj["sType"], (o.sType));
7974 
7975     o.pNext = (VkCommandBufferBeginInfo *)parsePNextChain(obj);
7976 
7977     parse_VkCommandBufferUsageFlags("flags", obj["flags"], (o.flags));
7978 
7979     {
7980         Json::Value &obj_pInheritanceInfo = obj["pInheritanceInfo"];
7981         const int sz                      = obj_pInheritanceInfo.size();
7982         if (obj_pInheritanceInfo.size() == 0)
7983         {
7984             (o.pInheritanceInfo) = nullptr;
7985         }
7986         else
7987         {
7988             (o.pInheritanceInfo) =
7989                 (VkCommandBufferInheritanceInfo *)s_globalMem.allocate(1, sizeof(VkCommandBufferInheritanceInfo));
7990             parse_VkCommandBufferInheritanceInfo("pInheritanceInfo", obj_pInheritanceInfo,
7991                                                  const_cast<VkCommandBufferInheritanceInfo &>(*(o.pInheritanceInfo)));
7992         }
7993     }
7994 }
7995 
parse_VkBufferCopy(const char * s,Json::Value & obj,VkBufferCopy & o)7996 static void parse_VkBufferCopy(const char *s, Json::Value &obj, VkBufferCopy &o)
7997 {
7998 
7999     parse_VkDeviceSize("srcOffset", obj["srcOffset"], (o.srcOffset));
8000 
8001     parse_VkDeviceSize("dstOffset", obj["dstOffset"], (o.dstOffset));
8002 
8003     parse_VkDeviceSize("size", obj["size"], (o.size));
8004 }
8005 
parse_VkImageSubresourceLayers(const char * s,Json::Value & obj,VkImageSubresourceLayers & o)8006 static void parse_VkImageSubresourceLayers(const char *s, Json::Value &obj, VkImageSubresourceLayers &o)
8007 {
8008 
8009     parse_VkImageAspectFlags("aspectMask", obj["aspectMask"], (o.aspectMask));
8010 
8011     parse_uint32_t("mipLevel", obj["mipLevel"], (o.mipLevel));
8012 
8013     parse_uint32_t("baseArrayLayer", obj["baseArrayLayer"], (o.baseArrayLayer));
8014 
8015     parse_uint32_t("layerCount", obj["layerCount"], (o.layerCount));
8016 }
8017 
parse_VkBufferImageCopy(const char * s,Json::Value & obj,VkBufferImageCopy & o)8018 static void parse_VkBufferImageCopy(const char *s, Json::Value &obj, VkBufferImageCopy &o)
8019 {
8020 
8021     parse_VkDeviceSize("bufferOffset", obj["bufferOffset"], (o.bufferOffset));
8022 
8023     parse_uint32_t("bufferRowLength", obj["bufferRowLength"], (o.bufferRowLength));
8024 
8025     parse_uint32_t("bufferImageHeight", obj["bufferImageHeight"], (o.bufferImageHeight));
8026 
8027     parse_VkImageSubresourceLayers("imageSubresource", obj["imageSubresource"], (o.imageSubresource));
8028 
8029     parse_VkOffset3D("imageOffset", obj["imageOffset"], (o.imageOffset));
8030 
8031     parse_VkExtent3D("imageExtent", obj["imageExtent"], (o.imageExtent));
8032 }
8033 
parse_VkClearColorValue(const char * s,Json::Value & obj,VkClearColorValue & o)8034 static void parse_VkClearColorValue(const char *s, Json::Value &obj, VkClearColorValue &o)
8035 {
8036 
8037     Json::Value &obj_float32_arr = obj["float32"];
8038     for (unsigned int i = 0; i < obj_float32_arr.size(); i++)
8039     {
8040         parse_float("float32", obj_float32_arr[i], const_cast<float &>((o.float32[i])));
8041     }
8042 
8043     Json::Value &obj_int32_arr = obj["int32"];
8044     for (unsigned int i = 0; i < obj_int32_arr.size(); i++)
8045     {
8046         parse_int32_t("int32", obj_int32_arr[i], const_cast<int32_t &>((o.int32[i])));
8047     }
8048 
8049     Json::Value &obj_uint32_arr = obj["uint32"];
8050     for (unsigned int i = 0; i < obj_uint32_arr.size(); i++)
8051     {
8052         parse_uint32_t("uint32", obj_uint32_arr[i], const_cast<uint32_t &>((o.uint32[i])));
8053     }
8054 }
8055 
parse_VkClearDepthStencilValue(const char * s,Json::Value & obj,VkClearDepthStencilValue & o)8056 static void parse_VkClearDepthStencilValue(const char *s, Json::Value &obj, VkClearDepthStencilValue &o)
8057 {
8058 
8059     parse_float("depth", obj["depth"], (o.depth));
8060 
8061     parse_uint32_t("stencil", obj["stencil"], (o.stencil));
8062 }
8063 
parse_VkClearValue(const char * s,Json::Value & obj,VkClearValue & o)8064 static void parse_VkClearValue(const char *s, Json::Value &obj, VkClearValue &o)
8065 {
8066 
8067     parse_VkClearColorValue("color", obj["color"], (o.color));
8068 
8069     parse_VkClearDepthStencilValue("depthStencil", obj["depthStencil"], (o.depthStencil));
8070 }
8071 
parse_VkClearAttachment(const char * s,Json::Value & obj,VkClearAttachment & o)8072 static void parse_VkClearAttachment(const char *s, Json::Value &obj, VkClearAttachment &o)
8073 {
8074 
8075     parse_VkImageAspectFlags("aspectMask", obj["aspectMask"], (o.aspectMask));
8076 
8077     parse_uint32_t("colorAttachment", obj["colorAttachment"], (o.colorAttachment));
8078 
8079     parse_VkClearValue("clearValue", obj["clearValue"], (o.clearValue));
8080 }
8081 
parse_VkClearRect(const char * s,Json::Value & obj,VkClearRect & o)8082 static void parse_VkClearRect(const char *s, Json::Value &obj, VkClearRect &o)
8083 {
8084 
8085     parse_VkRect2D("rect", obj["rect"], (o.rect));
8086 
8087     parse_uint32_t("baseArrayLayer", obj["baseArrayLayer"], (o.baseArrayLayer));
8088 
8089     parse_uint32_t("layerCount", obj["layerCount"], (o.layerCount));
8090 }
8091 
parse_VkImageBlit(const char * s,Json::Value & obj,VkImageBlit & o)8092 static void parse_VkImageBlit(const char *s, Json::Value &obj, VkImageBlit &o)
8093 {
8094 
8095     parse_VkImageSubresourceLayers("srcSubresource", obj["srcSubresource"], (o.srcSubresource));
8096 
8097     Json::Value &obj_srcOffsets_arr = obj["srcOffsets"];
8098     for (unsigned int i = 0; i < obj_srcOffsets_arr.size(); i++)
8099     {
8100         parse_VkOffset3D("srcOffsets", obj_srcOffsets_arr[i], const_cast<VkOffset3D &>((o.srcOffsets[i])));
8101     }
8102 
8103     parse_VkImageSubresourceLayers("dstSubresource", obj["dstSubresource"], (o.dstSubresource));
8104 
8105     Json::Value &obj_dstOffsets_arr = obj["dstOffsets"];
8106     for (unsigned int i = 0; i < obj_dstOffsets_arr.size(); i++)
8107     {
8108         parse_VkOffset3D("dstOffsets", obj_dstOffsets_arr[i], const_cast<VkOffset3D &>((o.dstOffsets[i])));
8109     }
8110 }
8111 
parse_VkImageCopy(const char * s,Json::Value & obj,VkImageCopy & o)8112 static void parse_VkImageCopy(const char *s, Json::Value &obj, VkImageCopy &o)
8113 {
8114 
8115     parse_VkImageSubresourceLayers("srcSubresource", obj["srcSubresource"], (o.srcSubresource));
8116 
8117     parse_VkOffset3D("srcOffset", obj["srcOffset"], (o.srcOffset));
8118 
8119     parse_VkImageSubresourceLayers("dstSubresource", obj["dstSubresource"], (o.dstSubresource));
8120 
8121     parse_VkOffset3D("dstOffset", obj["dstOffset"], (o.dstOffset));
8122 
8123     parse_VkExtent3D("extent", obj["extent"], (o.extent));
8124 }
8125 
parse_VkImageResolve(const char * s,Json::Value & obj,VkImageResolve & o)8126 static void parse_VkImageResolve(const char *s, Json::Value &obj, VkImageResolve &o)
8127 {
8128 
8129     parse_VkImageSubresourceLayers("srcSubresource", obj["srcSubresource"], (o.srcSubresource));
8130 
8131     parse_VkOffset3D("srcOffset", obj["srcOffset"], (o.srcOffset));
8132 
8133     parse_VkImageSubresourceLayers("dstSubresource", obj["dstSubresource"], (o.dstSubresource));
8134 
8135     parse_VkOffset3D("dstOffset", obj["dstOffset"], (o.dstOffset));
8136 
8137     parse_VkExtent3D("extent", obj["extent"], (o.extent));
8138 }
8139 
parse_VkRenderPassBeginInfo(const char * s,Json::Value & obj,VkRenderPassBeginInfo & o)8140 static void parse_VkRenderPassBeginInfo(const char *s, Json::Value &obj, VkRenderPassBeginInfo &o)
8141 {
8142 
8143     parse_VkStructureType("sType", obj["sType"], (o.sType));
8144 
8145     o.pNext = (VkRenderPassBeginInfo *)parsePNextChain(obj);
8146 
8147     uint64_t renderPassInternal = 0;
8148     parse_uint64_t("renderPass", obj["renderPass"], renderPassInternal);
8149     o.renderPass = VkRenderPass(renderPassInternal);
8150 
8151     parse_VkRect2D("renderArea", obj["renderArea"], (o.renderArea));
8152 
8153     parse_uint32_t("clearValueCount", obj["clearValueCount"], (o.clearValueCount));
8154 
8155     (o.pClearValues)                  = (VkClearValue *)s_globalMem.allocate((o.clearValueCount), sizeof(VkClearValue));
8156     Json::Value &obj_pClearValues_arr = obj["pClearValues"];
8157     for (unsigned int i = 0; i < obj_pClearValues_arr.size(); i++)
8158     {
8159         parse_VkClearValue("pClearValues", obj_pClearValues_arr[i], const_cast<VkClearValue &>((o.pClearValues[i])));
8160     }
8161 }
8162 
parse_VkSamplerYcbcrConversion(const char * s,Json::Value & obj,VkSamplerYcbcrConversion & o)8163 static void parse_VkSamplerYcbcrConversion(const char *s, Json::Value &obj, VkSamplerYcbcrConversion &o)
8164 {
8165     //     std::string _res = obj.asString();
8166 }
8167 
8168 static std::map<std::string, int> VkSubgroupFeatureFlagBits_map = {
8169     std::make_pair("VK_SUBGROUP_FEATURE_BASIC_BIT", 1UL << 0),
8170     std::make_pair("VK_SUBGROUP_FEATURE_VOTE_BIT", 1UL << 1),
8171     std::make_pair("VK_SUBGROUP_FEATURE_ARITHMETIC_BIT", 1UL << 2),
8172     std::make_pair("VK_SUBGROUP_FEATURE_BALLOT_BIT", 1UL << 3),
8173     std::make_pair("VK_SUBGROUP_FEATURE_SHUFFLE_BIT", 1UL << 4),
8174     std::make_pair("VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT", 1UL << 5),
8175     std::make_pair("VK_SUBGROUP_FEATURE_CLUSTERED_BIT", 1UL << 6),
8176     std::make_pair("VK_SUBGROUP_FEATURE_QUAD_BIT", 1UL << 7),
8177     std::make_pair("VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV", 1UL << 8),
8178 };
parse_VkSubgroupFeatureFlagBits(const char * s,Json::Value & obj,VkSubgroupFeatureFlagBits & o)8179 static void parse_VkSubgroupFeatureFlagBits(const char *s, Json::Value &obj, VkSubgroupFeatureFlagBits &o)
8180 {
8181     std::string _res = obj.asString();
8182     o                = (VkSubgroupFeatureFlagBits)VkSubgroupFeatureFlagBits_map[std::string(_res)];
8183 }
8184 
8185 static std::map<std::string, int> VkPeerMemoryFeatureFlagBits_map = {
8186     std::make_pair("VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT", 1UL << 0),
8187     std::make_pair("VK_PEER_MEMORY_FEATURE_COPY_DST_BIT", 1UL << 1),
8188     std::make_pair("VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT", 1UL << 2),
8189     std::make_pair("VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT", 1UL << 3),
8190 };
parse_VkPeerMemoryFeatureFlagBits(const char * s,Json::Value & obj,VkPeerMemoryFeatureFlagBits & o)8191 static void parse_VkPeerMemoryFeatureFlagBits(const char *s, Json::Value &obj, VkPeerMemoryFeatureFlagBits &o)
8192 {
8193     std::string _res = obj.asString();
8194     o                = (VkPeerMemoryFeatureFlagBits)VkPeerMemoryFeatureFlagBits_map[std::string(_res)];
8195 }
8196 
8197 static std::map<std::string, int> VkMemoryAllocateFlagBits_map = {
8198     std::make_pair("VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT", 1UL << 0),
8199     std::make_pair("VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT", 1UL << 1),
8200     std::make_pair("VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT", 1UL << 2),
8201 };
parse_VkMemoryAllocateFlagBits(const char * s,Json::Value & obj,VkMemoryAllocateFlagBits & o)8202 static void parse_VkMemoryAllocateFlagBits(const char *s, Json::Value &obj, VkMemoryAllocateFlagBits &o)
8203 {
8204     std::string _res = obj.asString();
8205     o                = (VkMemoryAllocateFlagBits)VkMemoryAllocateFlagBits_map[std::string(_res)];
8206 }
8207 
8208 static std::map<std::string, int> VkPointClippingBehavior_map = {
8209     std::make_pair("VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES", 0),
8210     std::make_pair("VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY", 1),
8211 };
parse_VkPointClippingBehavior(const char * s,Json::Value & obj,VkPointClippingBehavior & o)8212 static void parse_VkPointClippingBehavior(const char *s, Json::Value &obj, VkPointClippingBehavior &o)
8213 {
8214     std::string _res = obj.asString();
8215     o                = (VkPointClippingBehavior)VkPointClippingBehavior_map[std::string(_res)];
8216 }
8217 
8218 static std::map<std::string, int> VkTessellationDomainOrigin_map = {
8219     std::make_pair("VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT", 0),
8220     std::make_pair("VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT", 1),
8221 };
parse_VkTessellationDomainOrigin(const char * s,Json::Value & obj,VkTessellationDomainOrigin & o)8222 static void parse_VkTessellationDomainOrigin(const char *s, Json::Value &obj, VkTessellationDomainOrigin &o)
8223 {
8224     std::string _res = obj.asString();
8225     o                = (VkTessellationDomainOrigin)VkTessellationDomainOrigin_map[std::string(_res)];
8226 }
8227 
8228 static std::map<std::string, int> VkSamplerYcbcrModelConversion_map = {
8229     std::make_pair("VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY", 0),
8230     std::make_pair("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY", 1),
8231     std::make_pair("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709", 2),
8232     std::make_pair("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601", 3),
8233     std::make_pair("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020", 4),
8234 };
parse_VkSamplerYcbcrModelConversion(const char * s,Json::Value & obj,VkSamplerYcbcrModelConversion & o)8235 static void parse_VkSamplerYcbcrModelConversion(const char *s, Json::Value &obj, VkSamplerYcbcrModelConversion &o)
8236 {
8237     std::string _res = obj.asString();
8238     o                = (VkSamplerYcbcrModelConversion)VkSamplerYcbcrModelConversion_map[std::string(_res)];
8239 }
8240 
8241 static std::map<std::string, int> VkSamplerYcbcrRange_map = {
8242     std::make_pair("VK_SAMPLER_YCBCR_RANGE_ITU_FULL", 0),
8243     std::make_pair("VK_SAMPLER_YCBCR_RANGE_ITU_NARROW", 1),
8244 };
parse_VkSamplerYcbcrRange(const char * s,Json::Value & obj,VkSamplerYcbcrRange & o)8245 static void parse_VkSamplerYcbcrRange(const char *s, Json::Value &obj, VkSamplerYcbcrRange &o)
8246 {
8247     std::string _res = obj.asString();
8248     o                = (VkSamplerYcbcrRange)VkSamplerYcbcrRange_map[std::string(_res)];
8249 }
8250 
8251 static std::map<std::string, int> VkChromaLocation_map = {
8252     std::make_pair("VK_CHROMA_LOCATION_COSITED_EVEN", 0),
8253     std::make_pair("VK_CHROMA_LOCATION_MIDPOINT", 1),
8254 };
parse_VkChromaLocation(const char * s,Json::Value & obj,VkChromaLocation & o)8255 static void parse_VkChromaLocation(const char *s, Json::Value &obj, VkChromaLocation &o)
8256 {
8257     std::string _res = obj.asString();
8258     o                = (VkChromaLocation)VkChromaLocation_map[std::string(_res)];
8259 }
8260 
8261 static std::map<std::string, int> VkExternalMemoryHandleTypeFlagBits_map = {
8262     std::make_pair("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT", 1UL << 0),
8263     std::make_pair("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT", 1UL << 1),
8264     std::make_pair("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT", 1UL << 2),
8265     std::make_pair("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT", 1UL << 3),
8266     std::make_pair("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT", 1UL << 4),
8267     std::make_pair("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT", 1UL << 5),
8268     std::make_pair("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT", 1UL << 6),
8269     std::make_pair("VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT", 1UL << 9),
8270     std::make_pair("VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID", 1UL << 10),
8271     std::make_pair("VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT", 1UL << 7),
8272     std::make_pair("VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT", 1UL << 8),
8273     std::make_pair("VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA", 1UL << 11),
8274     std::make_pair("VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV", 1UL << 12),
8275     std::make_pair("VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCI_BUF_BIT_NV", 1UL << 13),
8276 };
parse_VkExternalMemoryHandleTypeFlagBits(const char * s,Json::Value & obj,VkExternalMemoryHandleTypeFlagBits & o)8277 static void parse_VkExternalMemoryHandleTypeFlagBits(const char *s, Json::Value &obj,
8278                                                      VkExternalMemoryHandleTypeFlagBits &o)
8279 {
8280     std::string _res = obj.asString();
8281     o                = (VkExternalMemoryHandleTypeFlagBits)VkExternalMemoryHandleTypeFlagBits_map[std::string(_res)];
8282 }
8283 
8284 static std::map<std::string, int> VkExternalMemoryFeatureFlagBits_map = {
8285     std::make_pair("VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT", 1UL << 0),
8286     std::make_pair("VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT", 1UL << 1),
8287     std::make_pair("VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT", 1UL << 2),
8288 };
parse_VkExternalMemoryFeatureFlagBits(const char * s,Json::Value & obj,VkExternalMemoryFeatureFlagBits & o)8289 static void parse_VkExternalMemoryFeatureFlagBits(const char *s, Json::Value &obj, VkExternalMemoryFeatureFlagBits &o)
8290 {
8291     std::string _res = obj.asString();
8292     o                = (VkExternalMemoryFeatureFlagBits)VkExternalMemoryFeatureFlagBits_map[std::string(_res)];
8293 }
8294 
8295 static std::map<std::string, int> VkExternalFenceHandleTypeFlagBits_map = {
8296     std::make_pair("VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT", 1UL << 0),
8297     std::make_pair("VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT", 1UL << 1),
8298     std::make_pair("VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT", 1UL << 2),
8299     std::make_pair("VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT", 1UL << 3),
8300     std::make_pair("VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV", 1UL << 4),
8301     std::make_pair("VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV", 1UL << 5),
8302     std::make_pair("VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV", 1UL << 4),
8303     std::make_pair("VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV", 1UL << 5),
8304 };
parse_VkExternalFenceHandleTypeFlagBits(const char * s,Json::Value & obj,VkExternalFenceHandleTypeFlagBits & o)8305 static void parse_VkExternalFenceHandleTypeFlagBits(const char *s, Json::Value &obj,
8306                                                     VkExternalFenceHandleTypeFlagBits &o)
8307 {
8308     std::string _res = obj.asString();
8309     o                = (VkExternalFenceHandleTypeFlagBits)VkExternalFenceHandleTypeFlagBits_map[std::string(_res)];
8310 }
8311 
8312 static std::map<std::string, int> VkExternalFenceFeatureFlagBits_map = {
8313     std::make_pair("VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT", 1UL << 0),
8314     std::make_pair("VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT", 1UL << 1),
8315 };
parse_VkExternalFenceFeatureFlagBits(const char * s,Json::Value & obj,VkExternalFenceFeatureFlagBits & o)8316 static void parse_VkExternalFenceFeatureFlagBits(const char *s, Json::Value &obj, VkExternalFenceFeatureFlagBits &o)
8317 {
8318     std::string _res = obj.asString();
8319     o                = (VkExternalFenceFeatureFlagBits)VkExternalFenceFeatureFlagBits_map[std::string(_res)];
8320 }
8321 
8322 static std::map<std::string, int> VkFenceImportFlagBits_map = {
8323     std::make_pair("VK_FENCE_IMPORT_TEMPORARY_BIT", 1UL << 0),
8324 };
parse_VkFenceImportFlagBits(const char * s,Json::Value & obj,VkFenceImportFlagBits & o)8325 static void parse_VkFenceImportFlagBits(const char *s, Json::Value &obj, VkFenceImportFlagBits &o)
8326 {
8327     std::string _res = obj.asString();
8328     o                = (VkFenceImportFlagBits)VkFenceImportFlagBits_map[std::string(_res)];
8329 }
8330 
8331 static std::map<std::string, int> VkSemaphoreImportFlagBits_map = {
8332     std::make_pair("VK_SEMAPHORE_IMPORT_TEMPORARY_BIT", 1UL << 0),
8333 };
parse_VkSemaphoreImportFlagBits(const char * s,Json::Value & obj,VkSemaphoreImportFlagBits & o)8334 static void parse_VkSemaphoreImportFlagBits(const char *s, Json::Value &obj, VkSemaphoreImportFlagBits &o)
8335 {
8336     std::string _res = obj.asString();
8337     o                = (VkSemaphoreImportFlagBits)VkSemaphoreImportFlagBits_map[std::string(_res)];
8338 }
8339 
8340 static std::map<std::string, int> VkExternalSemaphoreHandleTypeFlagBits_map = {
8341     std::make_pair("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT", 1UL << 0),
8342     std::make_pair("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT", 1UL << 1),
8343     std::make_pair("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT", 1UL << 2),
8344     std::make_pair("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT", 1UL << 3),
8345     std::make_pair("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT", 1UL << 4),
8346     std::make_pair("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA", 1UL << 7),
8347     std::make_pair("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV", 1UL << 5),
8348 };
parse_VkExternalSemaphoreHandleTypeFlagBits(const char * s,Json::Value & obj,VkExternalSemaphoreHandleTypeFlagBits & o)8349 static void parse_VkExternalSemaphoreHandleTypeFlagBits(const char *s, Json::Value &obj,
8350                                                         VkExternalSemaphoreHandleTypeFlagBits &o)
8351 {
8352     std::string _res = obj.asString();
8353     o = (VkExternalSemaphoreHandleTypeFlagBits)VkExternalSemaphoreHandleTypeFlagBits_map[std::string(_res)];
8354 }
8355 
8356 static std::map<std::string, int> VkExternalSemaphoreFeatureFlagBits_map = {
8357     std::make_pair("VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT", 1UL << 0),
8358     std::make_pair("VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT", 1UL << 1),
8359 };
parse_VkExternalSemaphoreFeatureFlagBits(const char * s,Json::Value & obj,VkExternalSemaphoreFeatureFlagBits & o)8360 static void parse_VkExternalSemaphoreFeatureFlagBits(const char *s, Json::Value &obj,
8361                                                      VkExternalSemaphoreFeatureFlagBits &o)
8362 {
8363     std::string _res = obj.asString();
8364     o                = (VkExternalSemaphoreFeatureFlagBits)VkExternalSemaphoreFeatureFlagBits_map[std::string(_res)];
8365 }
8366 
parse_VkSubgroupFeatureFlags(const char * s,Json::Value & obj,VkSubgroupFeatureFlags & o)8367 static void parse_VkSubgroupFeatureFlags(const char *s, Json::Value &obj, VkSubgroupFeatureFlags &o)
8368 {
8369     o                = (VkSubgroupFeatureFlags)0;
8370     std::string _res = obj.asString();
8371     std::vector<std::string> bitmasks;
8372     std::istringstream inputStream(_res);
8373     std::string tempStr;
8374     while (getline(inputStream, tempStr, '|'))
8375     {
8376         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
8377         bitmasks.push_back(tempStr);
8378     }
8379     for (auto &it : bitmasks)
8380     {
8381         o |= (VkSubgroupFeatureFlagBits)VkSubgroupFeatureFlagBits_map[it];
8382     }
8383 }
8384 
parse_VkPeerMemoryFeatureFlags(const char * s,Json::Value & obj,VkPeerMemoryFeatureFlags & o)8385 static void parse_VkPeerMemoryFeatureFlags(const char *s, Json::Value &obj, VkPeerMemoryFeatureFlags &o)
8386 {
8387     o                = (VkPeerMemoryFeatureFlags)0;
8388     std::string _res = obj.asString();
8389     std::vector<std::string> bitmasks;
8390     std::istringstream inputStream(_res);
8391     std::string tempStr;
8392     while (getline(inputStream, tempStr, '|'))
8393     {
8394         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
8395         bitmasks.push_back(tempStr);
8396     }
8397     for (auto &it : bitmasks)
8398     {
8399         o |= (VkPeerMemoryFeatureFlagBits)VkPeerMemoryFeatureFlagBits_map[it];
8400     }
8401 }
8402 
parse_VkMemoryAllocateFlags(const char * s,Json::Value & obj,VkMemoryAllocateFlags & o)8403 static void parse_VkMemoryAllocateFlags(const char *s, Json::Value &obj, VkMemoryAllocateFlags &o)
8404 {
8405     o                = (VkMemoryAllocateFlags)0;
8406     std::string _res = obj.asString();
8407     std::vector<std::string> bitmasks;
8408     std::istringstream inputStream(_res);
8409     std::string tempStr;
8410     while (getline(inputStream, tempStr, '|'))
8411     {
8412         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
8413         bitmasks.push_back(tempStr);
8414     }
8415     for (auto &it : bitmasks)
8416     {
8417         o |= (VkMemoryAllocateFlagBits)VkMemoryAllocateFlagBits_map[it];
8418     }
8419 }
8420 
parse_VkExternalMemoryHandleTypeFlags(const char * s,Json::Value & obj,VkExternalMemoryHandleTypeFlags & o)8421 static void parse_VkExternalMemoryHandleTypeFlags(const char *s, Json::Value &obj, VkExternalMemoryHandleTypeFlags &o)
8422 {
8423     o                = (VkExternalMemoryHandleTypeFlags)0;
8424     std::string _res = obj.asString();
8425     std::vector<std::string> bitmasks;
8426     std::istringstream inputStream(_res);
8427     std::string tempStr;
8428     while (getline(inputStream, tempStr, '|'))
8429     {
8430         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
8431         bitmasks.push_back(tempStr);
8432     }
8433     for (auto &it : bitmasks)
8434     {
8435         o |= (VkExternalMemoryHandleTypeFlagBits)VkExternalMemoryHandleTypeFlagBits_map[it];
8436     }
8437 }
8438 
parse_VkExternalMemoryFeatureFlags(const char * s,Json::Value & obj,VkExternalMemoryFeatureFlags & o)8439 static void parse_VkExternalMemoryFeatureFlags(const char *s, Json::Value &obj, VkExternalMemoryFeatureFlags &o)
8440 {
8441     o                = (VkExternalMemoryFeatureFlags)0;
8442     std::string _res = obj.asString();
8443     std::vector<std::string> bitmasks;
8444     std::istringstream inputStream(_res);
8445     std::string tempStr;
8446     while (getline(inputStream, tempStr, '|'))
8447     {
8448         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
8449         bitmasks.push_back(tempStr);
8450     }
8451     for (auto &it : bitmasks)
8452     {
8453         o |= (VkExternalMemoryFeatureFlagBits)VkExternalMemoryFeatureFlagBits_map[it];
8454     }
8455 }
8456 
parse_VkExternalFenceHandleTypeFlags(const char * s,Json::Value & obj,VkExternalFenceHandleTypeFlags & o)8457 static void parse_VkExternalFenceHandleTypeFlags(const char *s, Json::Value &obj, VkExternalFenceHandleTypeFlags &o)
8458 {
8459     o                = (VkExternalFenceHandleTypeFlags)0;
8460     std::string _res = obj.asString();
8461     std::vector<std::string> bitmasks;
8462     std::istringstream inputStream(_res);
8463     std::string tempStr;
8464     while (getline(inputStream, tempStr, '|'))
8465     {
8466         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
8467         bitmasks.push_back(tempStr);
8468     }
8469     for (auto &it : bitmasks)
8470     {
8471         o |= (VkExternalFenceHandleTypeFlagBits)VkExternalFenceHandleTypeFlagBits_map[it];
8472     }
8473 }
8474 
parse_VkExternalFenceFeatureFlags(const char * s,Json::Value & obj,VkExternalFenceFeatureFlags & o)8475 static void parse_VkExternalFenceFeatureFlags(const char *s, Json::Value &obj, VkExternalFenceFeatureFlags &o)
8476 {
8477     o                = (VkExternalFenceFeatureFlags)0;
8478     std::string _res = obj.asString();
8479     std::vector<std::string> bitmasks;
8480     std::istringstream inputStream(_res);
8481     std::string tempStr;
8482     while (getline(inputStream, tempStr, '|'))
8483     {
8484         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
8485         bitmasks.push_back(tempStr);
8486     }
8487     for (auto &it : bitmasks)
8488     {
8489         o |= (VkExternalFenceFeatureFlagBits)VkExternalFenceFeatureFlagBits_map[it];
8490     }
8491 }
8492 
parse_VkFenceImportFlags(const char * s,Json::Value & obj,VkFenceImportFlags & o)8493 static void parse_VkFenceImportFlags(const char *s, Json::Value &obj, VkFenceImportFlags &o)
8494 {
8495     o                = (VkFenceImportFlags)0;
8496     std::string _res = obj.asString();
8497     std::vector<std::string> bitmasks;
8498     std::istringstream inputStream(_res);
8499     std::string tempStr;
8500     while (getline(inputStream, tempStr, '|'))
8501     {
8502         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
8503         bitmasks.push_back(tempStr);
8504     }
8505     for (auto &it : bitmasks)
8506     {
8507         o |= (VkFenceImportFlagBits)VkFenceImportFlagBits_map[it];
8508     }
8509 }
8510 
parse_VkSemaphoreImportFlags(const char * s,Json::Value & obj,VkSemaphoreImportFlags & o)8511 static void parse_VkSemaphoreImportFlags(const char *s, Json::Value &obj, VkSemaphoreImportFlags &o)
8512 {
8513     o                = (VkSemaphoreImportFlags)0;
8514     std::string _res = obj.asString();
8515     std::vector<std::string> bitmasks;
8516     std::istringstream inputStream(_res);
8517     std::string tempStr;
8518     while (getline(inputStream, tempStr, '|'))
8519     {
8520         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
8521         bitmasks.push_back(tempStr);
8522     }
8523     for (auto &it : bitmasks)
8524     {
8525         o |= (VkSemaphoreImportFlagBits)VkSemaphoreImportFlagBits_map[it];
8526     }
8527 }
8528 
parse_VkExternalSemaphoreHandleTypeFlags(const char * s,Json::Value & obj,VkExternalSemaphoreHandleTypeFlags & o)8529 static void parse_VkExternalSemaphoreHandleTypeFlags(const char *s, Json::Value &obj,
8530                                                      VkExternalSemaphoreHandleTypeFlags &o)
8531 {
8532     o                = (VkExternalSemaphoreHandleTypeFlags)0;
8533     std::string _res = obj.asString();
8534     std::vector<std::string> bitmasks;
8535     std::istringstream inputStream(_res);
8536     std::string tempStr;
8537     while (getline(inputStream, tempStr, '|'))
8538     {
8539         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
8540         bitmasks.push_back(tempStr);
8541     }
8542     for (auto &it : bitmasks)
8543     {
8544         o |= (VkExternalSemaphoreHandleTypeFlagBits)VkExternalSemaphoreHandleTypeFlagBits_map[it];
8545     }
8546 }
8547 
parse_VkExternalSemaphoreFeatureFlags(const char * s,Json::Value & obj,VkExternalSemaphoreFeatureFlags & o)8548 static void parse_VkExternalSemaphoreFeatureFlags(const char *s, Json::Value &obj, VkExternalSemaphoreFeatureFlags &o)
8549 {
8550     o                = (VkExternalSemaphoreFeatureFlags)0;
8551     std::string _res = obj.asString();
8552     std::vector<std::string> bitmasks;
8553     std::istringstream inputStream(_res);
8554     std::string tempStr;
8555     while (getline(inputStream, tempStr, '|'))
8556     {
8557         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
8558         bitmasks.push_back(tempStr);
8559     }
8560     for (auto &it : bitmasks)
8561     {
8562         o |= (VkExternalSemaphoreFeatureFlagBits)VkExternalSemaphoreFeatureFlagBits_map[it];
8563     }
8564 }
8565 
parse_VkPhysicalDeviceSubgroupProperties(const char * s,Json::Value & obj,VkPhysicalDeviceSubgroupProperties & o)8566 static void parse_VkPhysicalDeviceSubgroupProperties(const char *s, Json::Value &obj,
8567                                                      VkPhysicalDeviceSubgroupProperties &o)
8568 {
8569 
8570     parse_VkStructureType("sType", obj["sType"], (o.sType));
8571 
8572     o.pNext = (VkPhysicalDeviceSubgroupProperties *)parsePNextChain(obj);
8573 
8574     parse_uint32_t("subgroupSize", obj["subgroupSize"], (o.subgroupSize));
8575 
8576     parse_VkShaderStageFlags("supportedStages", obj["supportedStages"], (o.supportedStages));
8577 
8578     parse_VkSubgroupFeatureFlags("supportedOperations", obj["supportedOperations"], (o.supportedOperations));
8579 
8580     parse_VkBool32("quadOperationsInAllStages", obj["quadOperationsInAllStages"], (o.quadOperationsInAllStages));
8581 }
8582 
parse_VkBindBufferMemoryInfo(const char * s,Json::Value & obj,VkBindBufferMemoryInfo & o)8583 static void parse_VkBindBufferMemoryInfo(const char *s, Json::Value &obj, VkBindBufferMemoryInfo &o)
8584 {
8585 
8586     parse_VkStructureType("sType", obj["sType"], (o.sType));
8587 
8588     o.pNext = (VkBindBufferMemoryInfo *)parsePNextChain(obj);
8589 
8590     parse_VkDeviceSize("memoryOffset", obj["memoryOffset"], (o.memoryOffset));
8591 }
8592 
parse_VkBindImageMemoryInfo(const char * s,Json::Value & obj,VkBindImageMemoryInfo & o)8593 static void parse_VkBindImageMemoryInfo(const char *s, Json::Value &obj, VkBindImageMemoryInfo &o)
8594 {
8595 
8596     parse_VkStructureType("sType", obj["sType"], (o.sType));
8597 
8598     o.pNext = (VkBindImageMemoryInfo *)parsePNextChain(obj);
8599 
8600     parse_VkDeviceSize("memoryOffset", obj["memoryOffset"], (o.memoryOffset));
8601 }
8602 
parse_VkPhysicalDevice16BitStorageFeatures(const char * s,Json::Value & obj,VkPhysicalDevice16BitStorageFeatures & o)8603 static void parse_VkPhysicalDevice16BitStorageFeatures(const char *s, Json::Value &obj,
8604                                                        VkPhysicalDevice16BitStorageFeatures &o)
8605 {
8606 
8607     parse_VkStructureType("sType", obj["sType"], (o.sType));
8608 
8609     o.pNext = (VkPhysicalDevice16BitStorageFeatures *)parsePNextChain(obj);
8610 
8611     parse_VkBool32("storageBuffer16BitAccess", obj["storageBuffer16BitAccess"], (o.storageBuffer16BitAccess));
8612 
8613     parse_VkBool32("uniformAndStorageBuffer16BitAccess", obj["uniformAndStorageBuffer16BitAccess"],
8614                    (o.uniformAndStorageBuffer16BitAccess));
8615 
8616     parse_VkBool32("storagePushConstant16", obj["storagePushConstant16"], (o.storagePushConstant16));
8617 
8618     parse_VkBool32("storageInputOutput16", obj["storageInputOutput16"], (o.storageInputOutput16));
8619 }
8620 
parse_VkMemoryDedicatedRequirements(const char * s,Json::Value & obj,VkMemoryDedicatedRequirements & o)8621 static void parse_VkMemoryDedicatedRequirements(const char *s, Json::Value &obj, VkMemoryDedicatedRequirements &o)
8622 {
8623 
8624     parse_VkStructureType("sType", obj["sType"], (o.sType));
8625 
8626     o.pNext = (VkMemoryDedicatedRequirements *)parsePNextChain(obj);
8627 
8628     parse_VkBool32("prefersDedicatedAllocation", obj["prefersDedicatedAllocation"], (o.prefersDedicatedAllocation));
8629 
8630     parse_VkBool32("requiresDedicatedAllocation", obj["requiresDedicatedAllocation"], (o.requiresDedicatedAllocation));
8631 }
8632 
parse_VkMemoryDedicatedAllocateInfo(const char * s,Json::Value & obj,VkMemoryDedicatedAllocateInfo & o)8633 static void parse_VkMemoryDedicatedAllocateInfo(const char *s, Json::Value &obj, VkMemoryDedicatedAllocateInfo &o)
8634 {
8635 
8636     parse_VkStructureType("sType", obj["sType"], (o.sType));
8637 
8638     o.pNext = (VkMemoryDedicatedAllocateInfo *)parsePNextChain(obj);
8639 }
8640 
parse_VkMemoryAllocateFlagsInfo(const char * s,Json::Value & obj,VkMemoryAllocateFlagsInfo & o)8641 static void parse_VkMemoryAllocateFlagsInfo(const char *s, Json::Value &obj, VkMemoryAllocateFlagsInfo &o)
8642 {
8643 
8644     parse_VkStructureType("sType", obj["sType"], (o.sType));
8645 
8646     o.pNext = (VkMemoryAllocateFlagsInfo *)parsePNextChain(obj);
8647 
8648     parse_VkMemoryAllocateFlags("flags", obj["flags"], (o.flags));
8649 
8650     parse_uint32_t("deviceMask", obj["deviceMask"], (o.deviceMask));
8651 }
8652 
parse_VkDeviceGroupRenderPassBeginInfo(const char * s,Json::Value & obj,VkDeviceGroupRenderPassBeginInfo & o)8653 static void parse_VkDeviceGroupRenderPassBeginInfo(const char *s, Json::Value &obj, VkDeviceGroupRenderPassBeginInfo &o)
8654 {
8655 
8656     parse_VkStructureType("sType", obj["sType"], (o.sType));
8657 
8658     o.pNext = (VkDeviceGroupRenderPassBeginInfo *)parsePNextChain(obj);
8659 
8660     parse_uint32_t("deviceMask", obj["deviceMask"], (o.deviceMask));
8661 
8662     parse_uint32_t("deviceRenderAreaCount", obj["deviceRenderAreaCount"], (o.deviceRenderAreaCount));
8663 
8664     (o.pDeviceRenderAreas)              = (VkRect2D *)s_globalMem.allocate((o.deviceRenderAreaCount), sizeof(VkRect2D));
8665     Json::Value &obj_pDeviceRenderAreas = obj["pDeviceRenderAreas"];
8666     if (obj_pDeviceRenderAreas.size() == 0)
8667         (o.pDeviceRenderAreas) = nullptr;
8668     else
8669     {
8670         for (unsigned int i = 0; i < (o.deviceRenderAreaCount); i++)
8671         {
8672             parse_VkRect2D("pDeviceRenderAreas", obj_pDeviceRenderAreas[i],
8673                            const_cast<VkRect2D &>((o.pDeviceRenderAreas[i])));
8674         }
8675     }
8676 }
8677 
parse_VkDeviceGroupCommandBufferBeginInfo(const char * s,Json::Value & obj,VkDeviceGroupCommandBufferBeginInfo & o)8678 static void parse_VkDeviceGroupCommandBufferBeginInfo(const char *s, Json::Value &obj,
8679                                                       VkDeviceGroupCommandBufferBeginInfo &o)
8680 {
8681 
8682     parse_VkStructureType("sType", obj["sType"], (o.sType));
8683 
8684     o.pNext = (VkDeviceGroupCommandBufferBeginInfo *)parsePNextChain(obj);
8685 
8686     parse_uint32_t("deviceMask", obj["deviceMask"], (o.deviceMask));
8687 }
8688 
parse_VkDeviceGroupSubmitInfo(const char * s,Json::Value & obj,VkDeviceGroupSubmitInfo & o)8689 static void parse_VkDeviceGroupSubmitInfo(const char *s, Json::Value &obj, VkDeviceGroupSubmitInfo &o)
8690 {
8691 
8692     parse_VkStructureType("sType", obj["sType"], (o.sType));
8693 
8694     o.pNext = (VkDeviceGroupSubmitInfo *)parsePNextChain(obj);
8695 
8696     parse_uint32_t("waitSemaphoreCount", obj["waitSemaphoreCount"], (o.waitSemaphoreCount));
8697 
8698     (o.pWaitSemaphoreDeviceIndices) = (uint32_t *)s_globalMem.allocate((o.waitSemaphoreCount), sizeof(uint32_t));
8699     Json::Value &obj_pWaitSemaphoreDeviceIndices_arr = obj["pWaitSemaphoreDeviceIndices"];
8700     for (unsigned int i = 0; i < obj_pWaitSemaphoreDeviceIndices_arr.size(); i++)
8701     {
8702         parse_uint32_t("pWaitSemaphoreDeviceIndices", obj_pWaitSemaphoreDeviceIndices_arr[i],
8703                        const_cast<uint32_t &>((o.pWaitSemaphoreDeviceIndices[i])));
8704     }
8705 
8706     parse_uint32_t("commandBufferCount", obj["commandBufferCount"], (o.commandBufferCount));
8707 
8708     (o.pCommandBufferDeviceMasks) = (uint32_t *)s_globalMem.allocate((o.commandBufferCount), sizeof(uint32_t));
8709     Json::Value &obj_pCommandBufferDeviceMasks_arr = obj["pCommandBufferDeviceMasks"];
8710     for (unsigned int i = 0; i < obj_pCommandBufferDeviceMasks_arr.size(); i++)
8711     {
8712         parse_uint32_t("pCommandBufferDeviceMasks", obj_pCommandBufferDeviceMasks_arr[i],
8713                        const_cast<uint32_t &>((o.pCommandBufferDeviceMasks[i])));
8714     }
8715 
8716     parse_uint32_t("signalSemaphoreCount", obj["signalSemaphoreCount"], (o.signalSemaphoreCount));
8717 
8718     (o.pSignalSemaphoreDeviceIndices) = (uint32_t *)s_globalMem.allocate((o.signalSemaphoreCount), sizeof(uint32_t));
8719     Json::Value &obj_pSignalSemaphoreDeviceIndices_arr = obj["pSignalSemaphoreDeviceIndices"];
8720     for (unsigned int i = 0; i < obj_pSignalSemaphoreDeviceIndices_arr.size(); i++)
8721     {
8722         parse_uint32_t("pSignalSemaphoreDeviceIndices", obj_pSignalSemaphoreDeviceIndices_arr[i],
8723                        const_cast<uint32_t &>((o.pSignalSemaphoreDeviceIndices[i])));
8724     }
8725 }
8726 
parse_VkBindBufferMemoryDeviceGroupInfo(const char * s,Json::Value & obj,VkBindBufferMemoryDeviceGroupInfo & o)8727 static void parse_VkBindBufferMemoryDeviceGroupInfo(const char *s, Json::Value &obj,
8728                                                     VkBindBufferMemoryDeviceGroupInfo &o)
8729 {
8730 
8731     parse_VkStructureType("sType", obj["sType"], (o.sType));
8732 
8733     o.pNext = (VkBindBufferMemoryDeviceGroupInfo *)parsePNextChain(obj);
8734 
8735     parse_uint32_t("deviceIndexCount", obj["deviceIndexCount"], (o.deviceIndexCount));
8736 
8737     (o.pDeviceIndices)                  = (uint32_t *)s_globalMem.allocate((o.deviceIndexCount), sizeof(uint32_t));
8738     Json::Value &obj_pDeviceIndices_arr = obj["pDeviceIndices"];
8739     for (unsigned int i = 0; i < obj_pDeviceIndices_arr.size(); i++)
8740     {
8741         parse_uint32_t("pDeviceIndices", obj_pDeviceIndices_arr[i], const_cast<uint32_t &>((o.pDeviceIndices[i])));
8742     }
8743 }
8744 
parse_VkBindImageMemoryDeviceGroupInfo(const char * s,Json::Value & obj,VkBindImageMemoryDeviceGroupInfo & o)8745 static void parse_VkBindImageMemoryDeviceGroupInfo(const char *s, Json::Value &obj, VkBindImageMemoryDeviceGroupInfo &o)
8746 {
8747 
8748     parse_VkStructureType("sType", obj["sType"], (o.sType));
8749 
8750     o.pNext = (VkBindImageMemoryDeviceGroupInfo *)parsePNextChain(obj);
8751 
8752     parse_uint32_t("deviceIndexCount", obj["deviceIndexCount"], (o.deviceIndexCount));
8753 
8754     (o.pDeviceIndices)                  = (uint32_t *)s_globalMem.allocate((o.deviceIndexCount), sizeof(uint32_t));
8755     Json::Value &obj_pDeviceIndices_arr = obj["pDeviceIndices"];
8756     for (unsigned int i = 0; i < obj_pDeviceIndices_arr.size(); i++)
8757     {
8758         parse_uint32_t("pDeviceIndices", obj_pDeviceIndices_arr[i], const_cast<uint32_t &>((o.pDeviceIndices[i])));
8759     }
8760 
8761     parse_uint32_t("splitInstanceBindRegionCount", obj["splitInstanceBindRegionCount"],
8762                    (o.splitInstanceBindRegionCount));
8763 
8764     (o.pSplitInstanceBindRegions) =
8765         (VkRect2D *)s_globalMem.allocate((o.splitInstanceBindRegionCount), sizeof(VkRect2D));
8766     Json::Value &obj_pSplitInstanceBindRegions = obj["pSplitInstanceBindRegions"];
8767     if (obj_pSplitInstanceBindRegions.size() == 0)
8768         (o.pSplitInstanceBindRegions) = nullptr;
8769     else
8770     {
8771         for (unsigned int i = 0; i < (o.splitInstanceBindRegionCount); i++)
8772         {
8773             parse_VkRect2D("pSplitInstanceBindRegions", obj_pSplitInstanceBindRegions[i],
8774                            const_cast<VkRect2D &>((o.pSplitInstanceBindRegions[i])));
8775         }
8776     }
8777 }
8778 
parse_VkPhysicalDeviceGroupProperties(const char * s,Json::Value & obj,VkPhysicalDeviceGroupProperties & o)8779 static void parse_VkPhysicalDeviceGroupProperties(const char *s, Json::Value &obj, VkPhysicalDeviceGroupProperties &o)
8780 {
8781 
8782     parse_VkStructureType("sType", obj["sType"], (o.sType));
8783 
8784     o.pNext = (VkPhysicalDeviceGroupProperties *)parsePNextChain(obj);
8785 
8786     parse_uint32_t("physicalDeviceCount", obj["physicalDeviceCount"], (o.physicalDeviceCount));
8787 
8788     Json::Value &obj_physicalDevices_arr = obj["physicalDevices"];
8789     for (unsigned int i = 0; i < obj_physicalDevices_arr.size(); i++)
8790     {
8791         parse_VkPhysicalDevice("physicalDevices", obj_physicalDevices_arr[i],
8792                                const_cast<VkPhysicalDevice &>((o.physicalDevices[i])));
8793     }
8794 
8795     parse_VkBool32("subsetAllocation", obj["subsetAllocation"], (o.subsetAllocation));
8796 }
8797 
parse_VkDeviceGroupDeviceCreateInfo(const char * s,Json::Value & obj,VkDeviceGroupDeviceCreateInfo & o)8798 static void parse_VkDeviceGroupDeviceCreateInfo(const char *s, Json::Value &obj, VkDeviceGroupDeviceCreateInfo &o)
8799 {
8800 
8801     parse_VkStructureType("sType", obj["sType"], (o.sType));
8802 
8803     o.pNext = (VkDeviceGroupDeviceCreateInfo *)parsePNextChain(obj);
8804 
8805     parse_uint32_t("physicalDeviceCount", obj["physicalDeviceCount"], (o.physicalDeviceCount));
8806 
8807     (o.pPhysicalDevices) = (VkPhysicalDevice *)s_globalMem.allocate((o.physicalDeviceCount), sizeof(VkPhysicalDevice));
8808     Json::Value &obj_pPhysicalDevices_arr = obj["pPhysicalDevices"];
8809     for (unsigned int i = 0; i < obj_pPhysicalDevices_arr.size(); i++)
8810     {
8811         parse_VkPhysicalDevice("pPhysicalDevices", obj_pPhysicalDevices_arr[i],
8812                                const_cast<VkPhysicalDevice &>((o.pPhysicalDevices[i])));
8813     }
8814 }
8815 
parse_VkBufferMemoryRequirementsInfo2(const char * s,Json::Value & obj,VkBufferMemoryRequirementsInfo2 & o)8816 static void parse_VkBufferMemoryRequirementsInfo2(const char *s, Json::Value &obj, VkBufferMemoryRequirementsInfo2 &o)
8817 {
8818 
8819     parse_VkStructureType("sType", obj["sType"], (o.sType));
8820 
8821     o.pNext = (VkBufferMemoryRequirementsInfo2 *)parsePNextChain(obj);
8822 }
8823 
parse_VkImageMemoryRequirementsInfo2(const char * s,Json::Value & obj,VkImageMemoryRequirementsInfo2 & o)8824 static void parse_VkImageMemoryRequirementsInfo2(const char *s, Json::Value &obj, VkImageMemoryRequirementsInfo2 &o)
8825 {
8826 
8827     parse_VkStructureType("sType", obj["sType"], (o.sType));
8828 
8829     o.pNext = (VkImageMemoryRequirementsInfo2 *)parsePNextChain(obj);
8830 }
8831 
parse_VkMemoryRequirements2(const char * s,Json::Value & obj,VkMemoryRequirements2 & o)8832 static void parse_VkMemoryRequirements2(const char *s, Json::Value &obj, VkMemoryRequirements2 &o)
8833 {
8834 
8835     parse_VkStructureType("sType", obj["sType"], (o.sType));
8836 
8837     o.pNext = (VkMemoryRequirements2 *)parsePNextChain(obj);
8838 
8839     parse_VkMemoryRequirements("memoryRequirements", obj["memoryRequirements"], (o.memoryRequirements));
8840 }
8841 
parse_VkPhysicalDeviceFeatures2(const char * s,Json::Value & obj,VkPhysicalDeviceFeatures2 & o)8842 static void parse_VkPhysicalDeviceFeatures2(const char *s, Json::Value &obj, VkPhysicalDeviceFeatures2 &o)
8843 {
8844 
8845     parse_VkStructureType("sType", obj["sType"], (o.sType));
8846 
8847     o.pNext = (VkPhysicalDeviceFeatures2 *)parsePNextChain(obj);
8848 
8849     parse_VkPhysicalDeviceFeatures("features", obj["features"], (o.features));
8850 }
8851 
parse_VkPhysicalDeviceProperties2(const char * s,Json::Value & obj,VkPhysicalDeviceProperties2 & o)8852 static void parse_VkPhysicalDeviceProperties2(const char *s, Json::Value &obj, VkPhysicalDeviceProperties2 &o)
8853 {
8854 
8855     parse_VkStructureType("sType", obj["sType"], (o.sType));
8856 
8857     o.pNext = (VkPhysicalDeviceProperties2 *)parsePNextChain(obj);
8858 
8859     parse_VkPhysicalDeviceProperties("properties", obj["properties"], (o.properties));
8860 }
8861 
parse_VkFormatProperties2(const char * s,Json::Value & obj,VkFormatProperties2 & o)8862 static void parse_VkFormatProperties2(const char *s, Json::Value &obj, VkFormatProperties2 &o)
8863 {
8864 
8865     parse_VkStructureType("sType", obj["sType"], (o.sType));
8866 
8867     o.pNext = (VkFormatProperties2 *)parsePNextChain(obj);
8868 
8869     parse_VkFormatProperties("formatProperties", obj["formatProperties"], (o.formatProperties));
8870 }
8871 
parse_VkImageFormatProperties2(const char * s,Json::Value & obj,VkImageFormatProperties2 & o)8872 static void parse_VkImageFormatProperties2(const char *s, Json::Value &obj, VkImageFormatProperties2 &o)
8873 {
8874 
8875     parse_VkStructureType("sType", obj["sType"], (o.sType));
8876 
8877     o.pNext = (VkImageFormatProperties2 *)parsePNextChain(obj);
8878 
8879     parse_VkImageFormatProperties("imageFormatProperties", obj["imageFormatProperties"], (o.imageFormatProperties));
8880 }
8881 
parse_VkPhysicalDeviceImageFormatInfo2(const char * s,Json::Value & obj,VkPhysicalDeviceImageFormatInfo2 & o)8882 static void parse_VkPhysicalDeviceImageFormatInfo2(const char *s, Json::Value &obj, VkPhysicalDeviceImageFormatInfo2 &o)
8883 {
8884 
8885     parse_VkStructureType("sType", obj["sType"], (o.sType));
8886 
8887     o.pNext = (VkPhysicalDeviceImageFormatInfo2 *)parsePNextChain(obj);
8888 
8889     parse_VkFormat("format", obj["format"], (o.format));
8890 
8891     parse_VkImageType("type", obj["type"], (o.type));
8892 
8893     parse_VkImageTiling("tiling", obj["tiling"], (o.tiling));
8894 
8895     parse_VkImageUsageFlags("usage", obj["usage"], (o.usage));
8896 
8897     parse_VkImageCreateFlags("flags", obj["flags"], (o.flags));
8898 }
8899 
parse_VkQueueFamilyProperties2(const char * s,Json::Value & obj,VkQueueFamilyProperties2 & o)8900 static void parse_VkQueueFamilyProperties2(const char *s, Json::Value &obj, VkQueueFamilyProperties2 &o)
8901 {
8902 
8903     parse_VkStructureType("sType", obj["sType"], (o.sType));
8904 
8905     o.pNext = (VkQueueFamilyProperties2 *)parsePNextChain(obj);
8906 
8907     parse_VkQueueFamilyProperties("queueFamilyProperties", obj["queueFamilyProperties"], (o.queueFamilyProperties));
8908 }
8909 
parse_VkPhysicalDeviceMemoryProperties2(const char * s,Json::Value & obj,VkPhysicalDeviceMemoryProperties2 & o)8910 static void parse_VkPhysicalDeviceMemoryProperties2(const char *s, Json::Value &obj,
8911                                                     VkPhysicalDeviceMemoryProperties2 &o)
8912 {
8913 
8914     parse_VkStructureType("sType", obj["sType"], (o.sType));
8915 
8916     o.pNext = (VkPhysicalDeviceMemoryProperties2 *)parsePNextChain(obj);
8917 
8918     parse_VkPhysicalDeviceMemoryProperties("memoryProperties", obj["memoryProperties"], (o.memoryProperties));
8919 }
8920 
parse_VkPhysicalDevicePointClippingProperties(const char * s,Json::Value & obj,VkPhysicalDevicePointClippingProperties & o)8921 static void parse_VkPhysicalDevicePointClippingProperties(const char *s, Json::Value &obj,
8922                                                           VkPhysicalDevicePointClippingProperties &o)
8923 {
8924 
8925     parse_VkStructureType("sType", obj["sType"], (o.sType));
8926 
8927     o.pNext = (VkPhysicalDevicePointClippingProperties *)parsePNextChain(obj);
8928 
8929     parse_VkPointClippingBehavior("pointClippingBehavior", obj["pointClippingBehavior"], (o.pointClippingBehavior));
8930 }
8931 
parse_VkInputAttachmentAspectReference(const char * s,Json::Value & obj,VkInputAttachmentAspectReference & o)8932 static void parse_VkInputAttachmentAspectReference(const char *s, Json::Value &obj, VkInputAttachmentAspectReference &o)
8933 {
8934 
8935     parse_uint32_t("subpass", obj["subpass"], (o.subpass));
8936 
8937     parse_uint32_t("inputAttachmentIndex", obj["inputAttachmentIndex"], (o.inputAttachmentIndex));
8938 
8939     parse_VkImageAspectFlags("aspectMask", obj["aspectMask"], (o.aspectMask));
8940 }
8941 
parse_VkRenderPassInputAttachmentAspectCreateInfo(const char * s,Json::Value & obj,VkRenderPassInputAttachmentAspectCreateInfo & o)8942 static void parse_VkRenderPassInputAttachmentAspectCreateInfo(const char *s, Json::Value &obj,
8943                                                               VkRenderPassInputAttachmentAspectCreateInfo &o)
8944 {
8945 
8946     parse_VkStructureType("sType", obj["sType"], (o.sType));
8947 
8948     o.pNext = (VkRenderPassInputAttachmentAspectCreateInfo *)parsePNextChain(obj);
8949 
8950     parse_uint32_t("aspectReferenceCount", obj["aspectReferenceCount"], (o.aspectReferenceCount));
8951 
8952     (o.pAspectReferences) = (VkInputAttachmentAspectReference *)s_globalMem.allocate(
8953         (o.aspectReferenceCount), sizeof(VkInputAttachmentAspectReference));
8954     Json::Value &obj_pAspectReferences = obj["pAspectReferences"];
8955     if (obj_pAspectReferences.size() == 0)
8956         (o.pAspectReferences) = nullptr;
8957     else
8958     {
8959         for (unsigned int i = 0; i < (o.aspectReferenceCount); i++)
8960         {
8961             parse_VkInputAttachmentAspectReference(
8962                 "pAspectReferences", obj_pAspectReferences[i],
8963                 const_cast<VkInputAttachmentAspectReference &>((o.pAspectReferences[i])));
8964         }
8965     }
8966 }
8967 
parse_VkImageViewUsageCreateInfo(const char * s,Json::Value & obj,VkImageViewUsageCreateInfo & o)8968 static void parse_VkImageViewUsageCreateInfo(const char *s, Json::Value &obj, VkImageViewUsageCreateInfo &o)
8969 {
8970 
8971     parse_VkStructureType("sType", obj["sType"], (o.sType));
8972 
8973     o.pNext = (VkImageViewUsageCreateInfo *)parsePNextChain(obj);
8974 
8975     parse_VkImageUsageFlags("usage", obj["usage"], (o.usage));
8976 }
8977 
parse_VkPipelineTessellationDomainOriginStateCreateInfo(const char * s,Json::Value & obj,VkPipelineTessellationDomainOriginStateCreateInfo & o)8978 static void parse_VkPipelineTessellationDomainOriginStateCreateInfo(
8979     const char *s, Json::Value &obj, VkPipelineTessellationDomainOriginStateCreateInfo &o)
8980 {
8981 
8982     parse_VkStructureType("sType", obj["sType"], (o.sType));
8983 
8984     o.pNext = (VkPipelineTessellationDomainOriginStateCreateInfo *)parsePNextChain(obj);
8985 
8986     parse_VkTessellationDomainOrigin("domainOrigin", obj["domainOrigin"], (o.domainOrigin));
8987 }
8988 
parse_VkRenderPassMultiviewCreateInfo(const char * s,Json::Value & obj,VkRenderPassMultiviewCreateInfo & o)8989 static void parse_VkRenderPassMultiviewCreateInfo(const char *s, Json::Value &obj, VkRenderPassMultiviewCreateInfo &o)
8990 {
8991 
8992     parse_VkStructureType("sType", obj["sType"], (o.sType));
8993 
8994     o.pNext = (VkRenderPassMultiviewCreateInfo *)parsePNextChain(obj);
8995 
8996     parse_uint32_t("subpassCount", obj["subpassCount"], (o.subpassCount));
8997 
8998     (o.pViewMasks)                  = (uint32_t *)s_globalMem.allocate((o.subpassCount), sizeof(uint32_t));
8999     Json::Value &obj_pViewMasks_arr = obj["pViewMasks"];
9000     for (unsigned int i = 0; i < obj_pViewMasks_arr.size(); i++)
9001     {
9002         parse_uint32_t("pViewMasks", obj_pViewMasks_arr[i], const_cast<uint32_t &>((o.pViewMasks[i])));
9003     }
9004 
9005     parse_uint32_t("dependencyCount", obj["dependencyCount"], (o.dependencyCount));
9006 
9007     (o.pViewOffsets)                  = (int32_t *)s_globalMem.allocate((o.dependencyCount), sizeof(int32_t));
9008     Json::Value &obj_pViewOffsets_arr = obj["pViewOffsets"];
9009     for (unsigned int i = 0; i < obj_pViewOffsets_arr.size(); i++)
9010     {
9011         parse_int32_t("pViewOffsets", obj_pViewOffsets_arr[i], const_cast<int32_t &>((o.pViewOffsets[i])));
9012     }
9013 
9014     parse_uint32_t("correlationMaskCount", obj["correlationMaskCount"], (o.correlationMaskCount));
9015 
9016     (o.pCorrelationMasks) = (uint32_t *)s_globalMem.allocate((o.correlationMaskCount), sizeof(uint32_t));
9017     Json::Value &obj_pCorrelationMasks_arr = obj["pCorrelationMasks"];
9018     for (unsigned int i = 0; i < obj_pCorrelationMasks_arr.size(); i++)
9019     {
9020         parse_uint32_t("pCorrelationMasks", obj_pCorrelationMasks_arr[i],
9021                        const_cast<uint32_t &>((o.pCorrelationMasks[i])));
9022     }
9023 }
9024 
parse_VkPhysicalDeviceMultiviewFeatures(const char * s,Json::Value & obj,VkPhysicalDeviceMultiviewFeatures & o)9025 static void parse_VkPhysicalDeviceMultiviewFeatures(const char *s, Json::Value &obj,
9026                                                     VkPhysicalDeviceMultiviewFeatures &o)
9027 {
9028 
9029     parse_VkStructureType("sType", obj["sType"], (o.sType));
9030 
9031     o.pNext = (VkPhysicalDeviceMultiviewFeatures *)parsePNextChain(obj);
9032 
9033     parse_VkBool32("multiview", obj["multiview"], (o.multiview));
9034 
9035     parse_VkBool32("multiviewGeometryShader", obj["multiviewGeometryShader"], (o.multiviewGeometryShader));
9036 
9037     parse_VkBool32("multiviewTessellationShader", obj["multiviewTessellationShader"], (o.multiviewTessellationShader));
9038 }
9039 
parse_VkPhysicalDeviceMultiviewProperties(const char * s,Json::Value & obj,VkPhysicalDeviceMultiviewProperties & o)9040 static void parse_VkPhysicalDeviceMultiviewProperties(const char *s, Json::Value &obj,
9041                                                       VkPhysicalDeviceMultiviewProperties &o)
9042 {
9043 
9044     parse_VkStructureType("sType", obj["sType"], (o.sType));
9045 
9046     o.pNext = (VkPhysicalDeviceMultiviewProperties *)parsePNextChain(obj);
9047 
9048     parse_uint32_t("maxMultiviewViewCount", obj["maxMultiviewViewCount"], (o.maxMultiviewViewCount));
9049 
9050     parse_uint32_t("maxMultiviewInstanceIndex", obj["maxMultiviewInstanceIndex"], (o.maxMultiviewInstanceIndex));
9051 }
9052 
parse_VkPhysicalDeviceVariablePointersFeatures(const char * s,Json::Value & obj,VkPhysicalDeviceVariablePointersFeatures & o)9053 static void parse_VkPhysicalDeviceVariablePointersFeatures(const char *s, Json::Value &obj,
9054                                                            VkPhysicalDeviceVariablePointersFeatures &o)
9055 {
9056 
9057     parse_VkStructureType("sType", obj["sType"], (o.sType));
9058 
9059     o.pNext = (VkPhysicalDeviceVariablePointersFeatures *)parsePNextChain(obj);
9060 
9061     parse_VkBool32("variablePointersStorageBuffer", obj["variablePointersStorageBuffer"],
9062                    (o.variablePointersStorageBuffer));
9063 
9064     parse_VkBool32("variablePointers", obj["variablePointers"], (o.variablePointers));
9065 }
9066 
9067 typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeatures;
9068 
parse_VkPhysicalDeviceProtectedMemoryFeatures(const char * s,Json::Value & obj,VkPhysicalDeviceProtectedMemoryFeatures & o)9069 static void parse_VkPhysicalDeviceProtectedMemoryFeatures(const char *s, Json::Value &obj,
9070                                                           VkPhysicalDeviceProtectedMemoryFeatures &o)
9071 {
9072 
9073     parse_VkStructureType("sType", obj["sType"], (o.sType));
9074 
9075     o.pNext = (VkPhysicalDeviceProtectedMemoryFeatures *)parsePNextChain(obj);
9076 
9077     parse_VkBool32("protectedMemory", obj["protectedMemory"], (o.protectedMemory));
9078 }
9079 
parse_VkPhysicalDeviceProtectedMemoryProperties(const char * s,Json::Value & obj,VkPhysicalDeviceProtectedMemoryProperties & o)9080 static void parse_VkPhysicalDeviceProtectedMemoryProperties(const char *s, Json::Value &obj,
9081                                                             VkPhysicalDeviceProtectedMemoryProperties &o)
9082 {
9083 
9084     parse_VkStructureType("sType", obj["sType"], (o.sType));
9085 
9086     o.pNext = (VkPhysicalDeviceProtectedMemoryProperties *)parsePNextChain(obj);
9087 
9088     parse_VkBool32("protectedNoFault", obj["protectedNoFault"], (o.protectedNoFault));
9089 }
9090 
parse_VkDeviceQueueInfo2(const char * s,Json::Value & obj,VkDeviceQueueInfo2 & o)9091 static void parse_VkDeviceQueueInfo2(const char *s, Json::Value &obj, VkDeviceQueueInfo2 &o)
9092 {
9093 
9094     parse_VkStructureType("sType", obj["sType"], (o.sType));
9095 
9096     o.pNext = (VkDeviceQueueInfo2 *)parsePNextChain(obj);
9097 
9098     parse_VkDeviceQueueCreateFlags("flags", obj["flags"], (o.flags));
9099 
9100     parse_uint32_t("queueFamilyIndex", obj["queueFamilyIndex"], (o.queueFamilyIndex));
9101 
9102     parse_uint32_t("queueIndex", obj["queueIndex"], (o.queueIndex));
9103 }
9104 
parse_VkProtectedSubmitInfo(const char * s,Json::Value & obj,VkProtectedSubmitInfo & o)9105 static void parse_VkProtectedSubmitInfo(const char *s, Json::Value &obj, VkProtectedSubmitInfo &o)
9106 {
9107 
9108     parse_VkStructureType("sType", obj["sType"], (o.sType));
9109 
9110     o.pNext = (VkProtectedSubmitInfo *)parsePNextChain(obj);
9111 
9112     parse_VkBool32("protectedSubmit", obj["protectedSubmit"], (o.protectedSubmit));
9113 }
9114 
parse_VkSamplerYcbcrConversionCreateInfo(const char * s,Json::Value & obj,VkSamplerYcbcrConversionCreateInfo & o)9115 static void parse_VkSamplerYcbcrConversionCreateInfo(const char *s, Json::Value &obj,
9116                                                      VkSamplerYcbcrConversionCreateInfo &o)
9117 {
9118 
9119     parse_VkStructureType("sType", obj["sType"], (o.sType));
9120 
9121     o.pNext = (VkSamplerYcbcrConversionCreateInfo *)parsePNextChain(obj);
9122 
9123     parse_VkFormat("format", obj["format"], (o.format));
9124 
9125     parse_VkSamplerYcbcrModelConversion("ycbcrModel", obj["ycbcrModel"], (o.ycbcrModel));
9126 
9127     parse_VkSamplerYcbcrRange("ycbcrRange", obj["ycbcrRange"], (o.ycbcrRange));
9128 
9129     parse_VkComponentMapping("components", obj["components"], (o.components));
9130 
9131     parse_VkChromaLocation("xChromaOffset", obj["xChromaOffset"], (o.xChromaOffset));
9132 
9133     parse_VkChromaLocation("yChromaOffset", obj["yChromaOffset"], (o.yChromaOffset));
9134 
9135     parse_VkFilter("chromaFilter", obj["chromaFilter"], (o.chromaFilter));
9136 
9137     parse_VkBool32("forceExplicitReconstruction", obj["forceExplicitReconstruction"], (o.forceExplicitReconstruction));
9138 }
9139 
parse_VkSamplerYcbcrConversionInfo(const char * s,Json::Value & obj,VkSamplerYcbcrConversionInfo & o)9140 static void parse_VkSamplerYcbcrConversionInfo(const char *s, Json::Value &obj, VkSamplerYcbcrConversionInfo &o)
9141 {
9142 
9143     parse_VkStructureType("sType", obj["sType"], (o.sType));
9144 
9145     o.pNext = (VkSamplerYcbcrConversionInfo *)parsePNextChain(obj);
9146 
9147     uint64_t conversionInternal = 0;
9148     parse_uint64_t("conversion", obj["conversion"], conversionInternal);
9149     o.conversion = VkSamplerYcbcrConversion(conversionInternal);
9150 }
9151 
parse_VkBindImagePlaneMemoryInfo(const char * s,Json::Value & obj,VkBindImagePlaneMemoryInfo & o)9152 static void parse_VkBindImagePlaneMemoryInfo(const char *s, Json::Value &obj, VkBindImagePlaneMemoryInfo &o)
9153 {
9154 
9155     parse_VkStructureType("sType", obj["sType"], (o.sType));
9156 
9157     o.pNext = (VkBindImagePlaneMemoryInfo *)parsePNextChain(obj);
9158 
9159     parse_VkImageAspectFlagBits("planeAspect", obj["planeAspect"], (o.planeAspect));
9160 }
9161 
parse_VkImagePlaneMemoryRequirementsInfo(const char * s,Json::Value & obj,VkImagePlaneMemoryRequirementsInfo & o)9162 static void parse_VkImagePlaneMemoryRequirementsInfo(const char *s, Json::Value &obj,
9163                                                      VkImagePlaneMemoryRequirementsInfo &o)
9164 {
9165 
9166     parse_VkStructureType("sType", obj["sType"], (o.sType));
9167 
9168     o.pNext = (VkImagePlaneMemoryRequirementsInfo *)parsePNextChain(obj);
9169 
9170     parse_VkImageAspectFlagBits("planeAspect", obj["planeAspect"], (o.planeAspect));
9171 }
9172 
parse_VkPhysicalDeviceSamplerYcbcrConversionFeatures(const char * s,Json::Value & obj,VkPhysicalDeviceSamplerYcbcrConversionFeatures & o)9173 static void parse_VkPhysicalDeviceSamplerYcbcrConversionFeatures(const char *s, Json::Value &obj,
9174                                                                  VkPhysicalDeviceSamplerYcbcrConversionFeatures &o)
9175 {
9176 
9177     parse_VkStructureType("sType", obj["sType"], (o.sType));
9178 
9179     o.pNext = (VkPhysicalDeviceSamplerYcbcrConversionFeatures *)parsePNextChain(obj);
9180 
9181     parse_VkBool32("samplerYcbcrConversion", obj["samplerYcbcrConversion"], (o.samplerYcbcrConversion));
9182 }
9183 
parse_VkSamplerYcbcrConversionImageFormatProperties(const char * s,Json::Value & obj,VkSamplerYcbcrConversionImageFormatProperties & o)9184 static void parse_VkSamplerYcbcrConversionImageFormatProperties(const char *s, Json::Value &obj,
9185                                                                 VkSamplerYcbcrConversionImageFormatProperties &o)
9186 {
9187 
9188     parse_VkStructureType("sType", obj["sType"], (o.sType));
9189 
9190     o.pNext = (VkSamplerYcbcrConversionImageFormatProperties *)parsePNextChain(obj);
9191 
9192     parse_uint32_t("combinedImageSamplerDescriptorCount", obj["combinedImageSamplerDescriptorCount"],
9193                    (o.combinedImageSamplerDescriptorCount));
9194 }
9195 
parse_VkExternalMemoryProperties(const char * s,Json::Value & obj,VkExternalMemoryProperties & o)9196 static void parse_VkExternalMemoryProperties(const char *s, Json::Value &obj, VkExternalMemoryProperties &o)
9197 {
9198 
9199     parse_VkExternalMemoryFeatureFlags("externalMemoryFeatures", obj["externalMemoryFeatures"],
9200                                        (o.externalMemoryFeatures));
9201 
9202     parse_VkExternalMemoryHandleTypeFlags("exportFromImportedHandleTypes", obj["exportFromImportedHandleTypes"],
9203                                           (o.exportFromImportedHandleTypes));
9204 
9205     parse_VkExternalMemoryHandleTypeFlags("compatibleHandleTypes", obj["compatibleHandleTypes"],
9206                                           (o.compatibleHandleTypes));
9207 }
9208 
parse_VkPhysicalDeviceExternalImageFormatInfo(const char * s,Json::Value & obj,VkPhysicalDeviceExternalImageFormatInfo & o)9209 static void parse_VkPhysicalDeviceExternalImageFormatInfo(const char *s, Json::Value &obj,
9210                                                           VkPhysicalDeviceExternalImageFormatInfo &o)
9211 {
9212 
9213     parse_VkStructureType("sType", obj["sType"], (o.sType));
9214 
9215     o.pNext = (VkPhysicalDeviceExternalImageFormatInfo *)parsePNextChain(obj);
9216 
9217     parse_VkExternalMemoryHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
9218 }
9219 
parse_VkExternalImageFormatProperties(const char * s,Json::Value & obj,VkExternalImageFormatProperties & o)9220 static void parse_VkExternalImageFormatProperties(const char *s, Json::Value &obj, VkExternalImageFormatProperties &o)
9221 {
9222 
9223     parse_VkStructureType("sType", obj["sType"], (o.sType));
9224 
9225     o.pNext = (VkExternalImageFormatProperties *)parsePNextChain(obj);
9226 
9227     parse_VkExternalMemoryProperties("externalMemoryProperties", obj["externalMemoryProperties"],
9228                                      (o.externalMemoryProperties));
9229 }
9230 
parse_VkPhysicalDeviceExternalBufferInfo(const char * s,Json::Value & obj,VkPhysicalDeviceExternalBufferInfo & o)9231 static void parse_VkPhysicalDeviceExternalBufferInfo(const char *s, Json::Value &obj,
9232                                                      VkPhysicalDeviceExternalBufferInfo &o)
9233 {
9234 
9235     parse_VkStructureType("sType", obj["sType"], (o.sType));
9236 
9237     o.pNext = (VkPhysicalDeviceExternalBufferInfo *)parsePNextChain(obj);
9238 
9239     parse_VkBufferCreateFlags("flags", obj["flags"], (o.flags));
9240 
9241     parse_VkBufferUsageFlags("usage", obj["usage"], (o.usage));
9242 
9243     parse_VkExternalMemoryHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
9244 }
9245 
parse_VkExternalBufferProperties(const char * s,Json::Value & obj,VkExternalBufferProperties & o)9246 static void parse_VkExternalBufferProperties(const char *s, Json::Value &obj, VkExternalBufferProperties &o)
9247 {
9248 
9249     parse_VkStructureType("sType", obj["sType"], (o.sType));
9250 
9251     o.pNext = (VkExternalBufferProperties *)parsePNextChain(obj);
9252 
9253     parse_VkExternalMemoryProperties("externalMemoryProperties", obj["externalMemoryProperties"],
9254                                      (o.externalMemoryProperties));
9255 }
9256 
parse_VkPhysicalDeviceIDProperties(const char * s,Json::Value & obj,VkPhysicalDeviceIDProperties & o)9257 static void parse_VkPhysicalDeviceIDProperties(const char *s, Json::Value &obj, VkPhysicalDeviceIDProperties &o)
9258 {
9259 
9260     parse_VkStructureType("sType", obj["sType"], (o.sType));
9261 
9262     o.pNext = (VkPhysicalDeviceIDProperties *)parsePNextChain(obj);
9263 
9264     Json::Value &obj_deviceUUID_arr = obj["deviceUUID"];
9265     for (unsigned int i = 0; i < obj_deviceUUID_arr.size(); i++)
9266     {
9267         parse_uint8_t("deviceUUID", obj_deviceUUID_arr[i], const_cast<uint8_t &>((o.deviceUUID[i])));
9268     }
9269 
9270     Json::Value &obj_driverUUID_arr = obj["driverUUID"];
9271     for (unsigned int i = 0; i < obj_driverUUID_arr.size(); i++)
9272     {
9273         parse_uint8_t("driverUUID", obj_driverUUID_arr[i], const_cast<uint8_t &>((o.driverUUID[i])));
9274     }
9275 
9276     Json::Value &obj_deviceLUID_arr = obj["deviceLUID"];
9277     for (unsigned int i = 0; i < obj_deviceLUID_arr.size(); i++)
9278     {
9279         parse_uint8_t("deviceLUID", obj_deviceLUID_arr[i], const_cast<uint8_t &>((o.deviceLUID[i])));
9280     }
9281 
9282     parse_uint32_t("deviceNodeMask", obj["deviceNodeMask"], (o.deviceNodeMask));
9283 
9284     parse_VkBool32("deviceLUIDValid", obj["deviceLUIDValid"], (o.deviceLUIDValid));
9285 }
9286 
parse_VkExternalMemoryImageCreateInfo(const char * s,Json::Value & obj,VkExternalMemoryImageCreateInfo & o)9287 static void parse_VkExternalMemoryImageCreateInfo(const char *s, Json::Value &obj, VkExternalMemoryImageCreateInfo &o)
9288 {
9289 
9290     parse_VkStructureType("sType", obj["sType"], (o.sType));
9291 
9292     o.pNext = (VkExternalMemoryImageCreateInfo *)parsePNextChain(obj);
9293 
9294     parse_VkExternalMemoryHandleTypeFlags("handleTypes", obj["handleTypes"], (o.handleTypes));
9295 }
9296 
parse_VkExternalMemoryBufferCreateInfo(const char * s,Json::Value & obj,VkExternalMemoryBufferCreateInfo & o)9297 static void parse_VkExternalMemoryBufferCreateInfo(const char *s, Json::Value &obj, VkExternalMemoryBufferCreateInfo &o)
9298 {
9299 
9300     parse_VkStructureType("sType", obj["sType"], (o.sType));
9301 
9302     o.pNext = (VkExternalMemoryBufferCreateInfo *)parsePNextChain(obj);
9303 
9304     parse_VkExternalMemoryHandleTypeFlags("handleTypes", obj["handleTypes"], (o.handleTypes));
9305 }
9306 
parse_VkExportMemoryAllocateInfo(const char * s,Json::Value & obj,VkExportMemoryAllocateInfo & o)9307 static void parse_VkExportMemoryAllocateInfo(const char *s, Json::Value &obj, VkExportMemoryAllocateInfo &o)
9308 {
9309 
9310     parse_VkStructureType("sType", obj["sType"], (o.sType));
9311 
9312     o.pNext = (VkExportMemoryAllocateInfo *)parsePNextChain(obj);
9313 
9314     parse_VkExternalMemoryHandleTypeFlags("handleTypes", obj["handleTypes"], (o.handleTypes));
9315 }
9316 
parse_VkPhysicalDeviceExternalFenceInfo(const char * s,Json::Value & obj,VkPhysicalDeviceExternalFenceInfo & o)9317 static void parse_VkPhysicalDeviceExternalFenceInfo(const char *s, Json::Value &obj,
9318                                                     VkPhysicalDeviceExternalFenceInfo &o)
9319 {
9320 
9321     parse_VkStructureType("sType", obj["sType"], (o.sType));
9322 
9323     o.pNext = (VkPhysicalDeviceExternalFenceInfo *)parsePNextChain(obj);
9324 
9325     parse_VkExternalFenceHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
9326 }
9327 
parse_VkExternalFenceProperties(const char * s,Json::Value & obj,VkExternalFenceProperties & o)9328 static void parse_VkExternalFenceProperties(const char *s, Json::Value &obj, VkExternalFenceProperties &o)
9329 {
9330 
9331     parse_VkStructureType("sType", obj["sType"], (o.sType));
9332 
9333     o.pNext = (VkExternalFenceProperties *)parsePNextChain(obj);
9334 
9335     parse_VkExternalFenceHandleTypeFlags("exportFromImportedHandleTypes", obj["exportFromImportedHandleTypes"],
9336                                          (o.exportFromImportedHandleTypes));
9337 
9338     parse_VkExternalFenceHandleTypeFlags("compatibleHandleTypes", obj["compatibleHandleTypes"],
9339                                          (o.compatibleHandleTypes));
9340 
9341     parse_VkExternalFenceFeatureFlags("externalFenceFeatures", obj["externalFenceFeatures"], (o.externalFenceFeatures));
9342 }
9343 
parse_VkExportFenceCreateInfo(const char * s,Json::Value & obj,VkExportFenceCreateInfo & o)9344 static void parse_VkExportFenceCreateInfo(const char *s, Json::Value &obj, VkExportFenceCreateInfo &o)
9345 {
9346 
9347     parse_VkStructureType("sType", obj["sType"], (o.sType));
9348 
9349     o.pNext = (VkExportFenceCreateInfo *)parsePNextChain(obj);
9350 
9351     parse_VkExternalFenceHandleTypeFlags("handleTypes", obj["handleTypes"], (o.handleTypes));
9352 }
9353 
parse_VkExportSemaphoreCreateInfo(const char * s,Json::Value & obj,VkExportSemaphoreCreateInfo & o)9354 static void parse_VkExportSemaphoreCreateInfo(const char *s, Json::Value &obj, VkExportSemaphoreCreateInfo &o)
9355 {
9356 
9357     parse_VkStructureType("sType", obj["sType"], (o.sType));
9358 
9359     o.pNext = (VkExportSemaphoreCreateInfo *)parsePNextChain(obj);
9360 
9361     parse_VkExternalSemaphoreHandleTypeFlags("handleTypes", obj["handleTypes"], (o.handleTypes));
9362 }
9363 
parse_VkPhysicalDeviceExternalSemaphoreInfo(const char * s,Json::Value & obj,VkPhysicalDeviceExternalSemaphoreInfo & o)9364 static void parse_VkPhysicalDeviceExternalSemaphoreInfo(const char *s, Json::Value &obj,
9365                                                         VkPhysicalDeviceExternalSemaphoreInfo &o)
9366 {
9367 
9368     parse_VkStructureType("sType", obj["sType"], (o.sType));
9369 
9370     o.pNext = (VkPhysicalDeviceExternalSemaphoreInfo *)parsePNextChain(obj);
9371 
9372     parse_VkExternalSemaphoreHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
9373 }
9374 
parse_VkExternalSemaphoreProperties(const char * s,Json::Value & obj,VkExternalSemaphoreProperties & o)9375 static void parse_VkExternalSemaphoreProperties(const char *s, Json::Value &obj, VkExternalSemaphoreProperties &o)
9376 {
9377 
9378     parse_VkStructureType("sType", obj["sType"], (o.sType));
9379 
9380     o.pNext = (VkExternalSemaphoreProperties *)parsePNextChain(obj);
9381 
9382     parse_VkExternalSemaphoreHandleTypeFlags("exportFromImportedHandleTypes", obj["exportFromImportedHandleTypes"],
9383                                              (o.exportFromImportedHandleTypes));
9384 
9385     parse_VkExternalSemaphoreHandleTypeFlags("compatibleHandleTypes", obj["compatibleHandleTypes"],
9386                                              (o.compatibleHandleTypes));
9387 
9388     parse_VkExternalSemaphoreFeatureFlags("externalSemaphoreFeatures", obj["externalSemaphoreFeatures"],
9389                                           (o.externalSemaphoreFeatures));
9390 }
9391 
parse_VkPhysicalDeviceMaintenance3Properties(const char * s,Json::Value & obj,VkPhysicalDeviceMaintenance3Properties & o)9392 static void parse_VkPhysicalDeviceMaintenance3Properties(const char *s, Json::Value &obj,
9393                                                          VkPhysicalDeviceMaintenance3Properties &o)
9394 {
9395 
9396     parse_VkStructureType("sType", obj["sType"], (o.sType));
9397 
9398     o.pNext = (VkPhysicalDeviceMaintenance3Properties *)parsePNextChain(obj);
9399 
9400     parse_uint32_t("maxPerSetDescriptors", obj["maxPerSetDescriptors"], (o.maxPerSetDescriptors));
9401 
9402     parse_VkDeviceSize("maxMemoryAllocationSize", obj["maxMemoryAllocationSize"], (o.maxMemoryAllocationSize));
9403 }
9404 
parse_VkDescriptorSetLayoutSupport(const char * s,Json::Value & obj,VkDescriptorSetLayoutSupport & o)9405 static void parse_VkDescriptorSetLayoutSupport(const char *s, Json::Value &obj, VkDescriptorSetLayoutSupport &o)
9406 {
9407 
9408     parse_VkStructureType("sType", obj["sType"], (o.sType));
9409 
9410     o.pNext = (VkDescriptorSetLayoutSupport *)parsePNextChain(obj);
9411 
9412     parse_VkBool32("supported", obj["supported"], (o.supported));
9413 }
9414 
parse_VkPhysicalDeviceShaderDrawParametersFeatures(const char * s,Json::Value & obj,VkPhysicalDeviceShaderDrawParametersFeatures & o)9415 static void parse_VkPhysicalDeviceShaderDrawParametersFeatures(const char *s, Json::Value &obj,
9416                                                                VkPhysicalDeviceShaderDrawParametersFeatures &o)
9417 {
9418 
9419     parse_VkStructureType("sType", obj["sType"], (o.sType));
9420 
9421     o.pNext = (VkPhysicalDeviceShaderDrawParametersFeatures *)parsePNextChain(obj);
9422 
9423     parse_VkBool32("shaderDrawParameters", obj["shaderDrawParameters"], (o.shaderDrawParameters));
9424 }
9425 
9426 typedef VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures;
9427 
9428 static std::map<std::string, int> VkDriverId_map = {
9429     std::make_pair("VK_DRIVER_ID_AMD_PROPRIETARY", 1),
9430     std::make_pair("VK_DRIVER_ID_AMD_OPEN_SOURCE", 2),
9431     std::make_pair("VK_DRIVER_ID_MESA_RADV", 3),
9432     std::make_pair("VK_DRIVER_ID_NVIDIA_PROPRIETARY", 4),
9433     std::make_pair("VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS", 5),
9434     std::make_pair("VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA", 6),
9435     std::make_pair("VK_DRIVER_ID_IMAGINATION_PROPRIETARY", 7),
9436     std::make_pair("VK_DRIVER_ID_QUALCOMM_PROPRIETARY", 8),
9437     std::make_pair("VK_DRIVER_ID_ARM_PROPRIETARY", 9),
9438     std::make_pair("VK_DRIVER_ID_GOOGLE_SWIFTSHADER", 10),
9439     std::make_pair("VK_DRIVER_ID_GGP_PROPRIETARY", 11),
9440     std::make_pair("VK_DRIVER_ID_BROADCOM_PROPRIETARY", 12),
9441     std::make_pair("VK_DRIVER_ID_MESA_LLVMPIPE", 13),
9442     std::make_pair("VK_DRIVER_ID_MOLTENVK", 14),
9443     std::make_pair("VK_DRIVER_ID_COREAVI_PROPRIETARY", 15),
9444     std::make_pair("VK_DRIVER_ID_JUICE_PROPRIETARY", 16),
9445     std::make_pair("VK_DRIVER_ID_VERISILICON_PROPRIETARY", 17),
9446     std::make_pair("VK_DRIVER_ID_MESA_TURNIP", 18),
9447     std::make_pair("VK_DRIVER_ID_MESA_V3DV", 19),
9448     std::make_pair("VK_DRIVER_ID_MESA_PANVK", 20),
9449     std::make_pair("VK_DRIVER_ID_SAMSUNG_PROPRIETARY", 21),
9450 };
parse_VkDriverId(const char * s,Json::Value & obj,VkDriverId & o)9451 static void parse_VkDriverId(const char *s, Json::Value &obj, VkDriverId &o)
9452 {
9453     std::string _res = obj.asString();
9454     o                = (VkDriverId)VkDriverId_map[std::string(_res)];
9455 }
9456 
9457 static std::map<std::string, int> VkShaderFloatControlsIndependence_map = {
9458     std::make_pair("VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY", 0),
9459     std::make_pair("VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL", 1),
9460     std::make_pair("VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE", 2),
9461 };
parse_VkShaderFloatControlsIndependence(const char * s,Json::Value & obj,VkShaderFloatControlsIndependence & o)9462 static void parse_VkShaderFloatControlsIndependence(const char *s, Json::Value &obj,
9463                                                     VkShaderFloatControlsIndependence &o)
9464 {
9465     std::string _res = obj.asString();
9466     o                = (VkShaderFloatControlsIndependence)VkShaderFloatControlsIndependence_map[std::string(_res)];
9467 }
9468 
9469 static std::map<std::string, int> VkResolveModeFlagBits_map = {
9470     std::make_pair("VK_RESOLVE_MODE_NONE", 0),
9471     std::make_pair("VK_RESOLVE_MODE_SAMPLE_ZERO_BIT", 1UL << 0),
9472     std::make_pair("VK_RESOLVE_MODE_AVERAGE_BIT", 1UL << 1),
9473     std::make_pair("VK_RESOLVE_MODE_MIN_BIT", 1UL << 2),
9474     std::make_pair("VK_RESOLVE_MODE_MAX_BIT", 1UL << 3),
9475 };
parse_VkResolveModeFlagBits(const char * s,Json::Value & obj,VkResolveModeFlagBits & o)9476 static void parse_VkResolveModeFlagBits(const char *s, Json::Value &obj, VkResolveModeFlagBits &o)
9477 {
9478     std::string _res = obj.asString();
9479     o                = (VkResolveModeFlagBits)VkResolveModeFlagBits_map[std::string(_res)];
9480 }
9481 
9482 static std::map<std::string, int> VkDescriptorBindingFlagBits_map = {
9483     std::make_pair("VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT", 1UL << 0),
9484     std::make_pair("VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT", 1UL << 1),
9485     std::make_pair("VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT", 1UL << 2),
9486     std::make_pair("VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT", 1UL << 3),
9487     std::make_pair("VK_DESCRIPTOR_BINDING_RESERVED_4_BIT_QCOM", 1UL << 4),
9488 };
parse_VkDescriptorBindingFlagBits(const char * s,Json::Value & obj,VkDescriptorBindingFlagBits & o)9489 static void parse_VkDescriptorBindingFlagBits(const char *s, Json::Value &obj, VkDescriptorBindingFlagBits &o)
9490 {
9491     std::string _res = obj.asString();
9492     o                = (VkDescriptorBindingFlagBits)VkDescriptorBindingFlagBits_map[std::string(_res)];
9493 }
9494 
9495 static std::map<std::string, int> VkSamplerReductionMode_map = {
9496     std::make_pair("VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE", 0),
9497     std::make_pair("VK_SAMPLER_REDUCTION_MODE_MIN", 1),
9498     std::make_pair("VK_SAMPLER_REDUCTION_MODE_MAX", 2),
9499 };
parse_VkSamplerReductionMode(const char * s,Json::Value & obj,VkSamplerReductionMode & o)9500 static void parse_VkSamplerReductionMode(const char *s, Json::Value &obj, VkSamplerReductionMode &o)
9501 {
9502     std::string _res = obj.asString();
9503     o                = (VkSamplerReductionMode)VkSamplerReductionMode_map[std::string(_res)];
9504 }
9505 
9506 static std::map<std::string, int> VkSemaphoreType_map = {
9507     std::make_pair("VK_SEMAPHORE_TYPE_BINARY", 0),
9508     std::make_pair("VK_SEMAPHORE_TYPE_TIMELINE", 1),
9509 };
parse_VkSemaphoreType(const char * s,Json::Value & obj,VkSemaphoreType & o)9510 static void parse_VkSemaphoreType(const char *s, Json::Value &obj, VkSemaphoreType &o)
9511 {
9512     std::string _res = obj.asString();
9513     o                = (VkSemaphoreType)VkSemaphoreType_map[std::string(_res)];
9514 }
9515 
9516 static std::map<std::string, int> VkSemaphoreWaitFlagBits_map = {
9517     std::make_pair("VK_SEMAPHORE_WAIT_ANY_BIT", 1UL << 0),
9518 };
parse_VkSemaphoreWaitFlagBits(const char * s,Json::Value & obj,VkSemaphoreWaitFlagBits & o)9519 static void parse_VkSemaphoreWaitFlagBits(const char *s, Json::Value &obj, VkSemaphoreWaitFlagBits &o)
9520 {
9521     std::string _res = obj.asString();
9522     o                = (VkSemaphoreWaitFlagBits)VkSemaphoreWaitFlagBits_map[std::string(_res)];
9523 }
9524 
parse_VkResolveModeFlags(const char * s,Json::Value & obj,VkResolveModeFlags & o)9525 static void parse_VkResolveModeFlags(const char *s, Json::Value &obj, VkResolveModeFlags &o)
9526 {
9527     o                = (VkResolveModeFlags)0;
9528     std::string _res = obj.asString();
9529     std::vector<std::string> bitmasks;
9530     std::istringstream inputStream(_res);
9531     std::string tempStr;
9532     while (getline(inputStream, tempStr, '|'))
9533     {
9534         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
9535         bitmasks.push_back(tempStr);
9536     }
9537     for (auto &it : bitmasks)
9538     {
9539         o |= (VkResolveModeFlagBits)VkResolveModeFlagBits_map[it];
9540     }
9541 }
9542 
parse_VkDescriptorBindingFlags(const char * s,Json::Value & obj,VkDescriptorBindingFlags & o)9543 static void parse_VkDescriptorBindingFlags(const char *s, Json::Value &obj, VkDescriptorBindingFlags &o)
9544 {
9545     o                = (VkDescriptorBindingFlags)0;
9546     std::string _res = obj.asString();
9547     std::vector<std::string> bitmasks;
9548     std::istringstream inputStream(_res);
9549     std::string tempStr;
9550     while (getline(inputStream, tempStr, '|'))
9551     {
9552         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
9553         bitmasks.push_back(tempStr);
9554     }
9555     for (auto &it : bitmasks)
9556     {
9557         o |= (VkDescriptorBindingFlagBits)VkDescriptorBindingFlagBits_map[it];
9558     }
9559 }
9560 
parse_VkSemaphoreWaitFlags(const char * s,Json::Value & obj,VkSemaphoreWaitFlags & o)9561 static void parse_VkSemaphoreWaitFlags(const char *s, Json::Value &obj, VkSemaphoreWaitFlags &o)
9562 {
9563     o                = (VkSemaphoreWaitFlags)0;
9564     std::string _res = obj.asString();
9565     std::vector<std::string> bitmasks;
9566     std::istringstream inputStream(_res);
9567     std::string tempStr;
9568     while (getline(inputStream, tempStr, '|'))
9569     {
9570         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
9571         bitmasks.push_back(tempStr);
9572     }
9573     for (auto &it : bitmasks)
9574     {
9575         o |= (VkSemaphoreWaitFlagBits)VkSemaphoreWaitFlagBits_map[it];
9576     }
9577 }
9578 
parse_VkPhysicalDeviceVulkan11Features(const char * s,Json::Value & obj,VkPhysicalDeviceVulkan11Features & o)9579 static void parse_VkPhysicalDeviceVulkan11Features(const char *s, Json::Value &obj, VkPhysicalDeviceVulkan11Features &o)
9580 {
9581 
9582     parse_VkStructureType("sType", obj["sType"], (o.sType));
9583 
9584     o.pNext = (VkPhysicalDeviceVulkan11Features *)parsePNextChain(obj);
9585 
9586     parse_VkBool32("storageBuffer16BitAccess", obj["storageBuffer16BitAccess"], (o.storageBuffer16BitAccess));
9587 
9588     parse_VkBool32("uniformAndStorageBuffer16BitAccess", obj["uniformAndStorageBuffer16BitAccess"],
9589                    (o.uniformAndStorageBuffer16BitAccess));
9590 
9591     parse_VkBool32("storagePushConstant16", obj["storagePushConstant16"], (o.storagePushConstant16));
9592 
9593     parse_VkBool32("storageInputOutput16", obj["storageInputOutput16"], (o.storageInputOutput16));
9594 
9595     parse_VkBool32("multiview", obj["multiview"], (o.multiview));
9596 
9597     parse_VkBool32("multiviewGeometryShader", obj["multiviewGeometryShader"], (o.multiviewGeometryShader));
9598 
9599     parse_VkBool32("multiviewTessellationShader", obj["multiviewTessellationShader"], (o.multiviewTessellationShader));
9600 
9601     parse_VkBool32("variablePointersStorageBuffer", obj["variablePointersStorageBuffer"],
9602                    (o.variablePointersStorageBuffer));
9603 
9604     parse_VkBool32("variablePointers", obj["variablePointers"], (o.variablePointers));
9605 
9606     parse_VkBool32("protectedMemory", obj["protectedMemory"], (o.protectedMemory));
9607 
9608     parse_VkBool32("samplerYcbcrConversion", obj["samplerYcbcrConversion"], (o.samplerYcbcrConversion));
9609 
9610     parse_VkBool32("shaderDrawParameters", obj["shaderDrawParameters"], (o.shaderDrawParameters));
9611 }
9612 
parse_VkPhysicalDeviceVulkan11Properties(const char * s,Json::Value & obj,VkPhysicalDeviceVulkan11Properties & o)9613 static void parse_VkPhysicalDeviceVulkan11Properties(const char *s, Json::Value &obj,
9614                                                      VkPhysicalDeviceVulkan11Properties &o)
9615 {
9616 
9617     parse_VkStructureType("sType", obj["sType"], (o.sType));
9618 
9619     o.pNext = (VkPhysicalDeviceVulkan11Properties *)parsePNextChain(obj);
9620 
9621     Json::Value &obj_deviceUUID_arr = obj["deviceUUID"];
9622     for (unsigned int i = 0; i < obj_deviceUUID_arr.size(); i++)
9623     {
9624         parse_uint8_t("deviceUUID", obj_deviceUUID_arr[i], const_cast<uint8_t &>((o.deviceUUID[i])));
9625     }
9626 
9627     Json::Value &obj_driverUUID_arr = obj["driverUUID"];
9628     for (unsigned int i = 0; i < obj_driverUUID_arr.size(); i++)
9629     {
9630         parse_uint8_t("driverUUID", obj_driverUUID_arr[i], const_cast<uint8_t &>((o.driverUUID[i])));
9631     }
9632 
9633     Json::Value &obj_deviceLUID_arr = obj["deviceLUID"];
9634     for (unsigned int i = 0; i < obj_deviceLUID_arr.size(); i++)
9635     {
9636         parse_uint8_t("deviceLUID", obj_deviceLUID_arr[i], const_cast<uint8_t &>((o.deviceLUID[i])));
9637     }
9638 
9639     parse_uint32_t("deviceNodeMask", obj["deviceNodeMask"], (o.deviceNodeMask));
9640 
9641     parse_VkBool32("deviceLUIDValid", obj["deviceLUIDValid"], (o.deviceLUIDValid));
9642 
9643     parse_uint32_t("subgroupSize", obj["subgroupSize"], (o.subgroupSize));
9644 
9645     parse_VkShaderStageFlags("subgroupSupportedStages", obj["subgroupSupportedStages"], (o.subgroupSupportedStages));
9646 
9647     parse_VkSubgroupFeatureFlags("subgroupSupportedOperations", obj["subgroupSupportedOperations"],
9648                                  (o.subgroupSupportedOperations));
9649 
9650     parse_VkBool32("subgroupQuadOperationsInAllStages", obj["subgroupQuadOperationsInAllStages"],
9651                    (o.subgroupQuadOperationsInAllStages));
9652 
9653     parse_VkPointClippingBehavior("pointClippingBehavior", obj["pointClippingBehavior"], (o.pointClippingBehavior));
9654 
9655     parse_uint32_t("maxMultiviewViewCount", obj["maxMultiviewViewCount"], (o.maxMultiviewViewCount));
9656 
9657     parse_uint32_t("maxMultiviewInstanceIndex", obj["maxMultiviewInstanceIndex"], (o.maxMultiviewInstanceIndex));
9658 
9659     parse_VkBool32("protectedNoFault", obj["protectedNoFault"], (o.protectedNoFault));
9660 
9661     parse_uint32_t("maxPerSetDescriptors", obj["maxPerSetDescriptors"], (o.maxPerSetDescriptors));
9662 
9663     parse_VkDeviceSize("maxMemoryAllocationSize", obj["maxMemoryAllocationSize"], (o.maxMemoryAllocationSize));
9664 }
9665 
parse_VkPhysicalDeviceVulkan12Features(const char * s,Json::Value & obj,VkPhysicalDeviceVulkan12Features & o)9666 static void parse_VkPhysicalDeviceVulkan12Features(const char *s, Json::Value &obj, VkPhysicalDeviceVulkan12Features &o)
9667 {
9668 
9669     parse_VkStructureType("sType", obj["sType"], (o.sType));
9670 
9671     o.pNext = (VkPhysicalDeviceVulkan12Features *)parsePNextChain(obj);
9672 
9673     parse_VkBool32("samplerMirrorClampToEdge", obj["samplerMirrorClampToEdge"], (o.samplerMirrorClampToEdge));
9674 
9675     parse_VkBool32("drawIndirectCount", obj["drawIndirectCount"], (o.drawIndirectCount));
9676 
9677     parse_VkBool32("storageBuffer8BitAccess", obj["storageBuffer8BitAccess"], (o.storageBuffer8BitAccess));
9678 
9679     parse_VkBool32("uniformAndStorageBuffer8BitAccess", obj["uniformAndStorageBuffer8BitAccess"],
9680                    (o.uniformAndStorageBuffer8BitAccess));
9681 
9682     parse_VkBool32("storagePushConstant8", obj["storagePushConstant8"], (o.storagePushConstant8));
9683 
9684     parse_VkBool32("shaderBufferInt64Atomics", obj["shaderBufferInt64Atomics"], (o.shaderBufferInt64Atomics));
9685 
9686     parse_VkBool32("shaderSharedInt64Atomics", obj["shaderSharedInt64Atomics"], (o.shaderSharedInt64Atomics));
9687 
9688     parse_VkBool32("shaderFloat16", obj["shaderFloat16"], (o.shaderFloat16));
9689 
9690     parse_VkBool32("shaderInt8", obj["shaderInt8"], (o.shaderInt8));
9691 
9692     parse_VkBool32("descriptorIndexing", obj["descriptorIndexing"], (o.descriptorIndexing));
9693 
9694     parse_VkBool32("shaderInputAttachmentArrayDynamicIndexing", obj["shaderInputAttachmentArrayDynamicIndexing"],
9695                    (o.shaderInputAttachmentArrayDynamicIndexing));
9696 
9697     parse_VkBool32("shaderUniformTexelBufferArrayDynamicIndexing", obj["shaderUniformTexelBufferArrayDynamicIndexing"],
9698                    (o.shaderUniformTexelBufferArrayDynamicIndexing));
9699 
9700     parse_VkBool32("shaderStorageTexelBufferArrayDynamicIndexing", obj["shaderStorageTexelBufferArrayDynamicIndexing"],
9701                    (o.shaderStorageTexelBufferArrayDynamicIndexing));
9702 
9703     parse_VkBool32("shaderUniformBufferArrayNonUniformIndexing", obj["shaderUniformBufferArrayNonUniformIndexing"],
9704                    (o.shaderUniformBufferArrayNonUniformIndexing));
9705 
9706     parse_VkBool32("shaderSampledImageArrayNonUniformIndexing", obj["shaderSampledImageArrayNonUniformIndexing"],
9707                    (o.shaderSampledImageArrayNonUniformIndexing));
9708 
9709     parse_VkBool32("shaderStorageBufferArrayNonUniformIndexing", obj["shaderStorageBufferArrayNonUniformIndexing"],
9710                    (o.shaderStorageBufferArrayNonUniformIndexing));
9711 
9712     parse_VkBool32("shaderStorageImageArrayNonUniformIndexing", obj["shaderStorageImageArrayNonUniformIndexing"],
9713                    (o.shaderStorageImageArrayNonUniformIndexing));
9714 
9715     parse_VkBool32("shaderInputAttachmentArrayNonUniformIndexing", obj["shaderInputAttachmentArrayNonUniformIndexing"],
9716                    (o.shaderInputAttachmentArrayNonUniformIndexing));
9717 
9718     parse_VkBool32("shaderUniformTexelBufferArrayNonUniformIndexing",
9719                    obj["shaderUniformTexelBufferArrayNonUniformIndexing"],
9720                    (o.shaderUniformTexelBufferArrayNonUniformIndexing));
9721 
9722     parse_VkBool32("shaderStorageTexelBufferArrayNonUniformIndexing",
9723                    obj["shaderStorageTexelBufferArrayNonUniformIndexing"],
9724                    (o.shaderStorageTexelBufferArrayNonUniformIndexing));
9725 
9726     parse_VkBool32("descriptorBindingUniformBufferUpdateAfterBind",
9727                    obj["descriptorBindingUniformBufferUpdateAfterBind"],
9728                    (o.descriptorBindingUniformBufferUpdateAfterBind));
9729 
9730     parse_VkBool32("descriptorBindingSampledImageUpdateAfterBind", obj["descriptorBindingSampledImageUpdateAfterBind"],
9731                    (o.descriptorBindingSampledImageUpdateAfterBind));
9732 
9733     parse_VkBool32("descriptorBindingStorageImageUpdateAfterBind", obj["descriptorBindingStorageImageUpdateAfterBind"],
9734                    (o.descriptorBindingStorageImageUpdateAfterBind));
9735 
9736     parse_VkBool32("descriptorBindingStorageBufferUpdateAfterBind",
9737                    obj["descriptorBindingStorageBufferUpdateAfterBind"],
9738                    (o.descriptorBindingStorageBufferUpdateAfterBind));
9739 
9740     parse_VkBool32("descriptorBindingUniformTexelBufferUpdateAfterBind",
9741                    obj["descriptorBindingUniformTexelBufferUpdateAfterBind"],
9742                    (o.descriptorBindingUniformTexelBufferUpdateAfterBind));
9743 
9744     parse_VkBool32("descriptorBindingStorageTexelBufferUpdateAfterBind",
9745                    obj["descriptorBindingStorageTexelBufferUpdateAfterBind"],
9746                    (o.descriptorBindingStorageTexelBufferUpdateAfterBind));
9747 
9748     parse_VkBool32("descriptorBindingUpdateUnusedWhilePending", obj["descriptorBindingUpdateUnusedWhilePending"],
9749                    (o.descriptorBindingUpdateUnusedWhilePending));
9750 
9751     parse_VkBool32("descriptorBindingPartiallyBound", obj["descriptorBindingPartiallyBound"],
9752                    (o.descriptorBindingPartiallyBound));
9753 
9754     parse_VkBool32("descriptorBindingVariableDescriptorCount", obj["descriptorBindingVariableDescriptorCount"],
9755                    (o.descriptorBindingVariableDescriptorCount));
9756 
9757     parse_VkBool32("runtimeDescriptorArray", obj["runtimeDescriptorArray"], (o.runtimeDescriptorArray));
9758 
9759     parse_VkBool32("samplerFilterMinmax", obj["samplerFilterMinmax"], (o.samplerFilterMinmax));
9760 
9761     parse_VkBool32("scalarBlockLayout", obj["scalarBlockLayout"], (o.scalarBlockLayout));
9762 
9763     parse_VkBool32("imagelessFramebuffer", obj["imagelessFramebuffer"], (o.imagelessFramebuffer));
9764 
9765     parse_VkBool32("uniformBufferStandardLayout", obj["uniformBufferStandardLayout"], (o.uniformBufferStandardLayout));
9766 
9767     parse_VkBool32("shaderSubgroupExtendedTypes", obj["shaderSubgroupExtendedTypes"], (o.shaderSubgroupExtendedTypes));
9768 
9769     parse_VkBool32("separateDepthStencilLayouts", obj["separateDepthStencilLayouts"], (o.separateDepthStencilLayouts));
9770 
9771     parse_VkBool32("hostQueryReset", obj["hostQueryReset"], (o.hostQueryReset));
9772 
9773     parse_VkBool32("timelineSemaphore", obj["timelineSemaphore"], (o.timelineSemaphore));
9774 
9775     parse_VkBool32("bufferDeviceAddress", obj["bufferDeviceAddress"], (o.bufferDeviceAddress));
9776 
9777     parse_VkBool32("bufferDeviceAddressCaptureReplay", obj["bufferDeviceAddressCaptureReplay"],
9778                    (o.bufferDeviceAddressCaptureReplay));
9779 
9780     parse_VkBool32("bufferDeviceAddressMultiDevice", obj["bufferDeviceAddressMultiDevice"],
9781                    (o.bufferDeviceAddressMultiDevice));
9782 
9783     parse_VkBool32("vulkanMemoryModel", obj["vulkanMemoryModel"], (o.vulkanMemoryModel));
9784 
9785     parse_VkBool32("vulkanMemoryModelDeviceScope", obj["vulkanMemoryModelDeviceScope"],
9786                    (o.vulkanMemoryModelDeviceScope));
9787 
9788     parse_VkBool32("vulkanMemoryModelAvailabilityVisibilityChains",
9789                    obj["vulkanMemoryModelAvailabilityVisibilityChains"],
9790                    (o.vulkanMemoryModelAvailabilityVisibilityChains));
9791 
9792     parse_VkBool32("shaderOutputViewportIndex", obj["shaderOutputViewportIndex"], (o.shaderOutputViewportIndex));
9793 
9794     parse_VkBool32("shaderOutputLayer", obj["shaderOutputLayer"], (o.shaderOutputLayer));
9795 
9796     parse_VkBool32("subgroupBroadcastDynamicId", obj["subgroupBroadcastDynamicId"], (o.subgroupBroadcastDynamicId));
9797 }
9798 
parse_VkConformanceVersion(const char * s,Json::Value & obj,VkConformanceVersion & o)9799 static void parse_VkConformanceVersion(const char *s, Json::Value &obj, VkConformanceVersion &o)
9800 {
9801 
9802     parse_uint8_t("major", obj["major"], (o.major));
9803 
9804     parse_uint8_t("minor", obj["minor"], (o.minor));
9805 
9806     parse_uint8_t("subminor", obj["subminor"], (o.subminor));
9807 
9808     parse_uint8_t("patch", obj["patch"], (o.patch));
9809 }
9810 
parse_VkPhysicalDeviceVulkan12Properties(const char * s,Json::Value & obj,VkPhysicalDeviceVulkan12Properties & o)9811 static void parse_VkPhysicalDeviceVulkan12Properties(const char *s, Json::Value &obj,
9812                                                      VkPhysicalDeviceVulkan12Properties &o)
9813 {
9814 
9815     parse_VkStructureType("sType", obj["sType"], (o.sType));
9816 
9817     o.pNext = (VkPhysicalDeviceVulkan12Properties *)parsePNextChain(obj);
9818 
9819     parse_VkDriverId("driverID", obj["driverID"], (o.driverID));
9820 
9821     /** TODO: Handle this - driverName **/
9822 
9823     /** TODO: Handle this - driverInfo **/
9824 
9825     parse_VkConformanceVersion("conformanceVersion", obj["conformanceVersion"], (o.conformanceVersion));
9826 
9827     parse_VkShaderFloatControlsIndependence("denormBehaviorIndependence", obj["denormBehaviorIndependence"],
9828                                             (o.denormBehaviorIndependence));
9829 
9830     parse_VkShaderFloatControlsIndependence("roundingModeIndependence", obj["roundingModeIndependence"],
9831                                             (o.roundingModeIndependence));
9832 
9833     parse_VkBool32("shaderSignedZeroInfNanPreserveFloat16", obj["shaderSignedZeroInfNanPreserveFloat16"],
9834                    (o.shaderSignedZeroInfNanPreserveFloat16));
9835 
9836     parse_VkBool32("shaderSignedZeroInfNanPreserveFloat32", obj["shaderSignedZeroInfNanPreserveFloat32"],
9837                    (o.shaderSignedZeroInfNanPreserveFloat32));
9838 
9839     parse_VkBool32("shaderSignedZeroInfNanPreserveFloat64", obj["shaderSignedZeroInfNanPreserveFloat64"],
9840                    (o.shaderSignedZeroInfNanPreserveFloat64));
9841 
9842     parse_VkBool32("shaderDenormPreserveFloat16", obj["shaderDenormPreserveFloat16"], (o.shaderDenormPreserveFloat16));
9843 
9844     parse_VkBool32("shaderDenormPreserveFloat32", obj["shaderDenormPreserveFloat32"], (o.shaderDenormPreserveFloat32));
9845 
9846     parse_VkBool32("shaderDenormPreserveFloat64", obj["shaderDenormPreserveFloat64"], (o.shaderDenormPreserveFloat64));
9847 
9848     parse_VkBool32("shaderDenormFlushToZeroFloat16", obj["shaderDenormFlushToZeroFloat16"],
9849                    (o.shaderDenormFlushToZeroFloat16));
9850 
9851     parse_VkBool32("shaderDenormFlushToZeroFloat32", obj["shaderDenormFlushToZeroFloat32"],
9852                    (o.shaderDenormFlushToZeroFloat32));
9853 
9854     parse_VkBool32("shaderDenormFlushToZeroFloat64", obj["shaderDenormFlushToZeroFloat64"],
9855                    (o.shaderDenormFlushToZeroFloat64));
9856 
9857     parse_VkBool32("shaderRoundingModeRTEFloat16", obj["shaderRoundingModeRTEFloat16"],
9858                    (o.shaderRoundingModeRTEFloat16));
9859 
9860     parse_VkBool32("shaderRoundingModeRTEFloat32", obj["shaderRoundingModeRTEFloat32"],
9861                    (o.shaderRoundingModeRTEFloat32));
9862 
9863     parse_VkBool32("shaderRoundingModeRTEFloat64", obj["shaderRoundingModeRTEFloat64"],
9864                    (o.shaderRoundingModeRTEFloat64));
9865 
9866     parse_VkBool32("shaderRoundingModeRTZFloat16", obj["shaderRoundingModeRTZFloat16"],
9867                    (o.shaderRoundingModeRTZFloat16));
9868 
9869     parse_VkBool32("shaderRoundingModeRTZFloat32", obj["shaderRoundingModeRTZFloat32"],
9870                    (o.shaderRoundingModeRTZFloat32));
9871 
9872     parse_VkBool32("shaderRoundingModeRTZFloat64", obj["shaderRoundingModeRTZFloat64"],
9873                    (o.shaderRoundingModeRTZFloat64));
9874 
9875     parse_uint32_t("maxUpdateAfterBindDescriptorsInAllPools", obj["maxUpdateAfterBindDescriptorsInAllPools"],
9876                    (o.maxUpdateAfterBindDescriptorsInAllPools));
9877 
9878     parse_VkBool32("shaderUniformBufferArrayNonUniformIndexingNative",
9879                    obj["shaderUniformBufferArrayNonUniformIndexingNative"],
9880                    (o.shaderUniformBufferArrayNonUniformIndexingNative));
9881 
9882     parse_VkBool32("shaderSampledImageArrayNonUniformIndexingNative",
9883                    obj["shaderSampledImageArrayNonUniformIndexingNative"],
9884                    (o.shaderSampledImageArrayNonUniformIndexingNative));
9885 
9886     parse_VkBool32("shaderStorageBufferArrayNonUniformIndexingNative",
9887                    obj["shaderStorageBufferArrayNonUniformIndexingNative"],
9888                    (o.shaderStorageBufferArrayNonUniformIndexingNative));
9889 
9890     parse_VkBool32("shaderStorageImageArrayNonUniformIndexingNative",
9891                    obj["shaderStorageImageArrayNonUniformIndexingNative"],
9892                    (o.shaderStorageImageArrayNonUniformIndexingNative));
9893 
9894     parse_VkBool32("shaderInputAttachmentArrayNonUniformIndexingNative",
9895                    obj["shaderInputAttachmentArrayNonUniformIndexingNative"],
9896                    (o.shaderInputAttachmentArrayNonUniformIndexingNative));
9897 
9898     parse_VkBool32("robustBufferAccessUpdateAfterBind", obj["robustBufferAccessUpdateAfterBind"],
9899                    (o.robustBufferAccessUpdateAfterBind));
9900 
9901     parse_VkBool32("quadDivergentImplicitLod", obj["quadDivergentImplicitLod"], (o.quadDivergentImplicitLod));
9902 
9903     parse_uint32_t("maxPerStageDescriptorUpdateAfterBindSamplers", obj["maxPerStageDescriptorUpdateAfterBindSamplers"],
9904                    (o.maxPerStageDescriptorUpdateAfterBindSamplers));
9905 
9906     parse_uint32_t("maxPerStageDescriptorUpdateAfterBindUniformBuffers",
9907                    obj["maxPerStageDescriptorUpdateAfterBindUniformBuffers"],
9908                    (o.maxPerStageDescriptorUpdateAfterBindUniformBuffers));
9909 
9910     parse_uint32_t("maxPerStageDescriptorUpdateAfterBindStorageBuffers",
9911                    obj["maxPerStageDescriptorUpdateAfterBindStorageBuffers"],
9912                    (o.maxPerStageDescriptorUpdateAfterBindStorageBuffers));
9913 
9914     parse_uint32_t("maxPerStageDescriptorUpdateAfterBindSampledImages",
9915                    obj["maxPerStageDescriptorUpdateAfterBindSampledImages"],
9916                    (o.maxPerStageDescriptorUpdateAfterBindSampledImages));
9917 
9918     parse_uint32_t("maxPerStageDescriptorUpdateAfterBindStorageImages",
9919                    obj["maxPerStageDescriptorUpdateAfterBindStorageImages"],
9920                    (o.maxPerStageDescriptorUpdateAfterBindStorageImages));
9921 
9922     parse_uint32_t("maxPerStageDescriptorUpdateAfterBindInputAttachments",
9923                    obj["maxPerStageDescriptorUpdateAfterBindInputAttachments"],
9924                    (o.maxPerStageDescriptorUpdateAfterBindInputAttachments));
9925 
9926     parse_uint32_t("maxPerStageUpdateAfterBindResources", obj["maxPerStageUpdateAfterBindResources"],
9927                    (o.maxPerStageUpdateAfterBindResources));
9928 
9929     parse_uint32_t("maxDescriptorSetUpdateAfterBindSamplers", obj["maxDescriptorSetUpdateAfterBindSamplers"],
9930                    (o.maxDescriptorSetUpdateAfterBindSamplers));
9931 
9932     parse_uint32_t("maxDescriptorSetUpdateAfterBindUniformBuffers",
9933                    obj["maxDescriptorSetUpdateAfterBindUniformBuffers"],
9934                    (o.maxDescriptorSetUpdateAfterBindUniformBuffers));
9935 
9936     parse_uint32_t("maxDescriptorSetUpdateAfterBindUniformBuffersDynamic",
9937                    obj["maxDescriptorSetUpdateAfterBindUniformBuffersDynamic"],
9938                    (o.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic));
9939 
9940     parse_uint32_t("maxDescriptorSetUpdateAfterBindStorageBuffers",
9941                    obj["maxDescriptorSetUpdateAfterBindStorageBuffers"],
9942                    (o.maxDescriptorSetUpdateAfterBindStorageBuffers));
9943 
9944     parse_uint32_t("maxDescriptorSetUpdateAfterBindStorageBuffersDynamic",
9945                    obj["maxDescriptorSetUpdateAfterBindStorageBuffersDynamic"],
9946                    (o.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic));
9947 
9948     parse_uint32_t("maxDescriptorSetUpdateAfterBindSampledImages", obj["maxDescriptorSetUpdateAfterBindSampledImages"],
9949                    (o.maxDescriptorSetUpdateAfterBindSampledImages));
9950 
9951     parse_uint32_t("maxDescriptorSetUpdateAfterBindStorageImages", obj["maxDescriptorSetUpdateAfterBindStorageImages"],
9952                    (o.maxDescriptorSetUpdateAfterBindStorageImages));
9953 
9954     parse_uint32_t("maxDescriptorSetUpdateAfterBindInputAttachments",
9955                    obj["maxDescriptorSetUpdateAfterBindInputAttachments"],
9956                    (o.maxDescriptorSetUpdateAfterBindInputAttachments));
9957 
9958     parse_VkResolveModeFlags("supportedDepthResolveModes", obj["supportedDepthResolveModes"],
9959                              (o.supportedDepthResolveModes));
9960 
9961     parse_VkResolveModeFlags("supportedStencilResolveModes", obj["supportedStencilResolveModes"],
9962                              (o.supportedStencilResolveModes));
9963 
9964     parse_VkBool32("independentResolveNone", obj["independentResolveNone"], (o.independentResolveNone));
9965 
9966     parse_VkBool32("independentResolve", obj["independentResolve"], (o.independentResolve));
9967 
9968     parse_VkBool32("filterMinmaxSingleComponentFormats", obj["filterMinmaxSingleComponentFormats"],
9969                    (o.filterMinmaxSingleComponentFormats));
9970 
9971     parse_VkBool32("filterMinmaxImageComponentMapping", obj["filterMinmaxImageComponentMapping"],
9972                    (o.filterMinmaxImageComponentMapping));
9973 
9974     parse_uint64_t("maxTimelineSemaphoreValueDifference", obj["maxTimelineSemaphoreValueDifference"],
9975                    (o.maxTimelineSemaphoreValueDifference));
9976 
9977     parse_VkSampleCountFlags("framebufferIntegerColorSampleCounts", obj["framebufferIntegerColorSampleCounts"],
9978                              (o.framebufferIntegerColorSampleCounts));
9979 }
9980 
parse_VkImageFormatListCreateInfo(const char * s,Json::Value & obj,VkImageFormatListCreateInfo & o)9981 static void parse_VkImageFormatListCreateInfo(const char *s, Json::Value &obj, VkImageFormatListCreateInfo &o)
9982 {
9983 
9984     parse_VkStructureType("sType", obj["sType"], (o.sType));
9985 
9986     o.pNext = (VkImageFormatListCreateInfo *)parsePNextChain(obj);
9987 
9988     parse_uint32_t("viewFormatCount", obj["viewFormatCount"], (o.viewFormatCount));
9989 
9990     (o.pViewFormats)                  = (VkFormat *)s_globalMem.allocate((o.viewFormatCount), sizeof(VkFormat));
9991     Json::Value &obj_pViewFormats_arr = obj["pViewFormats"];
9992     for (unsigned int i = 0; i < obj_pViewFormats_arr.size(); i++)
9993     {
9994         parse_VkFormat("pViewFormats", obj_pViewFormats_arr[i], const_cast<VkFormat &>((o.pViewFormats[i])));
9995     }
9996 }
9997 
parse_VkAttachmentDescription2(const char * s,Json::Value & obj,VkAttachmentDescription2 & o)9998 static void parse_VkAttachmentDescription2(const char *s, Json::Value &obj, VkAttachmentDescription2 &o)
9999 {
10000 
10001     parse_VkStructureType("sType", obj["sType"], (o.sType));
10002 
10003     o.pNext = (VkAttachmentDescription2 *)parsePNextChain(obj);
10004 
10005     parse_VkAttachmentDescriptionFlags("flags", obj["flags"], (o.flags));
10006 
10007     parse_VkFormat("format", obj["format"], (o.format));
10008 
10009     parse_VkSampleCountFlagBits("samples", obj["samples"], (o.samples));
10010 
10011     parse_VkAttachmentLoadOp("loadOp", obj["loadOp"], (o.loadOp));
10012 
10013     parse_VkAttachmentStoreOp("storeOp", obj["storeOp"], (o.storeOp));
10014 
10015     parse_VkAttachmentLoadOp("stencilLoadOp", obj["stencilLoadOp"], (o.stencilLoadOp));
10016 
10017     parse_VkAttachmentStoreOp("stencilStoreOp", obj["stencilStoreOp"], (o.stencilStoreOp));
10018 
10019     parse_VkImageLayout("initialLayout", obj["initialLayout"], (o.initialLayout));
10020 
10021     parse_VkImageLayout("finalLayout", obj["finalLayout"], (o.finalLayout));
10022 }
10023 
parse_VkAttachmentReference2(const char * s,Json::Value & obj,VkAttachmentReference2 & o)10024 static void parse_VkAttachmentReference2(const char *s, Json::Value &obj, VkAttachmentReference2 &o)
10025 {
10026 
10027     parse_VkStructureType("sType", obj["sType"], (o.sType));
10028 
10029     o.pNext = (VkAttachmentReference2 *)parsePNextChain(obj);
10030 
10031     parse_uint32_t("attachment", obj["attachment"], (o.attachment));
10032 
10033     parse_VkImageLayout("layout", obj["layout"], (o.layout));
10034 
10035     parse_VkImageAspectFlags("aspectMask", obj["aspectMask"], (o.aspectMask));
10036 }
10037 
parse_VkSubpassDescription2(const char * s,Json::Value & obj,VkSubpassDescription2 & o)10038 static void parse_VkSubpassDescription2(const char *s, Json::Value &obj, VkSubpassDescription2 &o)
10039 {
10040 
10041     parse_VkStructureType("sType", obj["sType"], (o.sType));
10042 
10043     o.pNext = (VkSubpassDescription2 *)parsePNextChain(obj);
10044 
10045     parse_VkSubpassDescriptionFlags("flags", obj["flags"], (o.flags));
10046 
10047     parse_VkPipelineBindPoint("pipelineBindPoint", obj["pipelineBindPoint"], (o.pipelineBindPoint));
10048 
10049     parse_uint32_t("viewMask", obj["viewMask"], (o.viewMask));
10050 
10051     parse_uint32_t("inputAttachmentCount", obj["inputAttachmentCount"], (o.inputAttachmentCount));
10052 
10053     (o.pInputAttachments) =
10054         (VkAttachmentReference2 *)s_globalMem.allocate((o.inputAttachmentCount), sizeof(VkAttachmentReference2));
10055     Json::Value &obj_pInputAttachments = obj["pInputAttachments"];
10056     if (obj_pInputAttachments.size() == 0)
10057         (o.pInputAttachments) = nullptr;
10058     else
10059     {
10060         for (unsigned int i = 0; i < (o.inputAttachmentCount); i++)
10061         {
10062             parse_VkAttachmentReference2("pInputAttachments", obj_pInputAttachments[i],
10063                                          const_cast<VkAttachmentReference2 &>((o.pInputAttachments[i])));
10064         }
10065     }
10066 
10067     parse_uint32_t("colorAttachmentCount", obj["colorAttachmentCount"], (o.colorAttachmentCount));
10068 
10069     (o.pColorAttachments) =
10070         (VkAttachmentReference2 *)s_globalMem.allocate((o.colorAttachmentCount), sizeof(VkAttachmentReference2));
10071     Json::Value &obj_pColorAttachments = obj["pColorAttachments"];
10072     if (obj_pColorAttachments.size() == 0)
10073         (o.pColorAttachments) = nullptr;
10074     else
10075     {
10076         for (unsigned int i = 0; i < (o.colorAttachmentCount); i++)
10077         {
10078             parse_VkAttachmentReference2("pColorAttachments", obj_pColorAttachments[i],
10079                                          const_cast<VkAttachmentReference2 &>((o.pColorAttachments[i])));
10080         }
10081     }
10082 
10083     (o.pResolveAttachments) =
10084         (VkAttachmentReference2 *)s_globalMem.allocate((o.colorAttachmentCount), sizeof(VkAttachmentReference2));
10085     Json::Value &obj_pResolveAttachments = obj["pResolveAttachments"];
10086     if (obj_pResolveAttachments.size() == 0)
10087         (o.pResolveAttachments) = nullptr;
10088     else
10089     {
10090         for (unsigned int i = 0; i < (o.colorAttachmentCount); i++)
10091         {
10092             parse_VkAttachmentReference2("pResolveAttachments", obj_pResolveAttachments[i],
10093                                          const_cast<VkAttachmentReference2 &>((o.pResolveAttachments[i])));
10094         }
10095     }
10096 
10097     {
10098         Json::Value &obj_pDepthStencilAttachment = obj["pDepthStencilAttachment"];
10099         const int sz                             = obj_pDepthStencilAttachment.size();
10100         if (obj_pDepthStencilAttachment.size() == 0)
10101         {
10102             (o.pDepthStencilAttachment) = nullptr;
10103         }
10104         else
10105         {
10106             (o.pDepthStencilAttachment) =
10107                 (VkAttachmentReference2 *)s_globalMem.allocate(1, sizeof(VkAttachmentReference2));
10108             parse_VkAttachmentReference2("pDepthStencilAttachment", obj_pDepthStencilAttachment,
10109                                          const_cast<VkAttachmentReference2 &>(*(o.pDepthStencilAttachment)));
10110         }
10111     }
10112 
10113     parse_uint32_t("preserveAttachmentCount", obj["preserveAttachmentCount"], (o.preserveAttachmentCount));
10114 
10115     (o.pPreserveAttachments) = (uint32_t *)s_globalMem.allocate((o.preserveAttachmentCount), sizeof(uint32_t));
10116     Json::Value &obj_pPreserveAttachments_arr = obj["pPreserveAttachments"];
10117     for (unsigned int i = 0; i < obj_pPreserveAttachments_arr.size(); i++)
10118     {
10119         parse_uint32_t("pPreserveAttachments", obj_pPreserveAttachments_arr[i],
10120                        const_cast<uint32_t &>((o.pPreserveAttachments[i])));
10121     }
10122 }
10123 
parse_VkSubpassDependency2(const char * s,Json::Value & obj,VkSubpassDependency2 & o)10124 static void parse_VkSubpassDependency2(const char *s, Json::Value &obj, VkSubpassDependency2 &o)
10125 {
10126 
10127     parse_VkStructureType("sType", obj["sType"], (o.sType));
10128 
10129     o.pNext = (VkSubpassDependency2 *)parsePNextChain(obj);
10130 
10131     parse_uint32_t("srcSubpass", obj["srcSubpass"], (o.srcSubpass));
10132 
10133     parse_uint32_t("dstSubpass", obj["dstSubpass"], (o.dstSubpass));
10134 
10135     parse_VkPipelineStageFlags("srcStageMask", obj["srcStageMask"], (o.srcStageMask));
10136 
10137     parse_VkPipelineStageFlags("dstStageMask", obj["dstStageMask"], (o.dstStageMask));
10138 
10139     parse_VkAccessFlags("srcAccessMask", obj["srcAccessMask"], (o.srcAccessMask));
10140 
10141     parse_VkAccessFlags("dstAccessMask", obj["dstAccessMask"], (o.dstAccessMask));
10142 
10143     parse_VkDependencyFlags("dependencyFlags", obj["dependencyFlags"], (o.dependencyFlags));
10144 
10145     parse_int32_t("viewOffset", obj["viewOffset"], (o.viewOffset));
10146 }
10147 
parse_VkRenderPassCreateInfo2(const char * s,Json::Value & obj,VkRenderPassCreateInfo2 & o)10148 static void parse_VkRenderPassCreateInfo2(const char *s, Json::Value &obj, VkRenderPassCreateInfo2 &o)
10149 {
10150 
10151     parse_VkStructureType("sType", obj["sType"], (o.sType));
10152 
10153     o.pNext = (VkRenderPassCreateInfo2 *)parsePNextChain(obj);
10154 
10155     parse_VkRenderPassCreateFlags("flags", obj["flags"], (o.flags));
10156 
10157     parse_uint32_t("attachmentCount", obj["attachmentCount"], (o.attachmentCount));
10158 
10159     (o.pAttachments) =
10160         (VkAttachmentDescription2 *)s_globalMem.allocate((o.attachmentCount), sizeof(VkAttachmentDescription2));
10161     Json::Value &obj_pAttachments = obj["pAttachments"];
10162     if (obj_pAttachments.size() == 0)
10163         (o.pAttachments) = nullptr;
10164     else
10165     {
10166         for (unsigned int i = 0; i < (o.attachmentCount); i++)
10167         {
10168             parse_VkAttachmentDescription2("pAttachments", obj_pAttachments[i],
10169                                            const_cast<VkAttachmentDescription2 &>((o.pAttachments[i])));
10170         }
10171     }
10172 
10173     parse_uint32_t("subpassCount", obj["subpassCount"], (o.subpassCount));
10174 
10175     (o.pSubpasses) = (VkSubpassDescription2 *)s_globalMem.allocate((o.subpassCount), sizeof(VkSubpassDescription2));
10176     Json::Value &obj_pSubpasses = obj["pSubpasses"];
10177     if (obj_pSubpasses.size() == 0)
10178         (o.pSubpasses) = nullptr;
10179     else
10180     {
10181         for (unsigned int i = 0; i < (o.subpassCount); i++)
10182         {
10183             parse_VkSubpassDescription2("pSubpasses", obj_pSubpasses[i],
10184                                         const_cast<VkSubpassDescription2 &>((o.pSubpasses[i])));
10185         }
10186     }
10187 
10188     parse_uint32_t("dependencyCount", obj["dependencyCount"], (o.dependencyCount));
10189 
10190     (o.pDependencies) = (VkSubpassDependency2 *)s_globalMem.allocate((o.dependencyCount), sizeof(VkSubpassDependency2));
10191     Json::Value &obj_pDependencies = obj["pDependencies"];
10192     if (obj_pDependencies.size() == 0)
10193         (o.pDependencies) = nullptr;
10194     else
10195     {
10196         for (unsigned int i = 0; i < (o.dependencyCount); i++)
10197         {
10198             parse_VkSubpassDependency2("pDependencies", obj_pDependencies[i],
10199                                        const_cast<VkSubpassDependency2 &>((o.pDependencies[i])));
10200         }
10201     }
10202 
10203     parse_uint32_t("correlatedViewMaskCount", obj["correlatedViewMaskCount"], (o.correlatedViewMaskCount));
10204 
10205     (o.pCorrelatedViewMasks) = (uint32_t *)s_globalMem.allocate((o.correlatedViewMaskCount), sizeof(uint32_t));
10206     Json::Value &obj_pCorrelatedViewMasks_arr = obj["pCorrelatedViewMasks"];
10207     for (unsigned int i = 0; i < obj_pCorrelatedViewMasks_arr.size(); i++)
10208     {
10209         parse_uint32_t("pCorrelatedViewMasks", obj_pCorrelatedViewMasks_arr[i],
10210                        const_cast<uint32_t &>((o.pCorrelatedViewMasks[i])));
10211     }
10212 }
10213 
parse_VkSubpassBeginInfo(const char * s,Json::Value & obj,VkSubpassBeginInfo & o)10214 static void parse_VkSubpassBeginInfo(const char *s, Json::Value &obj, VkSubpassBeginInfo &o)
10215 {
10216 
10217     parse_VkStructureType("sType", obj["sType"], (o.sType));
10218 
10219     o.pNext = (VkSubpassBeginInfo *)parsePNextChain(obj);
10220 
10221     parse_VkSubpassContents("contents", obj["contents"], (o.contents));
10222 }
10223 
parse_VkSubpassEndInfo(const char * s,Json::Value & obj,VkSubpassEndInfo & o)10224 static void parse_VkSubpassEndInfo(const char *s, Json::Value &obj, VkSubpassEndInfo &o)
10225 {
10226 
10227     parse_VkStructureType("sType", obj["sType"], (o.sType));
10228 
10229     o.pNext = (VkSubpassEndInfo *)parsePNextChain(obj);
10230 }
10231 
parse_VkPhysicalDevice8BitStorageFeatures(const char * s,Json::Value & obj,VkPhysicalDevice8BitStorageFeatures & o)10232 static void parse_VkPhysicalDevice8BitStorageFeatures(const char *s, Json::Value &obj,
10233                                                       VkPhysicalDevice8BitStorageFeatures &o)
10234 {
10235 
10236     parse_VkStructureType("sType", obj["sType"], (o.sType));
10237 
10238     o.pNext = (VkPhysicalDevice8BitStorageFeatures *)parsePNextChain(obj);
10239 
10240     parse_VkBool32("storageBuffer8BitAccess", obj["storageBuffer8BitAccess"], (o.storageBuffer8BitAccess));
10241 
10242     parse_VkBool32("uniformAndStorageBuffer8BitAccess", obj["uniformAndStorageBuffer8BitAccess"],
10243                    (o.uniformAndStorageBuffer8BitAccess));
10244 
10245     parse_VkBool32("storagePushConstant8", obj["storagePushConstant8"], (o.storagePushConstant8));
10246 }
10247 
parse_VkPhysicalDeviceDriverProperties(const char * s,Json::Value & obj,VkPhysicalDeviceDriverProperties & o)10248 static void parse_VkPhysicalDeviceDriverProperties(const char *s, Json::Value &obj, VkPhysicalDeviceDriverProperties &o)
10249 {
10250 
10251     parse_VkStructureType("sType", obj["sType"], (o.sType));
10252 
10253     o.pNext = (VkPhysicalDeviceDriverProperties *)parsePNextChain(obj);
10254 
10255     parse_VkDriverId("driverID", obj["driverID"], (o.driverID));
10256 
10257     /** TODO: Handle this - driverName **/
10258 
10259     /** TODO: Handle this - driverInfo **/
10260 
10261     parse_VkConformanceVersion("conformanceVersion", obj["conformanceVersion"], (o.conformanceVersion));
10262 }
10263 
parse_VkPhysicalDeviceShaderAtomicInt64Features(const char * s,Json::Value & obj,VkPhysicalDeviceShaderAtomicInt64Features & o)10264 static void parse_VkPhysicalDeviceShaderAtomicInt64Features(const char *s, Json::Value &obj,
10265                                                             VkPhysicalDeviceShaderAtomicInt64Features &o)
10266 {
10267 
10268     parse_VkStructureType("sType", obj["sType"], (o.sType));
10269 
10270     o.pNext = (VkPhysicalDeviceShaderAtomicInt64Features *)parsePNextChain(obj);
10271 
10272     parse_VkBool32("shaderBufferInt64Atomics", obj["shaderBufferInt64Atomics"], (o.shaderBufferInt64Atomics));
10273 
10274     parse_VkBool32("shaderSharedInt64Atomics", obj["shaderSharedInt64Atomics"], (o.shaderSharedInt64Atomics));
10275 }
10276 
parse_VkPhysicalDeviceShaderFloat16Int8Features(const char * s,Json::Value & obj,VkPhysicalDeviceShaderFloat16Int8Features & o)10277 static void parse_VkPhysicalDeviceShaderFloat16Int8Features(const char *s, Json::Value &obj,
10278                                                             VkPhysicalDeviceShaderFloat16Int8Features &o)
10279 {
10280 
10281     parse_VkStructureType("sType", obj["sType"], (o.sType));
10282 
10283     o.pNext = (VkPhysicalDeviceShaderFloat16Int8Features *)parsePNextChain(obj);
10284 
10285     parse_VkBool32("shaderFloat16", obj["shaderFloat16"], (o.shaderFloat16));
10286 
10287     parse_VkBool32("shaderInt8", obj["shaderInt8"], (o.shaderInt8));
10288 }
10289 
parse_VkPhysicalDeviceFloatControlsProperties(const char * s,Json::Value & obj,VkPhysicalDeviceFloatControlsProperties & o)10290 static void parse_VkPhysicalDeviceFloatControlsProperties(const char *s, Json::Value &obj,
10291                                                           VkPhysicalDeviceFloatControlsProperties &o)
10292 {
10293 
10294     parse_VkStructureType("sType", obj["sType"], (o.sType));
10295 
10296     o.pNext = (VkPhysicalDeviceFloatControlsProperties *)parsePNextChain(obj);
10297 
10298     parse_VkShaderFloatControlsIndependence("denormBehaviorIndependence", obj["denormBehaviorIndependence"],
10299                                             (o.denormBehaviorIndependence));
10300 
10301     parse_VkShaderFloatControlsIndependence("roundingModeIndependence", obj["roundingModeIndependence"],
10302                                             (o.roundingModeIndependence));
10303 
10304     parse_VkBool32("shaderSignedZeroInfNanPreserveFloat16", obj["shaderSignedZeroInfNanPreserveFloat16"],
10305                    (o.shaderSignedZeroInfNanPreserveFloat16));
10306 
10307     parse_VkBool32("shaderSignedZeroInfNanPreserveFloat32", obj["shaderSignedZeroInfNanPreserveFloat32"],
10308                    (o.shaderSignedZeroInfNanPreserveFloat32));
10309 
10310     parse_VkBool32("shaderSignedZeroInfNanPreserveFloat64", obj["shaderSignedZeroInfNanPreserveFloat64"],
10311                    (o.shaderSignedZeroInfNanPreserveFloat64));
10312 
10313     parse_VkBool32("shaderDenormPreserveFloat16", obj["shaderDenormPreserveFloat16"], (o.shaderDenormPreserveFloat16));
10314 
10315     parse_VkBool32("shaderDenormPreserveFloat32", obj["shaderDenormPreserveFloat32"], (o.shaderDenormPreserveFloat32));
10316 
10317     parse_VkBool32("shaderDenormPreserveFloat64", obj["shaderDenormPreserveFloat64"], (o.shaderDenormPreserveFloat64));
10318 
10319     parse_VkBool32("shaderDenormFlushToZeroFloat16", obj["shaderDenormFlushToZeroFloat16"],
10320                    (o.shaderDenormFlushToZeroFloat16));
10321 
10322     parse_VkBool32("shaderDenormFlushToZeroFloat32", obj["shaderDenormFlushToZeroFloat32"],
10323                    (o.shaderDenormFlushToZeroFloat32));
10324 
10325     parse_VkBool32("shaderDenormFlushToZeroFloat64", obj["shaderDenormFlushToZeroFloat64"],
10326                    (o.shaderDenormFlushToZeroFloat64));
10327 
10328     parse_VkBool32("shaderRoundingModeRTEFloat16", obj["shaderRoundingModeRTEFloat16"],
10329                    (o.shaderRoundingModeRTEFloat16));
10330 
10331     parse_VkBool32("shaderRoundingModeRTEFloat32", obj["shaderRoundingModeRTEFloat32"],
10332                    (o.shaderRoundingModeRTEFloat32));
10333 
10334     parse_VkBool32("shaderRoundingModeRTEFloat64", obj["shaderRoundingModeRTEFloat64"],
10335                    (o.shaderRoundingModeRTEFloat64));
10336 
10337     parse_VkBool32("shaderRoundingModeRTZFloat16", obj["shaderRoundingModeRTZFloat16"],
10338                    (o.shaderRoundingModeRTZFloat16));
10339 
10340     parse_VkBool32("shaderRoundingModeRTZFloat32", obj["shaderRoundingModeRTZFloat32"],
10341                    (o.shaderRoundingModeRTZFloat32));
10342 
10343     parse_VkBool32("shaderRoundingModeRTZFloat64", obj["shaderRoundingModeRTZFloat64"],
10344                    (o.shaderRoundingModeRTZFloat64));
10345 }
10346 
parse_VkDescriptorSetLayoutBindingFlagsCreateInfo(const char * s,Json::Value & obj,VkDescriptorSetLayoutBindingFlagsCreateInfo & o)10347 static void parse_VkDescriptorSetLayoutBindingFlagsCreateInfo(const char *s, Json::Value &obj,
10348                                                               VkDescriptorSetLayoutBindingFlagsCreateInfo &o)
10349 {
10350 
10351     parse_VkStructureType("sType", obj["sType"], (o.sType));
10352 
10353     o.pNext = (VkDescriptorSetLayoutBindingFlagsCreateInfo *)parsePNextChain(obj);
10354 
10355     parse_uint32_t("bindingCount", obj["bindingCount"], (o.bindingCount));
10356 
10357     (o.pBindingFlags) =
10358         (VkDescriptorBindingFlags *)s_globalMem.allocate((o.bindingCount), sizeof(VkDescriptorBindingFlags));
10359     Json::Value &obj_pBindingFlags_arr = obj["pBindingFlags"];
10360     for (unsigned int i = 0; i < obj_pBindingFlags_arr.size(); i++)
10361     {
10362         parse_VkDescriptorBindingFlags("pBindingFlags", obj_pBindingFlags_arr[i],
10363                                        const_cast<VkDescriptorBindingFlags &>((o.pBindingFlags[i])));
10364     }
10365 }
10366 
parse_VkPhysicalDeviceDescriptorIndexingFeatures(const char * s,Json::Value & obj,VkPhysicalDeviceDescriptorIndexingFeatures & o)10367 static void parse_VkPhysicalDeviceDescriptorIndexingFeatures(const char *s, Json::Value &obj,
10368                                                              VkPhysicalDeviceDescriptorIndexingFeatures &o)
10369 {
10370 
10371     parse_VkStructureType("sType", obj["sType"], (o.sType));
10372 
10373     o.pNext = (VkPhysicalDeviceDescriptorIndexingFeatures *)parsePNextChain(obj);
10374 
10375     parse_VkBool32("shaderInputAttachmentArrayDynamicIndexing", obj["shaderInputAttachmentArrayDynamicIndexing"],
10376                    (o.shaderInputAttachmentArrayDynamicIndexing));
10377 
10378     parse_VkBool32("shaderUniformTexelBufferArrayDynamicIndexing", obj["shaderUniformTexelBufferArrayDynamicIndexing"],
10379                    (o.shaderUniformTexelBufferArrayDynamicIndexing));
10380 
10381     parse_VkBool32("shaderStorageTexelBufferArrayDynamicIndexing", obj["shaderStorageTexelBufferArrayDynamicIndexing"],
10382                    (o.shaderStorageTexelBufferArrayDynamicIndexing));
10383 
10384     parse_VkBool32("shaderUniformBufferArrayNonUniformIndexing", obj["shaderUniformBufferArrayNonUniformIndexing"],
10385                    (o.shaderUniformBufferArrayNonUniformIndexing));
10386 
10387     parse_VkBool32("shaderSampledImageArrayNonUniformIndexing", obj["shaderSampledImageArrayNonUniformIndexing"],
10388                    (o.shaderSampledImageArrayNonUniformIndexing));
10389 
10390     parse_VkBool32("shaderStorageBufferArrayNonUniformIndexing", obj["shaderStorageBufferArrayNonUniformIndexing"],
10391                    (o.shaderStorageBufferArrayNonUniformIndexing));
10392 
10393     parse_VkBool32("shaderStorageImageArrayNonUniformIndexing", obj["shaderStorageImageArrayNonUniformIndexing"],
10394                    (o.shaderStorageImageArrayNonUniformIndexing));
10395 
10396     parse_VkBool32("shaderInputAttachmentArrayNonUniformIndexing", obj["shaderInputAttachmentArrayNonUniformIndexing"],
10397                    (o.shaderInputAttachmentArrayNonUniformIndexing));
10398 
10399     parse_VkBool32("shaderUniformTexelBufferArrayNonUniformIndexing",
10400                    obj["shaderUniformTexelBufferArrayNonUniformIndexing"],
10401                    (o.shaderUniformTexelBufferArrayNonUniformIndexing));
10402 
10403     parse_VkBool32("shaderStorageTexelBufferArrayNonUniformIndexing",
10404                    obj["shaderStorageTexelBufferArrayNonUniformIndexing"],
10405                    (o.shaderStorageTexelBufferArrayNonUniformIndexing));
10406 
10407     parse_VkBool32("descriptorBindingUniformBufferUpdateAfterBind",
10408                    obj["descriptorBindingUniformBufferUpdateAfterBind"],
10409                    (o.descriptorBindingUniformBufferUpdateAfterBind));
10410 
10411     parse_VkBool32("descriptorBindingSampledImageUpdateAfterBind", obj["descriptorBindingSampledImageUpdateAfterBind"],
10412                    (o.descriptorBindingSampledImageUpdateAfterBind));
10413 
10414     parse_VkBool32("descriptorBindingStorageImageUpdateAfterBind", obj["descriptorBindingStorageImageUpdateAfterBind"],
10415                    (o.descriptorBindingStorageImageUpdateAfterBind));
10416 
10417     parse_VkBool32("descriptorBindingStorageBufferUpdateAfterBind",
10418                    obj["descriptorBindingStorageBufferUpdateAfterBind"],
10419                    (o.descriptorBindingStorageBufferUpdateAfterBind));
10420 
10421     parse_VkBool32("descriptorBindingUniformTexelBufferUpdateAfterBind",
10422                    obj["descriptorBindingUniformTexelBufferUpdateAfterBind"],
10423                    (o.descriptorBindingUniformTexelBufferUpdateAfterBind));
10424 
10425     parse_VkBool32("descriptorBindingStorageTexelBufferUpdateAfterBind",
10426                    obj["descriptorBindingStorageTexelBufferUpdateAfterBind"],
10427                    (o.descriptorBindingStorageTexelBufferUpdateAfterBind));
10428 
10429     parse_VkBool32("descriptorBindingUpdateUnusedWhilePending", obj["descriptorBindingUpdateUnusedWhilePending"],
10430                    (o.descriptorBindingUpdateUnusedWhilePending));
10431 
10432     parse_VkBool32("descriptorBindingPartiallyBound", obj["descriptorBindingPartiallyBound"],
10433                    (o.descriptorBindingPartiallyBound));
10434 
10435     parse_VkBool32("descriptorBindingVariableDescriptorCount", obj["descriptorBindingVariableDescriptorCount"],
10436                    (o.descriptorBindingVariableDescriptorCount));
10437 
10438     parse_VkBool32("runtimeDescriptorArray", obj["runtimeDescriptorArray"], (o.runtimeDescriptorArray));
10439 }
10440 
parse_VkPhysicalDeviceDescriptorIndexingProperties(const char * s,Json::Value & obj,VkPhysicalDeviceDescriptorIndexingProperties & o)10441 static void parse_VkPhysicalDeviceDescriptorIndexingProperties(const char *s, Json::Value &obj,
10442                                                                VkPhysicalDeviceDescriptorIndexingProperties &o)
10443 {
10444 
10445     parse_VkStructureType("sType", obj["sType"], (o.sType));
10446 
10447     o.pNext = (VkPhysicalDeviceDescriptorIndexingProperties *)parsePNextChain(obj);
10448 
10449     parse_uint32_t("maxUpdateAfterBindDescriptorsInAllPools", obj["maxUpdateAfterBindDescriptorsInAllPools"],
10450                    (o.maxUpdateAfterBindDescriptorsInAllPools));
10451 
10452     parse_VkBool32("shaderUniformBufferArrayNonUniformIndexingNative",
10453                    obj["shaderUniformBufferArrayNonUniformIndexingNative"],
10454                    (o.shaderUniformBufferArrayNonUniformIndexingNative));
10455 
10456     parse_VkBool32("shaderSampledImageArrayNonUniformIndexingNative",
10457                    obj["shaderSampledImageArrayNonUniformIndexingNative"],
10458                    (o.shaderSampledImageArrayNonUniformIndexingNative));
10459 
10460     parse_VkBool32("shaderStorageBufferArrayNonUniformIndexingNative",
10461                    obj["shaderStorageBufferArrayNonUniformIndexingNative"],
10462                    (o.shaderStorageBufferArrayNonUniformIndexingNative));
10463 
10464     parse_VkBool32("shaderStorageImageArrayNonUniformIndexingNative",
10465                    obj["shaderStorageImageArrayNonUniformIndexingNative"],
10466                    (o.shaderStorageImageArrayNonUniformIndexingNative));
10467 
10468     parse_VkBool32("shaderInputAttachmentArrayNonUniformIndexingNative",
10469                    obj["shaderInputAttachmentArrayNonUniformIndexingNative"],
10470                    (o.shaderInputAttachmentArrayNonUniformIndexingNative));
10471 
10472     parse_VkBool32("robustBufferAccessUpdateAfterBind", obj["robustBufferAccessUpdateAfterBind"],
10473                    (o.robustBufferAccessUpdateAfterBind));
10474 
10475     parse_VkBool32("quadDivergentImplicitLod", obj["quadDivergentImplicitLod"], (o.quadDivergentImplicitLod));
10476 
10477     parse_uint32_t("maxPerStageDescriptorUpdateAfterBindSamplers", obj["maxPerStageDescriptorUpdateAfterBindSamplers"],
10478                    (o.maxPerStageDescriptorUpdateAfterBindSamplers));
10479 
10480     parse_uint32_t("maxPerStageDescriptorUpdateAfterBindUniformBuffers",
10481                    obj["maxPerStageDescriptorUpdateAfterBindUniformBuffers"],
10482                    (o.maxPerStageDescriptorUpdateAfterBindUniformBuffers));
10483 
10484     parse_uint32_t("maxPerStageDescriptorUpdateAfterBindStorageBuffers",
10485                    obj["maxPerStageDescriptorUpdateAfterBindStorageBuffers"],
10486                    (o.maxPerStageDescriptorUpdateAfterBindStorageBuffers));
10487 
10488     parse_uint32_t("maxPerStageDescriptorUpdateAfterBindSampledImages",
10489                    obj["maxPerStageDescriptorUpdateAfterBindSampledImages"],
10490                    (o.maxPerStageDescriptorUpdateAfterBindSampledImages));
10491 
10492     parse_uint32_t("maxPerStageDescriptorUpdateAfterBindStorageImages",
10493                    obj["maxPerStageDescriptorUpdateAfterBindStorageImages"],
10494                    (o.maxPerStageDescriptorUpdateAfterBindStorageImages));
10495 
10496     parse_uint32_t("maxPerStageDescriptorUpdateAfterBindInputAttachments",
10497                    obj["maxPerStageDescriptorUpdateAfterBindInputAttachments"],
10498                    (o.maxPerStageDescriptorUpdateAfterBindInputAttachments));
10499 
10500     parse_uint32_t("maxPerStageUpdateAfterBindResources", obj["maxPerStageUpdateAfterBindResources"],
10501                    (o.maxPerStageUpdateAfterBindResources));
10502 
10503     parse_uint32_t("maxDescriptorSetUpdateAfterBindSamplers", obj["maxDescriptorSetUpdateAfterBindSamplers"],
10504                    (o.maxDescriptorSetUpdateAfterBindSamplers));
10505 
10506     parse_uint32_t("maxDescriptorSetUpdateAfterBindUniformBuffers",
10507                    obj["maxDescriptorSetUpdateAfterBindUniformBuffers"],
10508                    (o.maxDescriptorSetUpdateAfterBindUniformBuffers));
10509 
10510     parse_uint32_t("maxDescriptorSetUpdateAfterBindUniformBuffersDynamic",
10511                    obj["maxDescriptorSetUpdateAfterBindUniformBuffersDynamic"],
10512                    (o.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic));
10513 
10514     parse_uint32_t("maxDescriptorSetUpdateAfterBindStorageBuffers",
10515                    obj["maxDescriptorSetUpdateAfterBindStorageBuffers"],
10516                    (o.maxDescriptorSetUpdateAfterBindStorageBuffers));
10517 
10518     parse_uint32_t("maxDescriptorSetUpdateAfterBindStorageBuffersDynamic",
10519                    obj["maxDescriptorSetUpdateAfterBindStorageBuffersDynamic"],
10520                    (o.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic));
10521 
10522     parse_uint32_t("maxDescriptorSetUpdateAfterBindSampledImages", obj["maxDescriptorSetUpdateAfterBindSampledImages"],
10523                    (o.maxDescriptorSetUpdateAfterBindSampledImages));
10524 
10525     parse_uint32_t("maxDescriptorSetUpdateAfterBindStorageImages", obj["maxDescriptorSetUpdateAfterBindStorageImages"],
10526                    (o.maxDescriptorSetUpdateAfterBindStorageImages));
10527 
10528     parse_uint32_t("maxDescriptorSetUpdateAfterBindInputAttachments",
10529                    obj["maxDescriptorSetUpdateAfterBindInputAttachments"],
10530                    (o.maxDescriptorSetUpdateAfterBindInputAttachments));
10531 }
10532 
parse_VkDescriptorSetVariableDescriptorCountAllocateInfo(const char * s,Json::Value & obj,VkDescriptorSetVariableDescriptorCountAllocateInfo & o)10533 static void parse_VkDescriptorSetVariableDescriptorCountAllocateInfo(
10534     const char *s, Json::Value &obj, VkDescriptorSetVariableDescriptorCountAllocateInfo &o)
10535 {
10536 
10537     parse_VkStructureType("sType", obj["sType"], (o.sType));
10538 
10539     o.pNext = (VkDescriptorSetVariableDescriptorCountAllocateInfo *)parsePNextChain(obj);
10540 
10541     parse_uint32_t("descriptorSetCount", obj["descriptorSetCount"], (o.descriptorSetCount));
10542 
10543     (o.pDescriptorCounts)                  = (uint32_t *)s_globalMem.allocate((o.descriptorSetCount), sizeof(uint32_t));
10544     Json::Value &obj_pDescriptorCounts_arr = obj["pDescriptorCounts"];
10545     for (unsigned int i = 0; i < obj_pDescriptorCounts_arr.size(); i++)
10546     {
10547         parse_uint32_t("pDescriptorCounts", obj_pDescriptorCounts_arr[i],
10548                        const_cast<uint32_t &>((o.pDescriptorCounts[i])));
10549     }
10550 }
10551 
parse_VkDescriptorSetVariableDescriptorCountLayoutSupport(const char * s,Json::Value & obj,VkDescriptorSetVariableDescriptorCountLayoutSupport & o)10552 static void parse_VkDescriptorSetVariableDescriptorCountLayoutSupport(
10553     const char *s, Json::Value &obj, VkDescriptorSetVariableDescriptorCountLayoutSupport &o)
10554 {
10555 
10556     parse_VkStructureType("sType", obj["sType"], (o.sType));
10557 
10558     o.pNext = (VkDescriptorSetVariableDescriptorCountLayoutSupport *)parsePNextChain(obj);
10559 
10560     parse_uint32_t("maxVariableDescriptorCount", obj["maxVariableDescriptorCount"], (o.maxVariableDescriptorCount));
10561 }
10562 
parse_VkSubpassDescriptionDepthStencilResolve(const char * s,Json::Value & obj,VkSubpassDescriptionDepthStencilResolve & o)10563 static void parse_VkSubpassDescriptionDepthStencilResolve(const char *s, Json::Value &obj,
10564                                                           VkSubpassDescriptionDepthStencilResolve &o)
10565 {
10566 
10567     parse_VkStructureType("sType", obj["sType"], (o.sType));
10568 
10569     o.pNext = (VkSubpassDescriptionDepthStencilResolve *)parsePNextChain(obj);
10570 
10571     parse_VkResolveModeFlagBits("depthResolveMode", obj["depthResolveMode"], (o.depthResolveMode));
10572 
10573     parse_VkResolveModeFlagBits("stencilResolveMode", obj["stencilResolveMode"], (o.stencilResolveMode));
10574 
10575     {
10576         Json::Value &obj_pDepthStencilResolveAttachment = obj["pDepthStencilResolveAttachment"];
10577         const int sz                                    = obj_pDepthStencilResolveAttachment.size();
10578         if (obj_pDepthStencilResolveAttachment.size() == 0)
10579         {
10580             (o.pDepthStencilResolveAttachment) = nullptr;
10581         }
10582         else
10583         {
10584             (o.pDepthStencilResolveAttachment) =
10585                 (VkAttachmentReference2 *)s_globalMem.allocate(1, sizeof(VkAttachmentReference2));
10586             parse_VkAttachmentReference2("pDepthStencilResolveAttachment", obj_pDepthStencilResolveAttachment,
10587                                          const_cast<VkAttachmentReference2 &>(*(o.pDepthStencilResolveAttachment)));
10588         }
10589     }
10590 }
10591 
parse_VkPhysicalDeviceDepthStencilResolveProperties(const char * s,Json::Value & obj,VkPhysicalDeviceDepthStencilResolveProperties & o)10592 static void parse_VkPhysicalDeviceDepthStencilResolveProperties(const char *s, Json::Value &obj,
10593                                                                 VkPhysicalDeviceDepthStencilResolveProperties &o)
10594 {
10595 
10596     parse_VkStructureType("sType", obj["sType"], (o.sType));
10597 
10598     o.pNext = (VkPhysicalDeviceDepthStencilResolveProperties *)parsePNextChain(obj);
10599 
10600     parse_VkResolveModeFlags("supportedDepthResolveModes", obj["supportedDepthResolveModes"],
10601                              (o.supportedDepthResolveModes));
10602 
10603     parse_VkResolveModeFlags("supportedStencilResolveModes", obj["supportedStencilResolveModes"],
10604                              (o.supportedStencilResolveModes));
10605 
10606     parse_VkBool32("independentResolveNone", obj["independentResolveNone"], (o.independentResolveNone));
10607 
10608     parse_VkBool32("independentResolve", obj["independentResolve"], (o.independentResolve));
10609 }
10610 
parse_VkPhysicalDeviceScalarBlockLayoutFeatures(const char * s,Json::Value & obj,VkPhysicalDeviceScalarBlockLayoutFeatures & o)10611 static void parse_VkPhysicalDeviceScalarBlockLayoutFeatures(const char *s, Json::Value &obj,
10612                                                             VkPhysicalDeviceScalarBlockLayoutFeatures &o)
10613 {
10614 
10615     parse_VkStructureType("sType", obj["sType"], (o.sType));
10616 
10617     o.pNext = (VkPhysicalDeviceScalarBlockLayoutFeatures *)parsePNextChain(obj);
10618 
10619     parse_VkBool32("scalarBlockLayout", obj["scalarBlockLayout"], (o.scalarBlockLayout));
10620 }
10621 
parse_VkImageStencilUsageCreateInfo(const char * s,Json::Value & obj,VkImageStencilUsageCreateInfo & o)10622 static void parse_VkImageStencilUsageCreateInfo(const char *s, Json::Value &obj, VkImageStencilUsageCreateInfo &o)
10623 {
10624 
10625     parse_VkStructureType("sType", obj["sType"], (o.sType));
10626 
10627     o.pNext = (VkImageStencilUsageCreateInfo *)parsePNextChain(obj);
10628 
10629     parse_VkImageUsageFlags("stencilUsage", obj["stencilUsage"], (o.stencilUsage));
10630 }
10631 
parse_VkSamplerReductionModeCreateInfo(const char * s,Json::Value & obj,VkSamplerReductionModeCreateInfo & o)10632 static void parse_VkSamplerReductionModeCreateInfo(const char *s, Json::Value &obj, VkSamplerReductionModeCreateInfo &o)
10633 {
10634 
10635     parse_VkStructureType("sType", obj["sType"], (o.sType));
10636 
10637     o.pNext = (VkSamplerReductionModeCreateInfo *)parsePNextChain(obj);
10638 
10639     parse_VkSamplerReductionMode("reductionMode", obj["reductionMode"], (o.reductionMode));
10640 }
10641 
parse_VkPhysicalDeviceSamplerFilterMinmaxProperties(const char * s,Json::Value & obj,VkPhysicalDeviceSamplerFilterMinmaxProperties & o)10642 static void parse_VkPhysicalDeviceSamplerFilterMinmaxProperties(const char *s, Json::Value &obj,
10643                                                                 VkPhysicalDeviceSamplerFilterMinmaxProperties &o)
10644 {
10645 
10646     parse_VkStructureType("sType", obj["sType"], (o.sType));
10647 
10648     o.pNext = (VkPhysicalDeviceSamplerFilterMinmaxProperties *)parsePNextChain(obj);
10649 
10650     parse_VkBool32("filterMinmaxSingleComponentFormats", obj["filterMinmaxSingleComponentFormats"],
10651                    (o.filterMinmaxSingleComponentFormats));
10652 
10653     parse_VkBool32("filterMinmaxImageComponentMapping", obj["filterMinmaxImageComponentMapping"],
10654                    (o.filterMinmaxImageComponentMapping));
10655 }
10656 
parse_VkPhysicalDeviceVulkanMemoryModelFeatures(const char * s,Json::Value & obj,VkPhysicalDeviceVulkanMemoryModelFeatures & o)10657 static void parse_VkPhysicalDeviceVulkanMemoryModelFeatures(const char *s, Json::Value &obj,
10658                                                             VkPhysicalDeviceVulkanMemoryModelFeatures &o)
10659 {
10660 
10661     parse_VkStructureType("sType", obj["sType"], (o.sType));
10662 
10663     o.pNext = (VkPhysicalDeviceVulkanMemoryModelFeatures *)parsePNextChain(obj);
10664 
10665     parse_VkBool32("vulkanMemoryModel", obj["vulkanMemoryModel"], (o.vulkanMemoryModel));
10666 
10667     parse_VkBool32("vulkanMemoryModelDeviceScope", obj["vulkanMemoryModelDeviceScope"],
10668                    (o.vulkanMemoryModelDeviceScope));
10669 
10670     parse_VkBool32("vulkanMemoryModelAvailabilityVisibilityChains",
10671                    obj["vulkanMemoryModelAvailabilityVisibilityChains"],
10672                    (o.vulkanMemoryModelAvailabilityVisibilityChains));
10673 }
10674 
parse_VkPhysicalDeviceImagelessFramebufferFeatures(const char * s,Json::Value & obj,VkPhysicalDeviceImagelessFramebufferFeatures & o)10675 static void parse_VkPhysicalDeviceImagelessFramebufferFeatures(const char *s, Json::Value &obj,
10676                                                                VkPhysicalDeviceImagelessFramebufferFeatures &o)
10677 {
10678 
10679     parse_VkStructureType("sType", obj["sType"], (o.sType));
10680 
10681     o.pNext = (VkPhysicalDeviceImagelessFramebufferFeatures *)parsePNextChain(obj);
10682 
10683     parse_VkBool32("imagelessFramebuffer", obj["imagelessFramebuffer"], (o.imagelessFramebuffer));
10684 }
10685 
parse_VkFramebufferAttachmentImageInfo(const char * s,Json::Value & obj,VkFramebufferAttachmentImageInfo & o)10686 static void parse_VkFramebufferAttachmentImageInfo(const char *s, Json::Value &obj, VkFramebufferAttachmentImageInfo &o)
10687 {
10688 
10689     parse_VkStructureType("sType", obj["sType"], (o.sType));
10690 
10691     o.pNext = (VkFramebufferAttachmentImageInfo *)parsePNextChain(obj);
10692 
10693     parse_VkImageCreateFlags("flags", obj["flags"], (o.flags));
10694 
10695     parse_VkImageUsageFlags("usage", obj["usage"], (o.usage));
10696 
10697     parse_uint32_t("width", obj["width"], (o.width));
10698 
10699     parse_uint32_t("height", obj["height"], (o.height));
10700 
10701     parse_uint32_t("layerCount", obj["layerCount"], (o.layerCount));
10702 
10703     parse_uint32_t("viewFormatCount", obj["viewFormatCount"], (o.viewFormatCount));
10704 
10705     (o.pViewFormats)                  = (VkFormat *)s_globalMem.allocate((o.viewFormatCount), sizeof(VkFormat));
10706     Json::Value &obj_pViewFormats_arr = obj["pViewFormats"];
10707     for (unsigned int i = 0; i < obj_pViewFormats_arr.size(); i++)
10708     {
10709         parse_VkFormat("pViewFormats", obj_pViewFormats_arr[i], const_cast<VkFormat &>((o.pViewFormats[i])));
10710     }
10711 }
10712 
parse_VkFramebufferAttachmentsCreateInfo(const char * s,Json::Value & obj,VkFramebufferAttachmentsCreateInfo & o)10713 static void parse_VkFramebufferAttachmentsCreateInfo(const char *s, Json::Value &obj,
10714                                                      VkFramebufferAttachmentsCreateInfo &o)
10715 {
10716 
10717     parse_VkStructureType("sType", obj["sType"], (o.sType));
10718 
10719     o.pNext = (VkFramebufferAttachmentsCreateInfo *)parsePNextChain(obj);
10720 
10721     parse_uint32_t("attachmentImageInfoCount", obj["attachmentImageInfoCount"], (o.attachmentImageInfoCount));
10722 
10723     (o.pAttachmentImageInfos) = (VkFramebufferAttachmentImageInfo *)s_globalMem.allocate(
10724         (o.attachmentImageInfoCount), sizeof(VkFramebufferAttachmentImageInfo));
10725     Json::Value &obj_pAttachmentImageInfos = obj["pAttachmentImageInfos"];
10726     if (obj_pAttachmentImageInfos.size() == 0)
10727         (o.pAttachmentImageInfos) = nullptr;
10728     else
10729     {
10730         for (unsigned int i = 0; i < (o.attachmentImageInfoCount); i++)
10731         {
10732             parse_VkFramebufferAttachmentImageInfo(
10733                 "pAttachmentImageInfos", obj_pAttachmentImageInfos[i],
10734                 const_cast<VkFramebufferAttachmentImageInfo &>((o.pAttachmentImageInfos[i])));
10735         }
10736     }
10737 }
10738 
parse_VkRenderPassAttachmentBeginInfo(const char * s,Json::Value & obj,VkRenderPassAttachmentBeginInfo & o)10739 static void parse_VkRenderPassAttachmentBeginInfo(const char *s, Json::Value &obj, VkRenderPassAttachmentBeginInfo &o)
10740 {
10741 
10742     parse_VkStructureType("sType", obj["sType"], (o.sType));
10743 
10744     o.pNext = (VkRenderPassAttachmentBeginInfo *)parsePNextChain(obj);
10745 
10746     parse_uint32_t("attachmentCount", obj["attachmentCount"], (o.attachmentCount));
10747 
10748     (o.pAttachments)                  = (VkImageView *)s_globalMem.allocate((o.attachmentCount), sizeof(VkImageView));
10749     Json::Value &obj_pAttachments_arr = obj["pAttachments"];
10750     for (unsigned int i = 0; i < obj_pAttachments_arr.size(); i++)
10751     {
10752         parse_VkImageView("pAttachments", obj_pAttachments_arr[i], const_cast<VkImageView &>((o.pAttachments[i])));
10753     }
10754 }
10755 
parse_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(const char * s,Json::Value & obj,VkPhysicalDeviceUniformBufferStandardLayoutFeatures & o)10756 static void parse_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
10757     const char *s, Json::Value &obj, VkPhysicalDeviceUniformBufferStandardLayoutFeatures &o)
10758 {
10759 
10760     parse_VkStructureType("sType", obj["sType"], (o.sType));
10761 
10762     o.pNext = (VkPhysicalDeviceUniformBufferStandardLayoutFeatures *)parsePNextChain(obj);
10763 
10764     parse_VkBool32("uniformBufferStandardLayout", obj["uniformBufferStandardLayout"], (o.uniformBufferStandardLayout));
10765 }
10766 
parse_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(const char * s,Json::Value & obj,VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures & o)10767 static void parse_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
10768     const char *s, Json::Value &obj, VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures &o)
10769 {
10770 
10771     parse_VkStructureType("sType", obj["sType"], (o.sType));
10772 
10773     o.pNext = (VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *)parsePNextChain(obj);
10774 
10775     parse_VkBool32("shaderSubgroupExtendedTypes", obj["shaderSubgroupExtendedTypes"], (o.shaderSubgroupExtendedTypes));
10776 }
10777 
parse_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(const char * s,Json::Value & obj,VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures & o)10778 static void parse_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
10779     const char *s, Json::Value &obj, VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures &o)
10780 {
10781 
10782     parse_VkStructureType("sType", obj["sType"], (o.sType));
10783 
10784     o.pNext = (VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *)parsePNextChain(obj);
10785 
10786     parse_VkBool32("separateDepthStencilLayouts", obj["separateDepthStencilLayouts"], (o.separateDepthStencilLayouts));
10787 }
10788 
parse_VkAttachmentReferenceStencilLayout(const char * s,Json::Value & obj,VkAttachmentReferenceStencilLayout & o)10789 static void parse_VkAttachmentReferenceStencilLayout(const char *s, Json::Value &obj,
10790                                                      VkAttachmentReferenceStencilLayout &o)
10791 {
10792 
10793     parse_VkStructureType("sType", obj["sType"], (o.sType));
10794 
10795     o.pNext = (VkAttachmentReferenceStencilLayout *)parsePNextChain(obj);
10796 
10797     parse_VkImageLayout("stencilLayout", obj["stencilLayout"], (o.stencilLayout));
10798 }
10799 
parse_VkAttachmentDescriptionStencilLayout(const char * s,Json::Value & obj,VkAttachmentDescriptionStencilLayout & o)10800 static void parse_VkAttachmentDescriptionStencilLayout(const char *s, Json::Value &obj,
10801                                                        VkAttachmentDescriptionStencilLayout &o)
10802 {
10803 
10804     parse_VkStructureType("sType", obj["sType"], (o.sType));
10805 
10806     o.pNext = (VkAttachmentDescriptionStencilLayout *)parsePNextChain(obj);
10807 
10808     parse_VkImageLayout("stencilInitialLayout", obj["stencilInitialLayout"], (o.stencilInitialLayout));
10809 
10810     parse_VkImageLayout("stencilFinalLayout", obj["stencilFinalLayout"], (o.stencilFinalLayout));
10811 }
10812 
parse_VkPhysicalDeviceHostQueryResetFeatures(const char * s,Json::Value & obj,VkPhysicalDeviceHostQueryResetFeatures & o)10813 static void parse_VkPhysicalDeviceHostQueryResetFeatures(const char *s, Json::Value &obj,
10814                                                          VkPhysicalDeviceHostQueryResetFeatures &o)
10815 {
10816 
10817     parse_VkStructureType("sType", obj["sType"], (o.sType));
10818 
10819     o.pNext = (VkPhysicalDeviceHostQueryResetFeatures *)parsePNextChain(obj);
10820 
10821     parse_VkBool32("hostQueryReset", obj["hostQueryReset"], (o.hostQueryReset));
10822 }
10823 
parse_VkPhysicalDeviceTimelineSemaphoreFeatures(const char * s,Json::Value & obj,VkPhysicalDeviceTimelineSemaphoreFeatures & o)10824 static void parse_VkPhysicalDeviceTimelineSemaphoreFeatures(const char *s, Json::Value &obj,
10825                                                             VkPhysicalDeviceTimelineSemaphoreFeatures &o)
10826 {
10827 
10828     parse_VkStructureType("sType", obj["sType"], (o.sType));
10829 
10830     o.pNext = (VkPhysicalDeviceTimelineSemaphoreFeatures *)parsePNextChain(obj);
10831 
10832     parse_VkBool32("timelineSemaphore", obj["timelineSemaphore"], (o.timelineSemaphore));
10833 }
10834 
parse_VkPhysicalDeviceTimelineSemaphoreProperties(const char * s,Json::Value & obj,VkPhysicalDeviceTimelineSemaphoreProperties & o)10835 static void parse_VkPhysicalDeviceTimelineSemaphoreProperties(const char *s, Json::Value &obj,
10836                                                               VkPhysicalDeviceTimelineSemaphoreProperties &o)
10837 {
10838 
10839     parse_VkStructureType("sType", obj["sType"], (o.sType));
10840 
10841     o.pNext = (VkPhysicalDeviceTimelineSemaphoreProperties *)parsePNextChain(obj);
10842 
10843     parse_uint64_t("maxTimelineSemaphoreValueDifference", obj["maxTimelineSemaphoreValueDifference"],
10844                    (o.maxTimelineSemaphoreValueDifference));
10845 }
10846 
parse_VkSemaphoreTypeCreateInfo(const char * s,Json::Value & obj,VkSemaphoreTypeCreateInfo & o)10847 static void parse_VkSemaphoreTypeCreateInfo(const char *s, Json::Value &obj, VkSemaphoreTypeCreateInfo &o)
10848 {
10849 
10850     parse_VkStructureType("sType", obj["sType"], (o.sType));
10851 
10852     o.pNext = (VkSemaphoreTypeCreateInfo *)parsePNextChain(obj);
10853 
10854     parse_VkSemaphoreType("semaphoreType", obj["semaphoreType"], (o.semaphoreType));
10855 
10856     parse_uint64_t("initialValue", obj["initialValue"], (o.initialValue));
10857 }
10858 
parse_VkTimelineSemaphoreSubmitInfo(const char * s,Json::Value & obj,VkTimelineSemaphoreSubmitInfo & o)10859 static void parse_VkTimelineSemaphoreSubmitInfo(const char *s, Json::Value &obj, VkTimelineSemaphoreSubmitInfo &o)
10860 {
10861 
10862     parse_VkStructureType("sType", obj["sType"], (o.sType));
10863 
10864     o.pNext = (VkTimelineSemaphoreSubmitInfo *)parsePNextChain(obj);
10865 
10866     parse_uint32_t("waitSemaphoreValueCount", obj["waitSemaphoreValueCount"], (o.waitSemaphoreValueCount));
10867 
10868     parse_uint32_t("signalSemaphoreValueCount", obj["signalSemaphoreValueCount"], (o.signalSemaphoreValueCount));
10869 }
10870 
parse_VkSemaphoreWaitInfo(const char * s,Json::Value & obj,VkSemaphoreWaitInfo & o)10871 static void parse_VkSemaphoreWaitInfo(const char *s, Json::Value &obj, VkSemaphoreWaitInfo &o)
10872 {
10873 
10874     parse_VkStructureType("sType", obj["sType"], (o.sType));
10875 
10876     o.pNext = (VkSemaphoreWaitInfo *)parsePNextChain(obj);
10877 
10878     parse_VkSemaphoreWaitFlags("flags", obj["flags"], (o.flags));
10879 
10880     parse_uint32_t("semaphoreCount", obj["semaphoreCount"], (o.semaphoreCount));
10881 
10882     (o.pSemaphores)                  = (VkSemaphore *)s_globalMem.allocate((o.semaphoreCount), sizeof(VkSemaphore));
10883     Json::Value &obj_pSemaphores_arr = obj["pSemaphores"];
10884     for (unsigned int i = 0; i < obj_pSemaphores_arr.size(); i++)
10885     {
10886         parse_VkSemaphore("pSemaphores", obj_pSemaphores_arr[i], const_cast<VkSemaphore &>((o.pSemaphores[i])));
10887     }
10888 
10889     (o.pValues)                  = (uint64_t *)s_globalMem.allocate((o.semaphoreCount), sizeof(uint64_t));
10890     Json::Value &obj_pValues_arr = obj["pValues"];
10891     for (unsigned int i = 0; i < obj_pValues_arr.size(); i++)
10892     {
10893         parse_uint64_t("pValues", obj_pValues_arr[i], const_cast<uint64_t &>((o.pValues[i])));
10894     }
10895 }
10896 
parse_VkSemaphoreSignalInfo(const char * s,Json::Value & obj,VkSemaphoreSignalInfo & o)10897 static void parse_VkSemaphoreSignalInfo(const char *s, Json::Value &obj, VkSemaphoreSignalInfo &o)
10898 {
10899 
10900     parse_VkStructureType("sType", obj["sType"], (o.sType));
10901 
10902     o.pNext = (VkSemaphoreSignalInfo *)parsePNextChain(obj);
10903 
10904     parse_uint64_t("value", obj["value"], (o.value));
10905 }
10906 
parse_VkPhysicalDeviceBufferDeviceAddressFeatures(const char * s,Json::Value & obj,VkPhysicalDeviceBufferDeviceAddressFeatures & o)10907 static void parse_VkPhysicalDeviceBufferDeviceAddressFeatures(const char *s, Json::Value &obj,
10908                                                               VkPhysicalDeviceBufferDeviceAddressFeatures &o)
10909 {
10910 
10911     parse_VkStructureType("sType", obj["sType"], (o.sType));
10912 
10913     o.pNext = (VkPhysicalDeviceBufferDeviceAddressFeatures *)parsePNextChain(obj);
10914 
10915     parse_VkBool32("bufferDeviceAddress", obj["bufferDeviceAddress"], (o.bufferDeviceAddress));
10916 
10917     parse_VkBool32("bufferDeviceAddressCaptureReplay", obj["bufferDeviceAddressCaptureReplay"],
10918                    (o.bufferDeviceAddressCaptureReplay));
10919 
10920     parse_VkBool32("bufferDeviceAddressMultiDevice", obj["bufferDeviceAddressMultiDevice"],
10921                    (o.bufferDeviceAddressMultiDevice));
10922 }
10923 
parse_VkBufferDeviceAddressInfo(const char * s,Json::Value & obj,VkBufferDeviceAddressInfo & o)10924 static void parse_VkBufferDeviceAddressInfo(const char *s, Json::Value &obj, VkBufferDeviceAddressInfo &o)
10925 {
10926 
10927     parse_VkStructureType("sType", obj["sType"], (o.sType));
10928 
10929     o.pNext = (VkBufferDeviceAddressInfo *)parsePNextChain(obj);
10930 }
10931 
parse_VkBufferOpaqueCaptureAddressCreateInfo(const char * s,Json::Value & obj,VkBufferOpaqueCaptureAddressCreateInfo & o)10932 static void parse_VkBufferOpaqueCaptureAddressCreateInfo(const char *s, Json::Value &obj,
10933                                                          VkBufferOpaqueCaptureAddressCreateInfo &o)
10934 {
10935 
10936     parse_VkStructureType("sType", obj["sType"], (o.sType));
10937 
10938     o.pNext = (VkBufferOpaqueCaptureAddressCreateInfo *)parsePNextChain(obj);
10939 
10940     parse_uint64_t("opaqueCaptureAddress", obj["opaqueCaptureAddress"], (o.opaqueCaptureAddress));
10941 }
10942 
parse_VkMemoryOpaqueCaptureAddressAllocateInfo(const char * s,Json::Value & obj,VkMemoryOpaqueCaptureAddressAllocateInfo & o)10943 static void parse_VkMemoryOpaqueCaptureAddressAllocateInfo(const char *s, Json::Value &obj,
10944                                                            VkMemoryOpaqueCaptureAddressAllocateInfo &o)
10945 {
10946 
10947     parse_VkStructureType("sType", obj["sType"], (o.sType));
10948 
10949     o.pNext = (VkMemoryOpaqueCaptureAddressAllocateInfo *)parsePNextChain(obj);
10950 
10951     parse_uint64_t("opaqueCaptureAddress", obj["opaqueCaptureAddress"], (o.opaqueCaptureAddress));
10952 }
10953 
parse_VkDeviceMemoryOpaqueCaptureAddressInfo(const char * s,Json::Value & obj,VkDeviceMemoryOpaqueCaptureAddressInfo & o)10954 static void parse_VkDeviceMemoryOpaqueCaptureAddressInfo(const char *s, Json::Value &obj,
10955                                                          VkDeviceMemoryOpaqueCaptureAddressInfo &o)
10956 {
10957 
10958     parse_VkStructureType("sType", obj["sType"], (o.sType));
10959 
10960     o.pNext = (VkDeviceMemoryOpaqueCaptureAddressInfo *)parsePNextChain(obj);
10961 }
10962 
10963 static std::map<std::string, int> VkFaultLevel_map = {
10964     std::make_pair("VK_FAULT_LEVEL_UNASSIGNED", 0),
10965     std::make_pair("VK_FAULT_LEVEL_CRITICAL", 1),
10966     std::make_pair("VK_FAULT_LEVEL_RECOVERABLE", 2),
10967     std::make_pair("VK_FAULT_LEVEL_WARNING", 3),
10968 };
parse_VkFaultLevel(const char * s,Json::Value & obj,VkFaultLevel & o)10969 static void parse_VkFaultLevel(const char *s, Json::Value &obj, VkFaultLevel &o)
10970 {
10971     std::string _res = obj.asString();
10972     o                = (VkFaultLevel)VkFaultLevel_map[std::string(_res)];
10973 }
10974 
10975 static std::map<std::string, int> VkFaultType_map = {
10976     std::make_pair("VK_FAULT_TYPE_INVALID", 0),           std::make_pair("VK_FAULT_TYPE_UNASSIGNED", 1),
10977     std::make_pair("VK_FAULT_TYPE_IMPLEMENTATION", 2),    std::make_pair("VK_FAULT_TYPE_SYSTEM", 3),
10978     std::make_pair("VK_FAULT_TYPE_PHYSICAL_DEVICE", 4),   std::make_pair("VK_FAULT_TYPE_COMMAND_BUFFER_FULL", 5),
10979     std::make_pair("VK_FAULT_TYPE_INVALID_API_USAGE", 6),
10980 };
parse_VkFaultType(const char * s,Json::Value & obj,VkFaultType & o)10981 static void parse_VkFaultType(const char *s, Json::Value &obj, VkFaultType &o)
10982 {
10983     std::string _res = obj.asString();
10984     o                = (VkFaultType)VkFaultType_map[std::string(_res)];
10985 }
10986 
10987 static std::map<std::string, int> VkFaultQueryBehavior_map = {
10988     std::make_pair("VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS", 0),
10989 };
parse_VkFaultQueryBehavior(const char * s,Json::Value & obj,VkFaultQueryBehavior & o)10990 static void parse_VkFaultQueryBehavior(const char *s, Json::Value &obj, VkFaultQueryBehavior &o)
10991 {
10992     std::string _res = obj.asString();
10993     o                = (VkFaultQueryBehavior)VkFaultQueryBehavior_map[std::string(_res)];
10994 }
10995 
10996 static std::map<std::string, int> VkPipelineMatchControl_map = {
10997     std::make_pair("VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH", 0),
10998 };
parse_VkPipelineMatchControl(const char * s,Json::Value & obj,VkPipelineMatchControl & o)10999 static void parse_VkPipelineMatchControl(const char *s, Json::Value &obj, VkPipelineMatchControl &o)
11000 {
11001     std::string _res = obj.asString();
11002     o                = (VkPipelineMatchControl)VkPipelineMatchControl_map[std::string(_res)];
11003 }
11004 
11005 static std::map<std::string, int> VkPipelineCacheValidationVersion_map = {
11006     std::make_pair("VK_PIPELINE_CACHE_VALIDATION_VERSION_SAFETY_CRITICAL_ONE", 1),
11007 };
parse_VkPipelineCacheValidationVersion(const char * s,Json::Value & obj,VkPipelineCacheValidationVersion & o)11008 static void parse_VkPipelineCacheValidationVersion(const char *s, Json::Value &obj, VkPipelineCacheValidationVersion &o)
11009 {
11010     std::string _res = obj.asString();
11011     o                = (VkPipelineCacheValidationVersion)VkPipelineCacheValidationVersion_map[std::string(_res)];
11012 }
11013 
parse_VkPhysicalDeviceVulkanSC10Features(const char * s,Json::Value & obj,VkPhysicalDeviceVulkanSC10Features & o)11014 static void parse_VkPhysicalDeviceVulkanSC10Features(const char *s, Json::Value &obj,
11015                                                      VkPhysicalDeviceVulkanSC10Features &o)
11016 {
11017 
11018     parse_VkStructureType("sType", obj["sType"], (o.sType));
11019 
11020     o.pNext = (VkPhysicalDeviceVulkanSC10Features *)parsePNextChain(obj);
11021 
11022     parse_VkBool32("shaderAtomicInstructions", obj["shaderAtomicInstructions"], (o.shaderAtomicInstructions));
11023 }
11024 
parse_VkPhysicalDeviceVulkanSC10Properties(const char * s,Json::Value & obj,VkPhysicalDeviceVulkanSC10Properties & o)11025 static void parse_VkPhysicalDeviceVulkanSC10Properties(const char *s, Json::Value &obj,
11026                                                        VkPhysicalDeviceVulkanSC10Properties &o)
11027 {
11028 
11029     parse_VkStructureType("sType", obj["sType"], (o.sType));
11030 
11031     o.pNext = (VkPhysicalDeviceVulkanSC10Properties *)parsePNextChain(obj);
11032 
11033     parse_VkBool32("deviceNoDynamicHostAllocations", obj["deviceNoDynamicHostAllocations"],
11034                    (o.deviceNoDynamicHostAllocations));
11035 
11036     parse_VkBool32("deviceDestroyFreesMemory", obj["deviceDestroyFreesMemory"], (o.deviceDestroyFreesMemory));
11037 
11038     parse_VkBool32("commandPoolMultipleCommandBuffersRecording", obj["commandPoolMultipleCommandBuffersRecording"],
11039                    (o.commandPoolMultipleCommandBuffersRecording));
11040 
11041     parse_VkBool32("commandPoolResetCommandBuffer", obj["commandPoolResetCommandBuffer"],
11042                    (o.commandPoolResetCommandBuffer));
11043 
11044     parse_VkBool32("commandBufferSimultaneousUse", obj["commandBufferSimultaneousUse"],
11045                    (o.commandBufferSimultaneousUse));
11046 
11047     parse_VkBool32("secondaryCommandBufferNullOrImagelessFramebuffer",
11048                    obj["secondaryCommandBufferNullOrImagelessFramebuffer"],
11049                    (o.secondaryCommandBufferNullOrImagelessFramebuffer));
11050 
11051     parse_VkBool32("recycleDescriptorSetMemory", obj["recycleDescriptorSetMemory"], (o.recycleDescriptorSetMemory));
11052 
11053     parse_VkBool32("recyclePipelineMemory", obj["recyclePipelineMemory"], (o.recyclePipelineMemory));
11054 
11055     parse_uint32_t("maxRenderPassSubpasses", obj["maxRenderPassSubpasses"], (o.maxRenderPassSubpasses));
11056 
11057     parse_uint32_t("maxRenderPassDependencies", obj["maxRenderPassDependencies"], (o.maxRenderPassDependencies));
11058 
11059     parse_uint32_t("maxSubpassInputAttachments", obj["maxSubpassInputAttachments"], (o.maxSubpassInputAttachments));
11060 
11061     parse_uint32_t("maxSubpassPreserveAttachments", obj["maxSubpassPreserveAttachments"],
11062                    (o.maxSubpassPreserveAttachments));
11063 
11064     parse_uint32_t("maxFramebufferAttachments", obj["maxFramebufferAttachments"], (o.maxFramebufferAttachments));
11065 
11066     parse_uint32_t("maxDescriptorSetLayoutBindings", obj["maxDescriptorSetLayoutBindings"],
11067                    (o.maxDescriptorSetLayoutBindings));
11068 
11069     parse_uint32_t("maxQueryFaultCount", obj["maxQueryFaultCount"], (o.maxQueryFaultCount));
11070 
11071     parse_uint32_t("maxCallbackFaultCount", obj["maxCallbackFaultCount"], (o.maxCallbackFaultCount));
11072 
11073     parse_uint32_t("maxCommandPoolCommandBuffers", obj["maxCommandPoolCommandBuffers"],
11074                    (o.maxCommandPoolCommandBuffers));
11075 
11076     parse_VkDeviceSize("maxCommandBufferSize", obj["maxCommandBufferSize"], (o.maxCommandBufferSize));
11077 }
11078 
parse_VkPipelinePoolSize(const char * s,Json::Value & obj,VkPipelinePoolSize & o)11079 static void parse_VkPipelinePoolSize(const char *s, Json::Value &obj, VkPipelinePoolSize &o)
11080 {
11081 
11082     parse_VkStructureType("sType", obj["sType"], (o.sType));
11083 
11084     o.pNext = (VkPipelinePoolSize *)parsePNextChain(obj);
11085 
11086     parse_VkDeviceSize("poolEntrySize", obj["poolEntrySize"], (o.poolEntrySize));
11087 
11088     parse_uint32_t("poolEntryCount", obj["poolEntryCount"], (o.poolEntryCount));
11089 }
11090 
parse_VkDeviceObjectReservationCreateInfo(const char * s,Json::Value & obj,VkDeviceObjectReservationCreateInfo & o)11091 static void parse_VkDeviceObjectReservationCreateInfo(const char *s, Json::Value &obj,
11092                                                       VkDeviceObjectReservationCreateInfo &o)
11093 {
11094 
11095     parse_VkStructureType("sType", obj["sType"], (o.sType));
11096 
11097     o.pNext = (VkDeviceObjectReservationCreateInfo *)parsePNextChain(obj);
11098 
11099     parse_uint32_t("pipelineCacheCreateInfoCount", obj["pipelineCacheCreateInfoCount"],
11100                    (o.pipelineCacheCreateInfoCount));
11101 
11102     (o.pPipelineCacheCreateInfos) = (VkPipelineCacheCreateInfo *)s_globalMem.allocate(
11103         (o.pipelineCacheCreateInfoCount), sizeof(VkPipelineCacheCreateInfo));
11104     Json::Value &obj_pPipelineCacheCreateInfos = obj["pPipelineCacheCreateInfos"];
11105     if (obj_pPipelineCacheCreateInfos.size() == 0)
11106         (o.pPipelineCacheCreateInfos) = nullptr;
11107     else
11108     {
11109         for (unsigned int i = 0; i < (o.pipelineCacheCreateInfoCount); i++)
11110         {
11111             parse_VkPipelineCacheCreateInfo("pPipelineCacheCreateInfos", obj_pPipelineCacheCreateInfos[i],
11112                                             const_cast<VkPipelineCacheCreateInfo &>((o.pPipelineCacheCreateInfos[i])));
11113         }
11114     }
11115 
11116     parse_uint32_t("pipelinePoolSizeCount", obj["pipelinePoolSizeCount"], (o.pipelinePoolSizeCount));
11117 
11118     (o.pPipelinePoolSizes) =
11119         (VkPipelinePoolSize *)s_globalMem.allocate((o.pipelinePoolSizeCount), sizeof(VkPipelinePoolSize));
11120     Json::Value &obj_pPipelinePoolSizes = obj["pPipelinePoolSizes"];
11121     if (obj_pPipelinePoolSizes.size() == 0)
11122         (o.pPipelinePoolSizes) = nullptr;
11123     else
11124     {
11125         for (unsigned int i = 0; i < (o.pipelinePoolSizeCount); i++)
11126         {
11127             parse_VkPipelinePoolSize("pPipelinePoolSizes", obj_pPipelinePoolSizes[i],
11128                                      const_cast<VkPipelinePoolSize &>((o.pPipelinePoolSizes[i])));
11129         }
11130     }
11131 
11132     parse_uint32_t("semaphoreRequestCount", obj["semaphoreRequestCount"], (o.semaphoreRequestCount));
11133 
11134     parse_uint32_t("commandBufferRequestCount", obj["commandBufferRequestCount"], (o.commandBufferRequestCount));
11135 
11136     parse_uint32_t("fenceRequestCount", obj["fenceRequestCount"], (o.fenceRequestCount));
11137 
11138     parse_uint32_t("deviceMemoryRequestCount", obj["deviceMemoryRequestCount"], (o.deviceMemoryRequestCount));
11139 
11140     parse_uint32_t("bufferRequestCount", obj["bufferRequestCount"], (o.bufferRequestCount));
11141 
11142     parse_uint32_t("imageRequestCount", obj["imageRequestCount"], (o.imageRequestCount));
11143 
11144     parse_uint32_t("eventRequestCount", obj["eventRequestCount"], (o.eventRequestCount));
11145 
11146     parse_uint32_t("queryPoolRequestCount", obj["queryPoolRequestCount"], (o.queryPoolRequestCount));
11147 
11148     parse_uint32_t("bufferViewRequestCount", obj["bufferViewRequestCount"], (o.bufferViewRequestCount));
11149 
11150     parse_uint32_t("imageViewRequestCount", obj["imageViewRequestCount"], (o.imageViewRequestCount));
11151 
11152     parse_uint32_t("layeredImageViewRequestCount", obj["layeredImageViewRequestCount"],
11153                    (o.layeredImageViewRequestCount));
11154 
11155     parse_uint32_t("pipelineCacheRequestCount", obj["pipelineCacheRequestCount"], (o.pipelineCacheRequestCount));
11156 
11157     parse_uint32_t("pipelineLayoutRequestCount", obj["pipelineLayoutRequestCount"], (o.pipelineLayoutRequestCount));
11158 
11159     parse_uint32_t("renderPassRequestCount", obj["renderPassRequestCount"], (o.renderPassRequestCount));
11160 
11161     parse_uint32_t("graphicsPipelineRequestCount", obj["graphicsPipelineRequestCount"],
11162                    (o.graphicsPipelineRequestCount));
11163 
11164     parse_uint32_t("computePipelineRequestCount", obj["computePipelineRequestCount"], (o.computePipelineRequestCount));
11165 
11166     parse_uint32_t("descriptorSetLayoutRequestCount", obj["descriptorSetLayoutRequestCount"],
11167                    (o.descriptorSetLayoutRequestCount));
11168 
11169     parse_uint32_t("samplerRequestCount", obj["samplerRequestCount"], (o.samplerRequestCount));
11170 
11171     parse_uint32_t("descriptorPoolRequestCount", obj["descriptorPoolRequestCount"], (o.descriptorPoolRequestCount));
11172 
11173     parse_uint32_t("descriptorSetRequestCount", obj["descriptorSetRequestCount"], (o.descriptorSetRequestCount));
11174 
11175     parse_uint32_t("framebufferRequestCount", obj["framebufferRequestCount"], (o.framebufferRequestCount));
11176 
11177     parse_uint32_t("commandPoolRequestCount", obj["commandPoolRequestCount"], (o.commandPoolRequestCount));
11178 
11179     parse_uint32_t("samplerYcbcrConversionRequestCount", obj["samplerYcbcrConversionRequestCount"],
11180                    (o.samplerYcbcrConversionRequestCount));
11181 
11182     parse_uint32_t("surfaceRequestCount", obj["surfaceRequestCount"], (o.surfaceRequestCount));
11183 
11184     parse_uint32_t("swapchainRequestCount", obj["swapchainRequestCount"], (o.swapchainRequestCount));
11185 
11186     parse_uint32_t("displayModeRequestCount", obj["displayModeRequestCount"], (o.displayModeRequestCount));
11187 
11188     parse_uint32_t("subpassDescriptionRequestCount", obj["subpassDescriptionRequestCount"],
11189                    (o.subpassDescriptionRequestCount));
11190 
11191     parse_uint32_t("attachmentDescriptionRequestCount", obj["attachmentDescriptionRequestCount"],
11192                    (o.attachmentDescriptionRequestCount));
11193 
11194     parse_uint32_t("descriptorSetLayoutBindingRequestCount", obj["descriptorSetLayoutBindingRequestCount"],
11195                    (o.descriptorSetLayoutBindingRequestCount));
11196 
11197     parse_uint32_t("descriptorSetLayoutBindingLimit", obj["descriptorSetLayoutBindingLimit"],
11198                    (o.descriptorSetLayoutBindingLimit));
11199 
11200     parse_uint32_t("maxImageViewMipLevels", obj["maxImageViewMipLevels"], (o.maxImageViewMipLevels));
11201 
11202     parse_uint32_t("maxImageViewArrayLayers", obj["maxImageViewArrayLayers"], (o.maxImageViewArrayLayers));
11203 
11204     parse_uint32_t("maxLayeredImageViewMipLevels", obj["maxLayeredImageViewMipLevels"],
11205                    (o.maxLayeredImageViewMipLevels));
11206 
11207     parse_uint32_t("maxOcclusionQueriesPerPool", obj["maxOcclusionQueriesPerPool"], (o.maxOcclusionQueriesPerPool));
11208 
11209     parse_uint32_t("maxPipelineStatisticsQueriesPerPool", obj["maxPipelineStatisticsQueriesPerPool"],
11210                    (o.maxPipelineStatisticsQueriesPerPool));
11211 
11212     parse_uint32_t("maxTimestampQueriesPerPool", obj["maxTimestampQueriesPerPool"], (o.maxTimestampQueriesPerPool));
11213 
11214     parse_uint32_t("maxImmutableSamplersPerDescriptorSetLayout", obj["maxImmutableSamplersPerDescriptorSetLayout"],
11215                    (o.maxImmutableSamplersPerDescriptorSetLayout));
11216 }
11217 
parse_VkCommandPoolMemoryReservationCreateInfo(const char * s,Json::Value & obj,VkCommandPoolMemoryReservationCreateInfo & o)11218 static void parse_VkCommandPoolMemoryReservationCreateInfo(const char *s, Json::Value &obj,
11219                                                            VkCommandPoolMemoryReservationCreateInfo &o)
11220 {
11221 
11222     parse_VkStructureType("sType", obj["sType"], (o.sType));
11223 
11224     o.pNext = (VkCommandPoolMemoryReservationCreateInfo *)parsePNextChain(obj);
11225 
11226     parse_VkDeviceSize("commandPoolReservedSize", obj["commandPoolReservedSize"], (o.commandPoolReservedSize));
11227 
11228     parse_uint32_t("commandPoolMaxCommandBuffers", obj["commandPoolMaxCommandBuffers"],
11229                    (o.commandPoolMaxCommandBuffers));
11230 }
11231 
parse_VkCommandPoolMemoryConsumption(const char * s,Json::Value & obj,VkCommandPoolMemoryConsumption & o)11232 static void parse_VkCommandPoolMemoryConsumption(const char *s, Json::Value &obj, VkCommandPoolMemoryConsumption &o)
11233 {
11234 
11235     parse_VkStructureType("sType", obj["sType"], (o.sType));
11236 
11237     o.pNext = (VkCommandPoolMemoryConsumption *)parsePNextChain(obj);
11238 
11239     parse_VkDeviceSize("commandPoolAllocated", obj["commandPoolAllocated"], (o.commandPoolAllocated));
11240 
11241     parse_VkDeviceSize("commandPoolReservedSize", obj["commandPoolReservedSize"], (o.commandPoolReservedSize));
11242 
11243     parse_VkDeviceSize("commandBufferAllocated", obj["commandBufferAllocated"], (o.commandBufferAllocated));
11244 }
11245 
parse_VkFaultData(const char * s,Json::Value & obj,VkFaultData & o)11246 static void parse_VkFaultData(const char *s, Json::Value &obj, VkFaultData &o)
11247 {
11248 
11249     parse_VkStructureType("sType", obj["sType"], (o.sType));
11250 
11251     o.pNext = (VkFaultData *)parsePNextChain(obj);
11252 
11253     parse_VkFaultLevel("faultLevel", obj["faultLevel"], (o.faultLevel));
11254 
11255     parse_VkFaultType("faultType", obj["faultType"], (o.faultType));
11256 }
11257 
parse_VkFaultCallbackInfo(const char * s,Json::Value & obj,VkFaultCallbackInfo & o)11258 static void parse_VkFaultCallbackInfo(const char *s, Json::Value &obj, VkFaultCallbackInfo &o)
11259 {
11260 
11261     parse_VkStructureType("sType", obj["sType"], (o.sType));
11262 
11263     o.pNext = (VkFaultCallbackInfo *)parsePNextChain(obj);
11264 
11265     parse_uint32_t("faultCount", obj["faultCount"], (o.faultCount));
11266 
11267     (o.pFaults)              = (VkFaultData *)s_globalMem.allocate((o.faultCount), sizeof(VkFaultData));
11268     Json::Value &obj_pFaults = obj["pFaults"];
11269     if (obj_pFaults.size() == 0)
11270         (o.pFaults) = nullptr;
11271     else
11272     {
11273         for (unsigned int i = 0; i < (o.faultCount); i++)
11274         {
11275             parse_VkFaultData("pFaults", obj_pFaults[i], const_cast<VkFaultData &>((o.pFaults[i])));
11276         }
11277     }
11278 
11279     /** Note: Ignoring function pointer (PFN_vkFaultCallbackFunction). **/
11280 }
11281 
parse_VkPipelineOfflineCreateInfo(const char * s,Json::Value & obj,VkPipelineOfflineCreateInfo & o)11282 static void parse_VkPipelineOfflineCreateInfo(const char *s, Json::Value &obj, VkPipelineOfflineCreateInfo &o)
11283 {
11284 
11285     parse_VkStructureType("sType", obj["sType"], (o.sType));
11286 
11287     o.pNext = (VkPipelineOfflineCreateInfo *)parsePNextChain(obj);
11288 
11289     Json::Value &obj_pipelineIdentifier_arr = obj["pipelineIdentifier"];
11290     for (unsigned int i = 0; i < obj_pipelineIdentifier_arr.size(); i++)
11291     {
11292         parse_uint8_t("pipelineIdentifier", obj_pipelineIdentifier_arr[i],
11293                       const_cast<uint8_t &>((o.pipelineIdentifier[i])));
11294     }
11295 
11296     parse_VkPipelineMatchControl("matchControl", obj["matchControl"], (o.matchControl));
11297 
11298     parse_VkDeviceSize("poolEntrySize", obj["poolEntrySize"], (o.poolEntrySize));
11299 }
11300 
parse_VkPipelineCacheStageValidationIndexEntry(const char * s,Json::Value & obj,VkPipelineCacheStageValidationIndexEntry & o)11301 static void parse_VkPipelineCacheStageValidationIndexEntry(const char *s, Json::Value &obj,
11302                                                            VkPipelineCacheStageValidationIndexEntry &o)
11303 {
11304 
11305     parse_uint64_t("codeSize", obj["codeSize"], (o.codeSize));
11306 
11307     parse_uint64_t("codeOffset", obj["codeOffset"], (o.codeOffset));
11308 }
11309 
parse_VkPipelineCacheSafetyCriticalIndexEntry(const char * s,Json::Value & obj,VkPipelineCacheSafetyCriticalIndexEntry & o)11310 static void parse_VkPipelineCacheSafetyCriticalIndexEntry(const char *s, Json::Value &obj,
11311                                                           VkPipelineCacheSafetyCriticalIndexEntry &o)
11312 {
11313 
11314     Json::Value &obj_pipelineIdentifier_arr = obj["pipelineIdentifier"];
11315     for (unsigned int i = 0; i < obj_pipelineIdentifier_arr.size(); i++)
11316     {
11317         parse_uint8_t("pipelineIdentifier", obj_pipelineIdentifier_arr[i],
11318                       const_cast<uint8_t &>((o.pipelineIdentifier[i])));
11319     }
11320 
11321     parse_uint64_t("pipelineMemorySize", obj["pipelineMemorySize"], (o.pipelineMemorySize));
11322 
11323     parse_uint64_t("jsonSize", obj["jsonSize"], (o.jsonSize));
11324 
11325     parse_uint64_t("jsonOffset", obj["jsonOffset"], (o.jsonOffset));
11326 
11327     parse_uint32_t("stageIndexCount", obj["stageIndexCount"], (o.stageIndexCount));
11328 
11329     parse_uint32_t("stageIndexStride", obj["stageIndexStride"], (o.stageIndexStride));
11330 
11331     parse_uint64_t("stageIndexOffset", obj["stageIndexOffset"], (o.stageIndexOffset));
11332 }
11333 
parse_VkPipelineCacheHeaderVersionSafetyCriticalOne(const char * s,Json::Value & obj,VkPipelineCacheHeaderVersionSafetyCriticalOne & o)11334 static void parse_VkPipelineCacheHeaderVersionSafetyCriticalOne(const char *s, Json::Value &obj,
11335                                                                 VkPipelineCacheHeaderVersionSafetyCriticalOne &o)
11336 {
11337 
11338     parse_VkPipelineCacheHeaderVersionOne("headerVersionOne", obj["headerVersionOne"], (o.headerVersionOne));
11339 
11340     parse_VkPipelineCacheValidationVersion("validationVersion", obj["validationVersion"], (o.validationVersion));
11341 
11342     parse_uint32_t("implementationData", obj["implementationData"], (o.implementationData));
11343 
11344     parse_uint32_t("pipelineIndexCount", obj["pipelineIndexCount"], (o.pipelineIndexCount));
11345 
11346     parse_uint32_t("pipelineIndexStride", obj["pipelineIndexStride"], (o.pipelineIndexStride));
11347 
11348     parse_uint64_t("pipelineIndexOffset", obj["pipelineIndexOffset"], (o.pipelineIndexOffset));
11349 }
11350 
parse_VkSurfaceKHR(const char * s,Json::Value & obj,VkSurfaceKHR & o)11351 static void parse_VkSurfaceKHR(const char *s, Json::Value &obj, VkSurfaceKHR &o)
11352 {
11353     //     std::string _res = obj.asString();
11354 }
11355 
11356 static std::map<std::string, int> VkSurfaceTransformFlagBitsKHR_map = {
11357     std::make_pair("VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR", 1UL << 0),
11358     std::make_pair("VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR", 1UL << 1),
11359     std::make_pair("VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR", 1UL << 2),
11360     std::make_pair("VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR", 1UL << 3),
11361     std::make_pair("VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR", 1UL << 4),
11362     std::make_pair("VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR", 1UL << 5),
11363     std::make_pair("VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR", 1UL << 6),
11364     std::make_pair("VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR", 1UL << 7),
11365     std::make_pair("VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR", 1UL << 8),
11366 };
parse_VkSurfaceTransformFlagBitsKHR(const char * s,Json::Value & obj,VkSurfaceTransformFlagBitsKHR & o)11367 static void parse_VkSurfaceTransformFlagBitsKHR(const char *s, Json::Value &obj, VkSurfaceTransformFlagBitsKHR &o)
11368 {
11369     std::string _res = obj.asString();
11370     o                = (VkSurfaceTransformFlagBitsKHR)VkSurfaceTransformFlagBitsKHR_map[std::string(_res)];
11371 }
11372 
11373 static std::map<std::string, int> VkPresentModeKHR_map = {
11374     std::make_pair("VK_PRESENT_MODE_IMMEDIATE_KHR", 0),
11375     std::make_pair("VK_PRESENT_MODE_MAILBOX_KHR", 1),
11376     std::make_pair("VK_PRESENT_MODE_FIFO_KHR", 2),
11377     std::make_pair("VK_PRESENT_MODE_FIFO_RELAXED_KHR", 3),
11378     std::make_pair("VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR", 1000111000),
11379     std::make_pair("VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR", 1000111001),
11380 };
parse_VkPresentModeKHR(const char * s,Json::Value & obj,VkPresentModeKHR & o)11381 static void parse_VkPresentModeKHR(const char *s, Json::Value &obj, VkPresentModeKHR &o)
11382 {
11383     std::string _res = obj.asString();
11384     o                = (VkPresentModeKHR)VkPresentModeKHR_map[std::string(_res)];
11385 }
11386 
11387 static std::map<std::string, int> VkColorSpaceKHR_map = {
11388     std::make_pair("VK_COLOR_SPACE_SRGB_NONLINEAR_KHR", 0),
11389     std::make_pair("VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT", 1000104001),
11390     std::make_pair("VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT", 1000104002),
11391     std::make_pair("VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT", 1000104003),
11392     std::make_pair("VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT", 1000104004),
11393     std::make_pair("VK_COLOR_SPACE_BT709_LINEAR_EXT", 1000104005),
11394     std::make_pair("VK_COLOR_SPACE_BT709_NONLINEAR_EXT", 1000104006),
11395     std::make_pair("VK_COLOR_SPACE_BT2020_LINEAR_EXT", 1000104007),
11396     std::make_pair("VK_COLOR_SPACE_HDR10_ST2084_EXT", 1000104008),
11397     std::make_pair("VK_COLOR_SPACE_DOLBYVISION_EXT", 1000104009),
11398     std::make_pair("VK_COLOR_SPACE_HDR10_HLG_EXT", 1000104010),
11399     std::make_pair("VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT", 1000104011),
11400     std::make_pair("VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT", 1000104012),
11401     std::make_pair("VK_COLOR_SPACE_PASS_THROUGH_EXT", 1000104013),
11402     std::make_pair("VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT", 1000104014),
11403     std::make_pair("VK_COLOR_SPACE_DISPLAY_NATIVE_AMD", 1000213000),
11404 };
parse_VkColorSpaceKHR(const char * s,Json::Value & obj,VkColorSpaceKHR & o)11405 static void parse_VkColorSpaceKHR(const char *s, Json::Value &obj, VkColorSpaceKHR &o)
11406 {
11407     std::string _res = obj.asString();
11408     o                = (VkColorSpaceKHR)VkColorSpaceKHR_map[std::string(_res)];
11409 }
11410 
11411 static std::map<std::string, int> VkCompositeAlphaFlagBitsKHR_map = {
11412     std::make_pair("VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR", 1UL << 0),
11413     std::make_pair("VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR", 1UL << 1),
11414     std::make_pair("VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR", 1UL << 2),
11415     std::make_pair("VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR", 1UL << 3),
11416 };
parse_VkCompositeAlphaFlagBitsKHR(const char * s,Json::Value & obj,VkCompositeAlphaFlagBitsKHR & o)11417 static void parse_VkCompositeAlphaFlagBitsKHR(const char *s, Json::Value &obj, VkCompositeAlphaFlagBitsKHR &o)
11418 {
11419     std::string _res = obj.asString();
11420     o                = (VkCompositeAlphaFlagBitsKHR)VkCompositeAlphaFlagBitsKHR_map[std::string(_res)];
11421 }
11422 
parse_VkCompositeAlphaFlagsKHR(const char * s,Json::Value & obj,VkCompositeAlphaFlagsKHR & o)11423 static void parse_VkCompositeAlphaFlagsKHR(const char *s, Json::Value &obj, VkCompositeAlphaFlagsKHR &o)
11424 {
11425     o                = (VkCompositeAlphaFlagsKHR)0;
11426     std::string _res = obj.asString();
11427     std::vector<std::string> bitmasks;
11428     std::istringstream inputStream(_res);
11429     std::string tempStr;
11430     while (getline(inputStream, tempStr, '|'))
11431     {
11432         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
11433         bitmasks.push_back(tempStr);
11434     }
11435     for (auto &it : bitmasks)
11436     {
11437         o |= (VkCompositeAlphaFlagBitsKHR)VkCompositeAlphaFlagBitsKHR_map[it];
11438     }
11439 }
11440 
parse_VkSurfaceTransformFlagsKHR(const char * s,Json::Value & obj,VkSurfaceTransformFlagsKHR & o)11441 static void parse_VkSurfaceTransformFlagsKHR(const char *s, Json::Value &obj, VkSurfaceTransformFlagsKHR &o)
11442 {
11443     o                = (VkSurfaceTransformFlagsKHR)0;
11444     std::string _res = obj.asString();
11445     std::vector<std::string> bitmasks;
11446     std::istringstream inputStream(_res);
11447     std::string tempStr;
11448     while (getline(inputStream, tempStr, '|'))
11449     {
11450         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
11451         bitmasks.push_back(tempStr);
11452     }
11453     for (auto &it : bitmasks)
11454     {
11455         o |= (VkSurfaceTransformFlagBitsKHR)VkSurfaceTransformFlagBitsKHR_map[it];
11456     }
11457 }
11458 
parse_VkSurfaceCapabilitiesKHR(const char * s,Json::Value & obj,VkSurfaceCapabilitiesKHR & o)11459 static void parse_VkSurfaceCapabilitiesKHR(const char *s, Json::Value &obj, VkSurfaceCapabilitiesKHR &o)
11460 {
11461 
11462     parse_uint32_t("minImageCount", obj["minImageCount"], (o.minImageCount));
11463 
11464     parse_uint32_t("maxImageCount", obj["maxImageCount"], (o.maxImageCount));
11465 
11466     parse_VkExtent2D("currentExtent", obj["currentExtent"], (o.currentExtent));
11467 
11468     parse_VkExtent2D("minImageExtent", obj["minImageExtent"], (o.minImageExtent));
11469 
11470     parse_VkExtent2D("maxImageExtent", obj["maxImageExtent"], (o.maxImageExtent));
11471 
11472     parse_uint32_t("maxImageArrayLayers", obj["maxImageArrayLayers"], (o.maxImageArrayLayers));
11473 
11474     parse_VkSurfaceTransformFlagsKHR("supportedTransforms", obj["supportedTransforms"], (o.supportedTransforms));
11475 
11476     parse_VkSurfaceTransformFlagBitsKHR("currentTransform", obj["currentTransform"], (o.currentTransform));
11477 
11478     parse_VkCompositeAlphaFlagsKHR("supportedCompositeAlpha", obj["supportedCompositeAlpha"],
11479                                    (o.supportedCompositeAlpha));
11480 
11481     parse_VkImageUsageFlags("supportedUsageFlags", obj["supportedUsageFlags"], (o.supportedUsageFlags));
11482 }
11483 
parse_VkSurfaceFormatKHR(const char * s,Json::Value & obj,VkSurfaceFormatKHR & o)11484 static void parse_VkSurfaceFormatKHR(const char *s, Json::Value &obj, VkSurfaceFormatKHR &o)
11485 {
11486 
11487     parse_VkFormat("format", obj["format"], (o.format));
11488 
11489     parse_VkColorSpaceKHR("colorSpace", obj["colorSpace"], (o.colorSpace));
11490 }
11491 
parse_VkSwapchainKHR(const char * s,Json::Value & obj,VkSwapchainKHR & o)11492 static void parse_VkSwapchainKHR(const char *s, Json::Value &obj, VkSwapchainKHR &o)
11493 {
11494     //     std::string _res = obj.asString();
11495 }
11496 
11497 static std::map<std::string, int> VkSwapchainCreateFlagBitsKHR_map = {
11498     std::make_pair("VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR", 1UL << 0),
11499     std::make_pair("VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR", 1UL << 1),
11500     std::make_pair("VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR", 1UL << 0),
11501     std::make_pair("VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR", 1UL << 2),
11502 };
parse_VkSwapchainCreateFlagBitsKHR(const char * s,Json::Value & obj,VkSwapchainCreateFlagBitsKHR & o)11503 static void parse_VkSwapchainCreateFlagBitsKHR(const char *s, Json::Value &obj, VkSwapchainCreateFlagBitsKHR &o)
11504 {
11505     std::string _res = obj.asString();
11506     o                = (VkSwapchainCreateFlagBitsKHR)VkSwapchainCreateFlagBitsKHR_map[std::string(_res)];
11507 }
11508 
11509 static std::map<std::string, int> VkDeviceGroupPresentModeFlagBitsKHR_map = {
11510     std::make_pair("VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR", 1UL << 0),
11511     std::make_pair("VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR", 1UL << 1),
11512     std::make_pair("VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR", 1UL << 2),
11513     std::make_pair("VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR", 1UL << 3),
11514 };
parse_VkDeviceGroupPresentModeFlagBitsKHR(const char * s,Json::Value & obj,VkDeviceGroupPresentModeFlagBitsKHR & o)11515 static void parse_VkDeviceGroupPresentModeFlagBitsKHR(const char *s, Json::Value &obj,
11516                                                       VkDeviceGroupPresentModeFlagBitsKHR &o)
11517 {
11518     std::string _res = obj.asString();
11519     o                = (VkDeviceGroupPresentModeFlagBitsKHR)VkDeviceGroupPresentModeFlagBitsKHR_map[std::string(_res)];
11520 }
11521 
parse_VkSwapchainCreateFlagsKHR(const char * s,Json::Value & obj,VkSwapchainCreateFlagsKHR & o)11522 static void parse_VkSwapchainCreateFlagsKHR(const char *s, Json::Value &obj, VkSwapchainCreateFlagsKHR &o)
11523 {
11524     o                = (VkSwapchainCreateFlagsKHR)0;
11525     std::string _res = obj.asString();
11526     std::vector<std::string> bitmasks;
11527     std::istringstream inputStream(_res);
11528     std::string tempStr;
11529     while (getline(inputStream, tempStr, '|'))
11530     {
11531         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
11532         bitmasks.push_back(tempStr);
11533     }
11534     for (auto &it : bitmasks)
11535     {
11536         o |= (VkSwapchainCreateFlagBitsKHR)VkSwapchainCreateFlagBitsKHR_map[it];
11537     }
11538 }
11539 
parse_VkDeviceGroupPresentModeFlagsKHR(const char * s,Json::Value & obj,VkDeviceGroupPresentModeFlagsKHR & o)11540 static void parse_VkDeviceGroupPresentModeFlagsKHR(const char *s, Json::Value &obj, VkDeviceGroupPresentModeFlagsKHR &o)
11541 {
11542     o                = (VkDeviceGroupPresentModeFlagsKHR)0;
11543     std::string _res = obj.asString();
11544     std::vector<std::string> bitmasks;
11545     std::istringstream inputStream(_res);
11546     std::string tempStr;
11547     while (getline(inputStream, tempStr, '|'))
11548     {
11549         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
11550         bitmasks.push_back(tempStr);
11551     }
11552     for (auto &it : bitmasks)
11553     {
11554         o |= (VkDeviceGroupPresentModeFlagBitsKHR)VkDeviceGroupPresentModeFlagBitsKHR_map[it];
11555     }
11556 }
11557 
parse_VkSwapchainCreateInfoKHR(const char * s,Json::Value & obj,VkSwapchainCreateInfoKHR & o)11558 static void parse_VkSwapchainCreateInfoKHR(const char *s, Json::Value &obj, VkSwapchainCreateInfoKHR &o)
11559 {
11560 
11561     parse_VkStructureType("sType", obj["sType"], (o.sType));
11562 
11563     o.pNext = (VkSwapchainCreateInfoKHR *)parsePNextChain(obj);
11564 
11565     parse_VkSwapchainCreateFlagsKHR("flags", obj["flags"], (o.flags));
11566 
11567     parse_uint32_t("minImageCount", obj["minImageCount"], (o.minImageCount));
11568 
11569     parse_VkFormat("imageFormat", obj["imageFormat"], (o.imageFormat));
11570 
11571     parse_VkColorSpaceKHR("imageColorSpace", obj["imageColorSpace"], (o.imageColorSpace));
11572 
11573     parse_VkExtent2D("imageExtent", obj["imageExtent"], (o.imageExtent));
11574 
11575     parse_uint32_t("imageArrayLayers", obj["imageArrayLayers"], (o.imageArrayLayers));
11576 
11577     parse_VkImageUsageFlags("imageUsage", obj["imageUsage"], (o.imageUsage));
11578 
11579     parse_VkSharingMode("imageSharingMode", obj["imageSharingMode"], (o.imageSharingMode));
11580 
11581     parse_uint32_t("queueFamilyIndexCount", obj["queueFamilyIndexCount"], (o.queueFamilyIndexCount));
11582 
11583     (o.pQueueFamilyIndices) = (uint32_t *)s_globalMem.allocate((o.queueFamilyIndexCount), sizeof(uint32_t));
11584     Json::Value &obj_pQueueFamilyIndices_arr = obj["pQueueFamilyIndices"];
11585     for (unsigned int i = 0; i < obj_pQueueFamilyIndices_arr.size(); i++)
11586     {
11587         parse_uint32_t("pQueueFamilyIndices", obj_pQueueFamilyIndices_arr[i],
11588                        const_cast<uint32_t &>((o.pQueueFamilyIndices[i])));
11589     }
11590 
11591     parse_VkSurfaceTransformFlagBitsKHR("preTransform", obj["preTransform"], (o.preTransform));
11592 
11593     parse_VkCompositeAlphaFlagBitsKHR("compositeAlpha", obj["compositeAlpha"], (o.compositeAlpha));
11594 
11595     parse_VkPresentModeKHR("presentMode", obj["presentMode"], (o.presentMode));
11596 
11597     parse_VkBool32("clipped", obj["clipped"], (o.clipped));
11598 }
11599 
parse_VkPresentInfoKHR(const char * s,Json::Value & obj,VkPresentInfoKHR & o)11600 static void parse_VkPresentInfoKHR(const char *s, Json::Value &obj, VkPresentInfoKHR &o)
11601 {
11602 
11603     parse_VkStructureType("sType", obj["sType"], (o.sType));
11604 
11605     o.pNext = (VkPresentInfoKHR *)parsePNextChain(obj);
11606 
11607     parse_uint32_t("waitSemaphoreCount", obj["waitSemaphoreCount"], (o.waitSemaphoreCount));
11608 
11609     (o.pWaitSemaphores) = (VkSemaphore *)s_globalMem.allocate((o.waitSemaphoreCount), sizeof(VkSemaphore));
11610     Json::Value &obj_pWaitSemaphores_arr = obj["pWaitSemaphores"];
11611     for (unsigned int i = 0; i < obj_pWaitSemaphores_arr.size(); i++)
11612     {
11613         parse_VkSemaphore("pWaitSemaphores", obj_pWaitSemaphores_arr[i],
11614                           const_cast<VkSemaphore &>((o.pWaitSemaphores[i])));
11615     }
11616 
11617     parse_uint32_t("swapchainCount", obj["swapchainCount"], (o.swapchainCount));
11618 
11619     (o.pSwapchains) = (VkSwapchainKHR *)s_globalMem.allocate((o.swapchainCount), sizeof(VkSwapchainKHR));
11620     Json::Value &obj_pSwapchains_arr = obj["pSwapchains"];
11621     for (unsigned int i = 0; i < obj_pSwapchains_arr.size(); i++)
11622     {
11623         parse_VkSwapchainKHR("pSwapchains", obj_pSwapchains_arr[i], const_cast<VkSwapchainKHR &>((o.pSwapchains[i])));
11624     }
11625 
11626     (o.pImageIndices)                  = (uint32_t *)s_globalMem.allocate((o.swapchainCount), sizeof(uint32_t));
11627     Json::Value &obj_pImageIndices_arr = obj["pImageIndices"];
11628     for (unsigned int i = 0; i < obj_pImageIndices_arr.size(); i++)
11629     {
11630         parse_uint32_t("pImageIndices", obj_pImageIndices_arr[i], const_cast<uint32_t &>((o.pImageIndices[i])));
11631     }
11632 }
11633 
parse_VkImageSwapchainCreateInfoKHR(const char * s,Json::Value & obj,VkImageSwapchainCreateInfoKHR & o)11634 static void parse_VkImageSwapchainCreateInfoKHR(const char *s, Json::Value &obj, VkImageSwapchainCreateInfoKHR &o)
11635 {
11636 
11637     parse_VkStructureType("sType", obj["sType"], (o.sType));
11638 
11639     o.pNext = (VkImageSwapchainCreateInfoKHR *)parsePNextChain(obj);
11640 }
11641 
parse_VkBindImageMemorySwapchainInfoKHR(const char * s,Json::Value & obj,VkBindImageMemorySwapchainInfoKHR & o)11642 static void parse_VkBindImageMemorySwapchainInfoKHR(const char *s, Json::Value &obj,
11643                                                     VkBindImageMemorySwapchainInfoKHR &o)
11644 {
11645 
11646     parse_VkStructureType("sType", obj["sType"], (o.sType));
11647 
11648     o.pNext = (VkBindImageMemorySwapchainInfoKHR *)parsePNextChain(obj);
11649 
11650     parse_uint32_t("imageIndex", obj["imageIndex"], (o.imageIndex));
11651 }
11652 
parse_VkAcquireNextImageInfoKHR(const char * s,Json::Value & obj,VkAcquireNextImageInfoKHR & o)11653 static void parse_VkAcquireNextImageInfoKHR(const char *s, Json::Value &obj, VkAcquireNextImageInfoKHR &o)
11654 {
11655 
11656     parse_VkStructureType("sType", obj["sType"], (o.sType));
11657 
11658     o.pNext = (VkAcquireNextImageInfoKHR *)parsePNextChain(obj);
11659 
11660     parse_uint64_t("timeout", obj["timeout"], (o.timeout));
11661 
11662     parse_uint32_t("deviceMask", obj["deviceMask"], (o.deviceMask));
11663 }
11664 
parse_VkDeviceGroupPresentCapabilitiesKHR(const char * s,Json::Value & obj,VkDeviceGroupPresentCapabilitiesKHR & o)11665 static void parse_VkDeviceGroupPresentCapabilitiesKHR(const char *s, Json::Value &obj,
11666                                                       VkDeviceGroupPresentCapabilitiesKHR &o)
11667 {
11668 
11669     parse_VkStructureType("sType", obj["sType"], (o.sType));
11670 
11671     o.pNext = (VkDeviceGroupPresentCapabilitiesKHR *)parsePNextChain(obj);
11672 
11673     Json::Value &obj_presentMask_arr = obj["presentMask"];
11674     for (unsigned int i = 0; i < obj_presentMask_arr.size(); i++)
11675     {
11676         parse_uint32_t("presentMask", obj_presentMask_arr[i], const_cast<uint32_t &>((o.presentMask[i])));
11677     }
11678 
11679     parse_VkDeviceGroupPresentModeFlagsKHR("modes", obj["modes"], (o.modes));
11680 }
11681 
parse_VkDeviceGroupPresentInfoKHR(const char * s,Json::Value & obj,VkDeviceGroupPresentInfoKHR & o)11682 static void parse_VkDeviceGroupPresentInfoKHR(const char *s, Json::Value &obj, VkDeviceGroupPresentInfoKHR &o)
11683 {
11684 
11685     parse_VkStructureType("sType", obj["sType"], (o.sType));
11686 
11687     o.pNext = (VkDeviceGroupPresentInfoKHR *)parsePNextChain(obj);
11688 
11689     parse_uint32_t("swapchainCount", obj["swapchainCount"], (o.swapchainCount));
11690 
11691     (o.pDeviceMasks)                  = (uint32_t *)s_globalMem.allocate((o.swapchainCount), sizeof(uint32_t));
11692     Json::Value &obj_pDeviceMasks_arr = obj["pDeviceMasks"];
11693     for (unsigned int i = 0; i < obj_pDeviceMasks_arr.size(); i++)
11694     {
11695         parse_uint32_t("pDeviceMasks", obj_pDeviceMasks_arr[i], const_cast<uint32_t &>((o.pDeviceMasks[i])));
11696     }
11697 
11698     parse_VkDeviceGroupPresentModeFlagBitsKHR("mode", obj["mode"], (o.mode));
11699 }
11700 
parse_VkDeviceGroupSwapchainCreateInfoKHR(const char * s,Json::Value & obj,VkDeviceGroupSwapchainCreateInfoKHR & o)11701 static void parse_VkDeviceGroupSwapchainCreateInfoKHR(const char *s, Json::Value &obj,
11702                                                       VkDeviceGroupSwapchainCreateInfoKHR &o)
11703 {
11704 
11705     parse_VkStructureType("sType", obj["sType"], (o.sType));
11706 
11707     o.pNext = (VkDeviceGroupSwapchainCreateInfoKHR *)parsePNextChain(obj);
11708 
11709     parse_VkDeviceGroupPresentModeFlagsKHR("modes", obj["modes"], (o.modes));
11710 }
11711 
parse_VkDisplayKHR(const char * s,Json::Value & obj,VkDisplayKHR & o)11712 static void parse_VkDisplayKHR(const char *s, Json::Value &obj, VkDisplayKHR &o)
11713 {
11714     //     std::string _res = obj.asString();
11715 }
11716 
parse_VkDisplayModeKHR(const char * s,Json::Value & obj,VkDisplayModeKHR & o)11717 static void parse_VkDisplayModeKHR(const char *s, Json::Value &obj, VkDisplayModeKHR &o)
11718 {
11719     //     std::string _res = obj.asString();
11720 }
11721 
11722 static std::map<std::string, int> VkDisplayPlaneAlphaFlagBitsKHR_map = {
11723     std::make_pair("VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR", 1UL << 0),
11724     std::make_pair("VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR", 1UL << 1),
11725     std::make_pair("VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR", 1UL << 2),
11726     std::make_pair("VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR", 1UL << 3),
11727 };
parse_VkDisplayPlaneAlphaFlagBitsKHR(const char * s,Json::Value & obj,VkDisplayPlaneAlphaFlagBitsKHR & o)11728 static void parse_VkDisplayPlaneAlphaFlagBitsKHR(const char *s, Json::Value &obj, VkDisplayPlaneAlphaFlagBitsKHR &o)
11729 {
11730     std::string _res = obj.asString();
11731     o                = (VkDisplayPlaneAlphaFlagBitsKHR)VkDisplayPlaneAlphaFlagBitsKHR_map[std::string(_res)];
11732 }
11733 
parse_VkDisplayModeCreateFlagsKHR(const char * s,Json::Value & obj,VkDisplayModeCreateFlagsKHR & o)11734 static void parse_VkDisplayModeCreateFlagsKHR(const char *s, Json::Value &obj, VkDisplayModeCreateFlagsKHR &o)
11735 {
11736     if (obj.isString())
11737     {
11738         std::string _res = obj.asString();
11739         sscanf(_res.c_str(), "%u", &o);
11740     }
11741     else
11742     {
11743         o = obj.asUInt();
11744     }
11745 }
11746 
parse_VkDisplayPlaneAlphaFlagsKHR(const char * s,Json::Value & obj,VkDisplayPlaneAlphaFlagsKHR & o)11747 static void parse_VkDisplayPlaneAlphaFlagsKHR(const char *s, Json::Value &obj, VkDisplayPlaneAlphaFlagsKHR &o)
11748 {
11749     o                = (VkDisplayPlaneAlphaFlagsKHR)0;
11750     std::string _res = obj.asString();
11751     std::vector<std::string> bitmasks;
11752     std::istringstream inputStream(_res);
11753     std::string tempStr;
11754     while (getline(inputStream, tempStr, '|'))
11755     {
11756         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
11757         bitmasks.push_back(tempStr);
11758     }
11759     for (auto &it : bitmasks)
11760     {
11761         o |= (VkDisplayPlaneAlphaFlagBitsKHR)VkDisplayPlaneAlphaFlagBitsKHR_map[it];
11762     }
11763 }
11764 
parse_VkDisplaySurfaceCreateFlagsKHR(const char * s,Json::Value & obj,VkDisplaySurfaceCreateFlagsKHR & o)11765 static void parse_VkDisplaySurfaceCreateFlagsKHR(const char *s, Json::Value &obj, VkDisplaySurfaceCreateFlagsKHR &o)
11766 {
11767     if (obj.isString())
11768     {
11769         std::string _res = obj.asString();
11770         sscanf(_res.c_str(), "%u", &o);
11771     }
11772     else
11773     {
11774         o = obj.asUInt();
11775     }
11776 }
11777 
parse_VkDisplayModeParametersKHR(const char * s,Json::Value & obj,VkDisplayModeParametersKHR & o)11778 static void parse_VkDisplayModeParametersKHR(const char *s, Json::Value &obj, VkDisplayModeParametersKHR &o)
11779 {
11780 
11781     parse_VkExtent2D("visibleRegion", obj["visibleRegion"], (o.visibleRegion));
11782 
11783     parse_uint32_t("refreshRate", obj["refreshRate"], (o.refreshRate));
11784 }
11785 
parse_VkDisplayModeCreateInfoKHR(const char * s,Json::Value & obj,VkDisplayModeCreateInfoKHR & o)11786 static void parse_VkDisplayModeCreateInfoKHR(const char *s, Json::Value &obj, VkDisplayModeCreateInfoKHR &o)
11787 {
11788 
11789     parse_VkStructureType("sType", obj["sType"], (o.sType));
11790 
11791     o.pNext = (VkDisplayModeCreateInfoKHR *)parsePNextChain(obj);
11792 
11793     parse_VkDisplayModeCreateFlagsKHR("flags", obj["flags"], (o.flags));
11794 
11795     parse_VkDisplayModeParametersKHR("parameters", obj["parameters"], (o.parameters));
11796 }
11797 
parse_VkDisplayModePropertiesKHR(const char * s,Json::Value & obj,VkDisplayModePropertiesKHR & o)11798 static void parse_VkDisplayModePropertiesKHR(const char *s, Json::Value &obj, VkDisplayModePropertiesKHR &o)
11799 {
11800 
11801     parse_VkDisplayModeParametersKHR("parameters", obj["parameters"], (o.parameters));
11802 }
11803 
parse_VkDisplayPlaneCapabilitiesKHR(const char * s,Json::Value & obj,VkDisplayPlaneCapabilitiesKHR & o)11804 static void parse_VkDisplayPlaneCapabilitiesKHR(const char *s, Json::Value &obj, VkDisplayPlaneCapabilitiesKHR &o)
11805 {
11806 
11807     parse_VkDisplayPlaneAlphaFlagsKHR("supportedAlpha", obj["supportedAlpha"], (o.supportedAlpha));
11808 
11809     parse_VkOffset2D("minSrcPosition", obj["minSrcPosition"], (o.minSrcPosition));
11810 
11811     parse_VkOffset2D("maxSrcPosition", obj["maxSrcPosition"], (o.maxSrcPosition));
11812 
11813     parse_VkExtent2D("minSrcExtent", obj["minSrcExtent"], (o.minSrcExtent));
11814 
11815     parse_VkExtent2D("maxSrcExtent", obj["maxSrcExtent"], (o.maxSrcExtent));
11816 
11817     parse_VkOffset2D("minDstPosition", obj["minDstPosition"], (o.minDstPosition));
11818 
11819     parse_VkOffset2D("maxDstPosition", obj["maxDstPosition"], (o.maxDstPosition));
11820 
11821     parse_VkExtent2D("minDstExtent", obj["minDstExtent"], (o.minDstExtent));
11822 
11823     parse_VkExtent2D("maxDstExtent", obj["maxDstExtent"], (o.maxDstExtent));
11824 }
11825 
parse_VkDisplayPlanePropertiesKHR(const char * s,Json::Value & obj,VkDisplayPlanePropertiesKHR & o)11826 static void parse_VkDisplayPlanePropertiesKHR(const char *s, Json::Value &obj, VkDisplayPlanePropertiesKHR &o)
11827 {
11828 
11829     parse_uint32_t("currentStackIndex", obj["currentStackIndex"], (o.currentStackIndex));
11830 }
11831 
parse_VkDisplayPropertiesKHR(const char * s,Json::Value & obj,VkDisplayPropertiesKHR & o)11832 static void parse_VkDisplayPropertiesKHR(const char *s, Json::Value &obj, VkDisplayPropertiesKHR &o)
11833 {
11834 
11835     /** TODO: Handle this - displayName **/
11836 
11837     parse_VkExtent2D("physicalDimensions", obj["physicalDimensions"], (o.physicalDimensions));
11838 
11839     parse_VkExtent2D("physicalResolution", obj["physicalResolution"], (o.physicalResolution));
11840 
11841     parse_VkSurfaceTransformFlagsKHR("supportedTransforms", obj["supportedTransforms"], (o.supportedTransforms));
11842 
11843     parse_VkBool32("planeReorderPossible", obj["planeReorderPossible"], (o.planeReorderPossible));
11844 
11845     parse_VkBool32("persistentContent", obj["persistentContent"], (o.persistentContent));
11846 }
11847 
parse_VkDisplaySurfaceCreateInfoKHR(const char * s,Json::Value & obj,VkDisplaySurfaceCreateInfoKHR & o)11848 static void parse_VkDisplaySurfaceCreateInfoKHR(const char *s, Json::Value &obj, VkDisplaySurfaceCreateInfoKHR &o)
11849 {
11850 
11851     parse_VkStructureType("sType", obj["sType"], (o.sType));
11852 
11853     o.pNext = (VkDisplaySurfaceCreateInfoKHR *)parsePNextChain(obj);
11854 
11855     parse_VkDisplaySurfaceCreateFlagsKHR("flags", obj["flags"], (o.flags));
11856 
11857     parse_uint32_t("planeIndex", obj["planeIndex"], (o.planeIndex));
11858 
11859     parse_uint32_t("planeStackIndex", obj["planeStackIndex"], (o.planeStackIndex));
11860 
11861     parse_VkSurfaceTransformFlagBitsKHR("transform", obj["transform"], (o.transform));
11862 
11863     parse_float("globalAlpha", obj["globalAlpha"], (o.globalAlpha));
11864 
11865     parse_VkDisplayPlaneAlphaFlagBitsKHR("alphaMode", obj["alphaMode"], (o.alphaMode));
11866 
11867     parse_VkExtent2D("imageExtent", obj["imageExtent"], (o.imageExtent));
11868 }
11869 
parse_VkDisplayPresentInfoKHR(const char * s,Json::Value & obj,VkDisplayPresentInfoKHR & o)11870 static void parse_VkDisplayPresentInfoKHR(const char *s, Json::Value &obj, VkDisplayPresentInfoKHR &o)
11871 {
11872 
11873     parse_VkStructureType("sType", obj["sType"], (o.sType));
11874 
11875     o.pNext = (VkDisplayPresentInfoKHR *)parsePNextChain(obj);
11876 
11877     parse_VkRect2D("srcRect", obj["srcRect"], (o.srcRect));
11878 
11879     parse_VkRect2D("dstRect", obj["dstRect"], (o.dstRect));
11880 
11881     parse_VkBool32("persistent", obj["persistent"], (o.persistent));
11882 }
11883 
parse_VkImportMemoryFdInfoKHR(const char * s,Json::Value & obj,VkImportMemoryFdInfoKHR & o)11884 static void parse_VkImportMemoryFdInfoKHR(const char *s, Json::Value &obj, VkImportMemoryFdInfoKHR &o)
11885 {
11886 
11887     parse_VkStructureType("sType", obj["sType"], (o.sType));
11888 
11889     o.pNext = (VkImportMemoryFdInfoKHR *)parsePNextChain(obj);
11890 
11891     parse_VkExternalMemoryHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
11892 
11893     parse_int("fd", obj["fd"], (o.fd));
11894 }
11895 
parse_VkMemoryFdPropertiesKHR(const char * s,Json::Value & obj,VkMemoryFdPropertiesKHR & o)11896 static void parse_VkMemoryFdPropertiesKHR(const char *s, Json::Value &obj, VkMemoryFdPropertiesKHR &o)
11897 {
11898 
11899     parse_VkStructureType("sType", obj["sType"], (o.sType));
11900 
11901     o.pNext = (VkMemoryFdPropertiesKHR *)parsePNextChain(obj);
11902 
11903     parse_uint32_t("memoryTypeBits", obj["memoryTypeBits"], (o.memoryTypeBits));
11904 }
11905 
parse_VkMemoryGetFdInfoKHR(const char * s,Json::Value & obj,VkMemoryGetFdInfoKHR & o)11906 static void parse_VkMemoryGetFdInfoKHR(const char *s, Json::Value &obj, VkMemoryGetFdInfoKHR &o)
11907 {
11908 
11909     parse_VkStructureType("sType", obj["sType"], (o.sType));
11910 
11911     o.pNext = (VkMemoryGetFdInfoKHR *)parsePNextChain(obj);
11912 
11913     parse_VkExternalMemoryHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
11914 }
11915 
parse_VkImportSemaphoreFdInfoKHR(const char * s,Json::Value & obj,VkImportSemaphoreFdInfoKHR & o)11916 static void parse_VkImportSemaphoreFdInfoKHR(const char *s, Json::Value &obj, VkImportSemaphoreFdInfoKHR &o)
11917 {
11918 
11919     parse_VkStructureType("sType", obj["sType"], (o.sType));
11920 
11921     o.pNext = (VkImportSemaphoreFdInfoKHR *)parsePNextChain(obj);
11922 
11923     parse_VkSemaphoreImportFlags("flags", obj["flags"], (o.flags));
11924 
11925     parse_VkExternalSemaphoreHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
11926 
11927     parse_int("fd", obj["fd"], (o.fd));
11928 }
11929 
parse_VkSemaphoreGetFdInfoKHR(const char * s,Json::Value & obj,VkSemaphoreGetFdInfoKHR & o)11930 static void parse_VkSemaphoreGetFdInfoKHR(const char *s, Json::Value &obj, VkSemaphoreGetFdInfoKHR &o)
11931 {
11932 
11933     parse_VkStructureType("sType", obj["sType"], (o.sType));
11934 
11935     o.pNext = (VkSemaphoreGetFdInfoKHR *)parsePNextChain(obj);
11936 
11937     parse_VkExternalSemaphoreHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
11938 }
11939 
parse_VkRectLayerKHR(const char * s,Json::Value & obj,VkRectLayerKHR & o)11940 static void parse_VkRectLayerKHR(const char *s, Json::Value &obj, VkRectLayerKHR &o)
11941 {
11942 
11943     parse_VkOffset2D("offset", obj["offset"], (o.offset));
11944 
11945     parse_VkExtent2D("extent", obj["extent"], (o.extent));
11946 
11947     parse_uint32_t("layer", obj["layer"], (o.layer));
11948 }
11949 
parse_VkPresentRegionKHR(const char * s,Json::Value & obj,VkPresentRegionKHR & o)11950 static void parse_VkPresentRegionKHR(const char *s, Json::Value &obj, VkPresentRegionKHR &o)
11951 {
11952 
11953     parse_uint32_t("rectangleCount", obj["rectangleCount"], (o.rectangleCount));
11954 
11955     (o.pRectangles)              = (VkRectLayerKHR *)s_globalMem.allocate((o.rectangleCount), sizeof(VkRectLayerKHR));
11956     Json::Value &obj_pRectangles = obj["pRectangles"];
11957     if (obj_pRectangles.size() == 0)
11958         (o.pRectangles) = nullptr;
11959     else
11960     {
11961         for (unsigned int i = 0; i < (o.rectangleCount); i++)
11962         {
11963             parse_VkRectLayerKHR("pRectangles", obj_pRectangles[i], const_cast<VkRectLayerKHR &>((o.pRectangles[i])));
11964         }
11965     }
11966 }
11967 
parse_VkPresentRegionsKHR(const char * s,Json::Value & obj,VkPresentRegionsKHR & o)11968 static void parse_VkPresentRegionsKHR(const char *s, Json::Value &obj, VkPresentRegionsKHR &o)
11969 {
11970 
11971     parse_VkStructureType("sType", obj["sType"], (o.sType));
11972 
11973     o.pNext = (VkPresentRegionsKHR *)parsePNextChain(obj);
11974 
11975     parse_uint32_t("swapchainCount", obj["swapchainCount"], (o.swapchainCount));
11976 
11977     (o.pRegions) = (VkPresentRegionKHR *)s_globalMem.allocate((o.swapchainCount), sizeof(VkPresentRegionKHR));
11978     Json::Value &obj_pRegions = obj["pRegions"];
11979     if (obj_pRegions.size() == 0)
11980         (o.pRegions) = nullptr;
11981     else
11982     {
11983         for (unsigned int i = 0; i < (o.swapchainCount); i++)
11984         {
11985             parse_VkPresentRegionKHR("pRegions", obj_pRegions[i], const_cast<VkPresentRegionKHR &>((o.pRegions[i])));
11986         }
11987     }
11988 }
11989 
parse_VkSharedPresentSurfaceCapabilitiesKHR(const char * s,Json::Value & obj,VkSharedPresentSurfaceCapabilitiesKHR & o)11990 static void parse_VkSharedPresentSurfaceCapabilitiesKHR(const char *s, Json::Value &obj,
11991                                                         VkSharedPresentSurfaceCapabilitiesKHR &o)
11992 {
11993 
11994     parse_VkStructureType("sType", obj["sType"], (o.sType));
11995 
11996     o.pNext = (VkSharedPresentSurfaceCapabilitiesKHR *)parsePNextChain(obj);
11997 
11998     parse_VkImageUsageFlags("sharedPresentSupportedUsageFlags", obj["sharedPresentSupportedUsageFlags"],
11999                             (o.sharedPresentSupportedUsageFlags));
12000 }
12001 
parse_VkImportFenceFdInfoKHR(const char * s,Json::Value & obj,VkImportFenceFdInfoKHR & o)12002 static void parse_VkImportFenceFdInfoKHR(const char *s, Json::Value &obj, VkImportFenceFdInfoKHR &o)
12003 {
12004 
12005     parse_VkStructureType("sType", obj["sType"], (o.sType));
12006 
12007     o.pNext = (VkImportFenceFdInfoKHR *)parsePNextChain(obj);
12008 
12009     parse_VkFenceImportFlags("flags", obj["flags"], (o.flags));
12010 
12011     parse_VkExternalFenceHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
12012 
12013     parse_int("fd", obj["fd"], (o.fd));
12014 }
12015 
parse_VkFenceGetFdInfoKHR(const char * s,Json::Value & obj,VkFenceGetFdInfoKHR & o)12016 static void parse_VkFenceGetFdInfoKHR(const char *s, Json::Value &obj, VkFenceGetFdInfoKHR &o)
12017 {
12018 
12019     parse_VkStructureType("sType", obj["sType"], (o.sType));
12020 
12021     o.pNext = (VkFenceGetFdInfoKHR *)parsePNextChain(obj);
12022 
12023     parse_VkExternalFenceHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
12024 }
12025 
12026 static std::map<std::string, int> VkPerformanceCounterUnitKHR_map = {
12027     std::make_pair("VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR", 0),
12028     std::make_pair("VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR", 1),
12029     std::make_pair("VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR", 2),
12030     std::make_pair("VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR", 3),
12031     std::make_pair("VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR", 4),
12032     std::make_pair("VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR", 5),
12033     std::make_pair("VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR", 6),
12034     std::make_pair("VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR", 7),
12035     std::make_pair("VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR", 8),
12036     std::make_pair("VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR", 9),
12037     std::make_pair("VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR", 10),
12038 };
parse_VkPerformanceCounterUnitKHR(const char * s,Json::Value & obj,VkPerformanceCounterUnitKHR & o)12039 static void parse_VkPerformanceCounterUnitKHR(const char *s, Json::Value &obj, VkPerformanceCounterUnitKHR &o)
12040 {
12041     std::string _res = obj.asString();
12042     o                = (VkPerformanceCounterUnitKHR)VkPerformanceCounterUnitKHR_map[std::string(_res)];
12043 }
12044 
12045 static std::map<std::string, int> VkPerformanceCounterScopeKHR_map = {
12046     std::make_pair("VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR", 0),
12047     std::make_pair("VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR", 1),
12048     std::make_pair("VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR", 2),
12049 };
parse_VkPerformanceCounterScopeKHR(const char * s,Json::Value & obj,VkPerformanceCounterScopeKHR & o)12050 static void parse_VkPerformanceCounterScopeKHR(const char *s, Json::Value &obj, VkPerformanceCounterScopeKHR &o)
12051 {
12052     std::string _res = obj.asString();
12053     o                = (VkPerformanceCounterScopeKHR)VkPerformanceCounterScopeKHR_map[std::string(_res)];
12054 }
12055 
12056 static std::map<std::string, int> VkPerformanceCounterStorageKHR_map = {
12057     std::make_pair("VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR", 0),
12058     std::make_pair("VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR", 1),
12059     std::make_pair("VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR", 2),
12060     std::make_pair("VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR", 3),
12061     std::make_pair("VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR", 4),
12062     std::make_pair("VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR", 5),
12063 };
parse_VkPerformanceCounterStorageKHR(const char * s,Json::Value & obj,VkPerformanceCounterStorageKHR & o)12064 static void parse_VkPerformanceCounterStorageKHR(const char *s, Json::Value &obj, VkPerformanceCounterStorageKHR &o)
12065 {
12066     std::string _res = obj.asString();
12067     o                = (VkPerformanceCounterStorageKHR)VkPerformanceCounterStorageKHR_map[std::string(_res)];
12068 }
12069 
12070 static std::map<std::string, int> VkPerformanceCounterDescriptionFlagBitsKHR_map = {
12071     std::make_pair("VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR", 1UL << 0),
12072     std::make_pair("VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR", 1UL << 1),
12073 };
parse_VkPerformanceCounterDescriptionFlagBitsKHR(const char * s,Json::Value & obj,VkPerformanceCounterDescriptionFlagBitsKHR & o)12074 static void parse_VkPerformanceCounterDescriptionFlagBitsKHR(const char *s, Json::Value &obj,
12075                                                              VkPerformanceCounterDescriptionFlagBitsKHR &o)
12076 {
12077     std::string _res = obj.asString();
12078     o = (VkPerformanceCounterDescriptionFlagBitsKHR)VkPerformanceCounterDescriptionFlagBitsKHR_map[std::string(_res)];
12079 }
12080 
12081 static std::map<std::string, int> VkAcquireProfilingLockFlagBitsKHR_map = {};
parse_VkAcquireProfilingLockFlagBitsKHR(const char * s,Json::Value & obj,VkAcquireProfilingLockFlagBitsKHR & o)12082 static void parse_VkAcquireProfilingLockFlagBitsKHR(const char *s, Json::Value &obj,
12083                                                     VkAcquireProfilingLockFlagBitsKHR &o)
12084 {
12085     std::string _res = obj.asString();
12086     o                = (VkAcquireProfilingLockFlagBitsKHR)VkAcquireProfilingLockFlagBitsKHR_map[std::string(_res)];
12087 }
12088 
parse_VkPerformanceCounterDescriptionFlagsKHR(const char * s,Json::Value & obj,VkPerformanceCounterDescriptionFlagsKHR & o)12089 static void parse_VkPerformanceCounterDescriptionFlagsKHR(const char *s, Json::Value &obj,
12090                                                           VkPerformanceCounterDescriptionFlagsKHR &o)
12091 {
12092     o                = (VkPerformanceCounterDescriptionFlagsKHR)0;
12093     std::string _res = obj.asString();
12094     std::vector<std::string> bitmasks;
12095     std::istringstream inputStream(_res);
12096     std::string tempStr;
12097     while (getline(inputStream, tempStr, '|'))
12098     {
12099         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
12100         bitmasks.push_back(tempStr);
12101     }
12102     for (auto &it : bitmasks)
12103     {
12104         o |= (VkPerformanceCounterDescriptionFlagBitsKHR)VkPerformanceCounterDescriptionFlagBitsKHR_map[it];
12105     }
12106 }
12107 
parse_VkAcquireProfilingLockFlagsKHR(const char * s,Json::Value & obj,VkAcquireProfilingLockFlagsKHR & o)12108 static void parse_VkAcquireProfilingLockFlagsKHR(const char *s, Json::Value &obj, VkAcquireProfilingLockFlagsKHR &o)
12109 {
12110     o                = (VkAcquireProfilingLockFlagsKHR)0;
12111     std::string _res = obj.asString();
12112     std::vector<std::string> bitmasks;
12113     std::istringstream inputStream(_res);
12114     std::string tempStr;
12115     while (getline(inputStream, tempStr, '|'))
12116     {
12117         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
12118         bitmasks.push_back(tempStr);
12119     }
12120     for (auto &it : bitmasks)
12121     {
12122         o |= (VkAcquireProfilingLockFlagBitsKHR)VkAcquireProfilingLockFlagBitsKHR_map[it];
12123     }
12124 }
12125 
parse_VkPhysicalDevicePerformanceQueryFeaturesKHR(const char * s,Json::Value & obj,VkPhysicalDevicePerformanceQueryFeaturesKHR & o)12126 static void parse_VkPhysicalDevicePerformanceQueryFeaturesKHR(const char *s, Json::Value &obj,
12127                                                               VkPhysicalDevicePerformanceQueryFeaturesKHR &o)
12128 {
12129 
12130     parse_VkStructureType("sType", obj["sType"], (o.sType));
12131 
12132     o.pNext = (VkPhysicalDevicePerformanceQueryFeaturesKHR *)parsePNextChain(obj);
12133 
12134     parse_VkBool32("performanceCounterQueryPools", obj["performanceCounterQueryPools"],
12135                    (o.performanceCounterQueryPools));
12136 
12137     parse_VkBool32("performanceCounterMultipleQueryPools", obj["performanceCounterMultipleQueryPools"],
12138                    (o.performanceCounterMultipleQueryPools));
12139 }
12140 
parse_VkPhysicalDevicePerformanceQueryPropertiesKHR(const char * s,Json::Value & obj,VkPhysicalDevicePerformanceQueryPropertiesKHR & o)12141 static void parse_VkPhysicalDevicePerformanceQueryPropertiesKHR(const char *s, Json::Value &obj,
12142                                                                 VkPhysicalDevicePerformanceQueryPropertiesKHR &o)
12143 {
12144 
12145     parse_VkStructureType("sType", obj["sType"], (o.sType));
12146 
12147     o.pNext = (VkPhysicalDevicePerformanceQueryPropertiesKHR *)parsePNextChain(obj);
12148 
12149     parse_VkBool32("allowCommandBufferQueryCopies", obj["allowCommandBufferQueryCopies"],
12150                    (o.allowCommandBufferQueryCopies));
12151 }
12152 
parse_VkPerformanceCounterKHR(const char * s,Json::Value & obj,VkPerformanceCounterKHR & o)12153 static void parse_VkPerformanceCounterKHR(const char *s, Json::Value &obj, VkPerformanceCounterKHR &o)
12154 {
12155 
12156     parse_VkStructureType("sType", obj["sType"], (o.sType));
12157 
12158     o.pNext = (VkPerformanceCounterKHR *)parsePNextChain(obj);
12159 
12160     parse_VkPerformanceCounterUnitKHR("unit", obj["unit"], (o.unit));
12161 
12162     parse_VkPerformanceCounterScopeKHR("scope", obj["scope"], (o.scope));
12163 
12164     parse_VkPerformanceCounterStorageKHR("storage", obj["storage"], (o.storage));
12165 
12166     Json::Value &obj_uuid_arr = obj["uuid"];
12167     for (unsigned int i = 0; i < obj_uuid_arr.size(); i++)
12168     {
12169         parse_uint8_t("uuid", obj_uuid_arr[i], const_cast<uint8_t &>((o.uuid[i])));
12170     }
12171 }
12172 
parse_VkPerformanceCounterDescriptionKHR(const char * s,Json::Value & obj,VkPerformanceCounterDescriptionKHR & o)12173 static void parse_VkPerformanceCounterDescriptionKHR(const char *s, Json::Value &obj,
12174                                                      VkPerformanceCounterDescriptionKHR &o)
12175 {
12176 
12177     parse_VkStructureType("sType", obj["sType"], (o.sType));
12178 
12179     o.pNext = (VkPerformanceCounterDescriptionKHR *)parsePNextChain(obj);
12180 
12181     parse_VkPerformanceCounterDescriptionFlagsKHR("flags", obj["flags"], (o.flags));
12182 
12183     /** TODO: Handle this - name **/
12184 
12185     /** TODO: Handle this - category **/
12186 
12187     /** TODO: Handle this - description **/
12188 }
12189 
parse_VkQueryPoolPerformanceCreateInfoKHR(const char * s,Json::Value & obj,VkQueryPoolPerformanceCreateInfoKHR & o)12190 static void parse_VkQueryPoolPerformanceCreateInfoKHR(const char *s, Json::Value &obj,
12191                                                       VkQueryPoolPerformanceCreateInfoKHR &o)
12192 {
12193 
12194     parse_VkStructureType("sType", obj["sType"], (o.sType));
12195 
12196     o.pNext = (VkQueryPoolPerformanceCreateInfoKHR *)parsePNextChain(obj);
12197 
12198     parse_uint32_t("queueFamilyIndex", obj["queueFamilyIndex"], (o.queueFamilyIndex));
12199 
12200     parse_uint32_t("counterIndexCount", obj["counterIndexCount"], (o.counterIndexCount));
12201 
12202     (o.pCounterIndices)                  = (uint32_t *)s_globalMem.allocate((o.counterIndexCount), sizeof(uint32_t));
12203     Json::Value &obj_pCounterIndices_arr = obj["pCounterIndices"];
12204     for (unsigned int i = 0; i < obj_pCounterIndices_arr.size(); i++)
12205     {
12206         parse_uint32_t("pCounterIndices", obj_pCounterIndices_arr[i], const_cast<uint32_t &>((o.pCounterIndices[i])));
12207     }
12208 }
12209 
parse_VkPerformanceCounterResultKHR(const char * s,Json::Value & obj,VkPerformanceCounterResultKHR & o)12210 static void parse_VkPerformanceCounterResultKHR(const char *s, Json::Value &obj, VkPerformanceCounterResultKHR &o)
12211 {
12212 
12213     parse_int32_t("int32", obj["int32"], (o.int32));
12214 
12215     parse_int64_t("int64", obj["int64"], (o.int64));
12216 
12217     parse_uint32_t("uint32", obj["uint32"], (o.uint32));
12218 
12219     parse_uint64_t("uint64", obj["uint64"], (o.uint64));
12220 
12221     parse_float("float32", obj["float32"], (o.float32));
12222 
12223     parse_double("float64", obj["float64"], (o.float64));
12224 }
12225 
parse_VkAcquireProfilingLockInfoKHR(const char * s,Json::Value & obj,VkAcquireProfilingLockInfoKHR & o)12226 static void parse_VkAcquireProfilingLockInfoKHR(const char *s, Json::Value &obj, VkAcquireProfilingLockInfoKHR &o)
12227 {
12228 
12229     parse_VkStructureType("sType", obj["sType"], (o.sType));
12230 
12231     o.pNext = (VkAcquireProfilingLockInfoKHR *)parsePNextChain(obj);
12232 
12233     parse_VkAcquireProfilingLockFlagsKHR("flags", obj["flags"], (o.flags));
12234 
12235     parse_uint64_t("timeout", obj["timeout"], (o.timeout));
12236 }
12237 
parse_VkPerformanceQuerySubmitInfoKHR(const char * s,Json::Value & obj,VkPerformanceQuerySubmitInfoKHR & o)12238 static void parse_VkPerformanceQuerySubmitInfoKHR(const char *s, Json::Value &obj, VkPerformanceQuerySubmitInfoKHR &o)
12239 {
12240 
12241     parse_VkStructureType("sType", obj["sType"], (o.sType));
12242 
12243     o.pNext = (VkPerformanceQuerySubmitInfoKHR *)parsePNextChain(obj);
12244 
12245     parse_uint32_t("counterPassIndex", obj["counterPassIndex"], (o.counterPassIndex));
12246 }
12247 
parse_VkPerformanceQueryReservationInfoKHR(const char * s,Json::Value & obj,VkPerformanceQueryReservationInfoKHR & o)12248 static void parse_VkPerformanceQueryReservationInfoKHR(const char *s, Json::Value &obj,
12249                                                        VkPerformanceQueryReservationInfoKHR &o)
12250 {
12251 
12252     parse_VkStructureType("sType", obj["sType"], (o.sType));
12253 
12254     o.pNext = (VkPerformanceQueryReservationInfoKHR *)parsePNextChain(obj);
12255 
12256     parse_uint32_t("maxPerformanceQueriesPerPool", obj["maxPerformanceQueriesPerPool"],
12257                    (o.maxPerformanceQueriesPerPool));
12258 }
12259 
parse_VkPhysicalDeviceSurfaceInfo2KHR(const char * s,Json::Value & obj,VkPhysicalDeviceSurfaceInfo2KHR & o)12260 static void parse_VkPhysicalDeviceSurfaceInfo2KHR(const char *s, Json::Value &obj, VkPhysicalDeviceSurfaceInfo2KHR &o)
12261 {
12262 
12263     parse_VkStructureType("sType", obj["sType"], (o.sType));
12264 
12265     o.pNext = (VkPhysicalDeviceSurfaceInfo2KHR *)parsePNextChain(obj);
12266 }
12267 
parse_VkSurfaceCapabilities2KHR(const char * s,Json::Value & obj,VkSurfaceCapabilities2KHR & o)12268 static void parse_VkSurfaceCapabilities2KHR(const char *s, Json::Value &obj, VkSurfaceCapabilities2KHR &o)
12269 {
12270 
12271     parse_VkStructureType("sType", obj["sType"], (o.sType));
12272 
12273     o.pNext = (VkSurfaceCapabilities2KHR *)parsePNextChain(obj);
12274 
12275     parse_VkSurfaceCapabilitiesKHR("surfaceCapabilities", obj["surfaceCapabilities"], (o.surfaceCapabilities));
12276 }
12277 
parse_VkSurfaceFormat2KHR(const char * s,Json::Value & obj,VkSurfaceFormat2KHR & o)12278 static void parse_VkSurfaceFormat2KHR(const char *s, Json::Value &obj, VkSurfaceFormat2KHR &o)
12279 {
12280 
12281     parse_VkStructureType("sType", obj["sType"], (o.sType));
12282 
12283     o.pNext = (VkSurfaceFormat2KHR *)parsePNextChain(obj);
12284 
12285     parse_VkSurfaceFormatKHR("surfaceFormat", obj["surfaceFormat"], (o.surfaceFormat));
12286 }
12287 
parse_VkDisplayProperties2KHR(const char * s,Json::Value & obj,VkDisplayProperties2KHR & o)12288 static void parse_VkDisplayProperties2KHR(const char *s, Json::Value &obj, VkDisplayProperties2KHR &o)
12289 {
12290 
12291     parse_VkStructureType("sType", obj["sType"], (o.sType));
12292 
12293     o.pNext = (VkDisplayProperties2KHR *)parsePNextChain(obj);
12294 
12295     parse_VkDisplayPropertiesKHR("displayProperties", obj["displayProperties"], (o.displayProperties));
12296 }
12297 
parse_VkDisplayPlaneProperties2KHR(const char * s,Json::Value & obj,VkDisplayPlaneProperties2KHR & o)12298 static void parse_VkDisplayPlaneProperties2KHR(const char *s, Json::Value &obj, VkDisplayPlaneProperties2KHR &o)
12299 {
12300 
12301     parse_VkStructureType("sType", obj["sType"], (o.sType));
12302 
12303     o.pNext = (VkDisplayPlaneProperties2KHR *)parsePNextChain(obj);
12304 
12305     parse_VkDisplayPlanePropertiesKHR("displayPlaneProperties", obj["displayPlaneProperties"],
12306                                       (o.displayPlaneProperties));
12307 }
12308 
parse_VkDisplayModeProperties2KHR(const char * s,Json::Value & obj,VkDisplayModeProperties2KHR & o)12309 static void parse_VkDisplayModeProperties2KHR(const char *s, Json::Value &obj, VkDisplayModeProperties2KHR &o)
12310 {
12311 
12312     parse_VkStructureType("sType", obj["sType"], (o.sType));
12313 
12314     o.pNext = (VkDisplayModeProperties2KHR *)parsePNextChain(obj);
12315 
12316     parse_VkDisplayModePropertiesKHR("displayModeProperties", obj["displayModeProperties"], (o.displayModeProperties));
12317 }
12318 
parse_VkDisplayPlaneInfo2KHR(const char * s,Json::Value & obj,VkDisplayPlaneInfo2KHR & o)12319 static void parse_VkDisplayPlaneInfo2KHR(const char *s, Json::Value &obj, VkDisplayPlaneInfo2KHR &o)
12320 {
12321 
12322     parse_VkStructureType("sType", obj["sType"], (o.sType));
12323 
12324     o.pNext = (VkDisplayPlaneInfo2KHR *)parsePNextChain(obj);
12325 
12326     parse_uint32_t("planeIndex", obj["planeIndex"], (o.planeIndex));
12327 }
12328 
parse_VkDisplayPlaneCapabilities2KHR(const char * s,Json::Value & obj,VkDisplayPlaneCapabilities2KHR & o)12329 static void parse_VkDisplayPlaneCapabilities2KHR(const char *s, Json::Value &obj, VkDisplayPlaneCapabilities2KHR &o)
12330 {
12331 
12332     parse_VkStructureType("sType", obj["sType"], (o.sType));
12333 
12334     o.pNext = (VkDisplayPlaneCapabilities2KHR *)parsePNextChain(obj);
12335 
12336     parse_VkDisplayPlaneCapabilitiesKHR("capabilities", obj["capabilities"], (o.capabilities));
12337 }
12338 
parse_VkPhysicalDeviceShaderClockFeaturesKHR(const char * s,Json::Value & obj,VkPhysicalDeviceShaderClockFeaturesKHR & o)12339 static void parse_VkPhysicalDeviceShaderClockFeaturesKHR(const char *s, Json::Value &obj,
12340                                                          VkPhysicalDeviceShaderClockFeaturesKHR &o)
12341 {
12342 
12343     parse_VkStructureType("sType", obj["sType"], (o.sType));
12344 
12345     o.pNext = (VkPhysicalDeviceShaderClockFeaturesKHR *)parsePNextChain(obj);
12346 
12347     parse_VkBool32("shaderSubgroupClock", obj["shaderSubgroupClock"], (o.shaderSubgroupClock));
12348 
12349     parse_VkBool32("shaderDeviceClock", obj["shaderDeviceClock"], (o.shaderDeviceClock));
12350 }
12351 
parse_VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR(const char * s,Json::Value & obj,VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR & o)12352 static void parse_VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR(
12353     const char *s, Json::Value &obj, VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR &o)
12354 {
12355 
12356     parse_VkStructureType("sType", obj["sType"], (o.sType));
12357 
12358     o.pNext = (VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR *)parsePNextChain(obj);
12359 
12360     parse_VkBool32("shaderTerminateInvocation", obj["shaderTerminateInvocation"], (o.shaderTerminateInvocation));
12361 }
12362 
12363 static std::map<std::string, int> VkFragmentShadingRateCombinerOpKHR_map = {
12364     std::make_pair("VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR", 0),
12365     std::make_pair("VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR", 1),
12366     std::make_pair("VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR", 2),
12367     std::make_pair("VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR", 3),
12368     std::make_pair("VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR", 4),
12369 };
parse_VkFragmentShadingRateCombinerOpKHR(const char * s,Json::Value & obj,VkFragmentShadingRateCombinerOpKHR & o)12370 static void parse_VkFragmentShadingRateCombinerOpKHR(const char *s, Json::Value &obj,
12371                                                      VkFragmentShadingRateCombinerOpKHR &o)
12372 {
12373     std::string _res = obj.asString();
12374     o                = (VkFragmentShadingRateCombinerOpKHR)VkFragmentShadingRateCombinerOpKHR_map[std::string(_res)];
12375 }
12376 
parse_VkFragmentShadingRateAttachmentInfoKHR(const char * s,Json::Value & obj,VkFragmentShadingRateAttachmentInfoKHR & o)12377 static void parse_VkFragmentShadingRateAttachmentInfoKHR(const char *s, Json::Value &obj,
12378                                                          VkFragmentShadingRateAttachmentInfoKHR &o)
12379 {
12380 
12381     parse_VkStructureType("sType", obj["sType"], (o.sType));
12382 
12383     o.pNext = (VkFragmentShadingRateAttachmentInfoKHR *)parsePNextChain(obj);
12384 
12385     {
12386         Json::Value &obj_pFragmentShadingRateAttachment = obj["pFragmentShadingRateAttachment"];
12387         const int sz                                    = obj_pFragmentShadingRateAttachment.size();
12388         if (obj_pFragmentShadingRateAttachment.size() == 0)
12389         {
12390             (o.pFragmentShadingRateAttachment) = nullptr;
12391         }
12392         else
12393         {
12394             (o.pFragmentShadingRateAttachment) =
12395                 (VkAttachmentReference2 *)s_globalMem.allocate(1, sizeof(VkAttachmentReference2));
12396             parse_VkAttachmentReference2("pFragmentShadingRateAttachment", obj_pFragmentShadingRateAttachment,
12397                                          const_cast<VkAttachmentReference2 &>(*(o.pFragmentShadingRateAttachment)));
12398         }
12399     }
12400 
12401     parse_VkExtent2D("shadingRateAttachmentTexelSize", obj["shadingRateAttachmentTexelSize"],
12402                      (o.shadingRateAttachmentTexelSize));
12403 }
12404 
parse_VkPipelineFragmentShadingRateStateCreateInfoKHR(const char * s,Json::Value & obj,VkPipelineFragmentShadingRateStateCreateInfoKHR & o)12405 static void parse_VkPipelineFragmentShadingRateStateCreateInfoKHR(const char *s, Json::Value &obj,
12406                                                                   VkPipelineFragmentShadingRateStateCreateInfoKHR &o)
12407 {
12408 
12409     parse_VkStructureType("sType", obj["sType"], (o.sType));
12410 
12411     o.pNext = (VkPipelineFragmentShadingRateStateCreateInfoKHR *)parsePNextChain(obj);
12412 
12413     parse_VkExtent2D("fragmentSize", obj["fragmentSize"], (o.fragmentSize));
12414 
12415     Json::Value &obj_combinerOps_arr = obj["combinerOps"];
12416     for (unsigned int i = 0; i < obj_combinerOps_arr.size(); i++)
12417     {
12418         parse_VkFragmentShadingRateCombinerOpKHR("combinerOps", obj_combinerOps_arr[i],
12419                                                  const_cast<VkFragmentShadingRateCombinerOpKHR &>((o.combinerOps[i])));
12420     }
12421 }
12422 
parse_VkPhysicalDeviceFragmentShadingRateFeaturesKHR(const char * s,Json::Value & obj,VkPhysicalDeviceFragmentShadingRateFeaturesKHR & o)12423 static void parse_VkPhysicalDeviceFragmentShadingRateFeaturesKHR(const char *s, Json::Value &obj,
12424                                                                  VkPhysicalDeviceFragmentShadingRateFeaturesKHR &o)
12425 {
12426 
12427     parse_VkStructureType("sType", obj["sType"], (o.sType));
12428 
12429     o.pNext = (VkPhysicalDeviceFragmentShadingRateFeaturesKHR *)parsePNextChain(obj);
12430 
12431     parse_VkBool32("pipelineFragmentShadingRate", obj["pipelineFragmentShadingRate"], (o.pipelineFragmentShadingRate));
12432 
12433     parse_VkBool32("primitiveFragmentShadingRate", obj["primitiveFragmentShadingRate"],
12434                    (o.primitiveFragmentShadingRate));
12435 
12436     parse_VkBool32("attachmentFragmentShadingRate", obj["attachmentFragmentShadingRate"],
12437                    (o.attachmentFragmentShadingRate));
12438 }
12439 
parse_VkPhysicalDeviceFragmentShadingRatePropertiesKHR(const char * s,Json::Value & obj,VkPhysicalDeviceFragmentShadingRatePropertiesKHR & o)12440 static void parse_VkPhysicalDeviceFragmentShadingRatePropertiesKHR(const char *s, Json::Value &obj,
12441                                                                    VkPhysicalDeviceFragmentShadingRatePropertiesKHR &o)
12442 {
12443 
12444     parse_VkStructureType("sType", obj["sType"], (o.sType));
12445 
12446     o.pNext = (VkPhysicalDeviceFragmentShadingRatePropertiesKHR *)parsePNextChain(obj);
12447 
12448     parse_VkExtent2D("minFragmentShadingRateAttachmentTexelSize", obj["minFragmentShadingRateAttachmentTexelSize"],
12449                      (o.minFragmentShadingRateAttachmentTexelSize));
12450 
12451     parse_VkExtent2D("maxFragmentShadingRateAttachmentTexelSize", obj["maxFragmentShadingRateAttachmentTexelSize"],
12452                      (o.maxFragmentShadingRateAttachmentTexelSize));
12453 
12454     parse_uint32_t("maxFragmentShadingRateAttachmentTexelSizeAspectRatio",
12455                    obj["maxFragmentShadingRateAttachmentTexelSizeAspectRatio"],
12456                    (o.maxFragmentShadingRateAttachmentTexelSizeAspectRatio));
12457 
12458     parse_VkBool32("primitiveFragmentShadingRateWithMultipleViewports",
12459                    obj["primitiveFragmentShadingRateWithMultipleViewports"],
12460                    (o.primitiveFragmentShadingRateWithMultipleViewports));
12461 
12462     parse_VkBool32("layeredShadingRateAttachments", obj["layeredShadingRateAttachments"],
12463                    (o.layeredShadingRateAttachments));
12464 
12465     parse_VkBool32("fragmentShadingRateNonTrivialCombinerOps", obj["fragmentShadingRateNonTrivialCombinerOps"],
12466                    (o.fragmentShadingRateNonTrivialCombinerOps));
12467 
12468     parse_VkExtent2D("maxFragmentSize", obj["maxFragmentSize"], (o.maxFragmentSize));
12469 
12470     parse_uint32_t("maxFragmentSizeAspectRatio", obj["maxFragmentSizeAspectRatio"], (o.maxFragmentSizeAspectRatio));
12471 
12472     parse_uint32_t("maxFragmentShadingRateCoverageSamples", obj["maxFragmentShadingRateCoverageSamples"],
12473                    (o.maxFragmentShadingRateCoverageSamples));
12474 
12475     parse_VkSampleCountFlagBits("maxFragmentShadingRateRasterizationSamples",
12476                                 obj["maxFragmentShadingRateRasterizationSamples"],
12477                                 (o.maxFragmentShadingRateRasterizationSamples));
12478 
12479     parse_VkBool32("fragmentShadingRateWithShaderDepthStencilWrites",
12480                    obj["fragmentShadingRateWithShaderDepthStencilWrites"],
12481                    (o.fragmentShadingRateWithShaderDepthStencilWrites));
12482 
12483     parse_VkBool32("fragmentShadingRateWithSampleMask", obj["fragmentShadingRateWithSampleMask"],
12484                    (o.fragmentShadingRateWithSampleMask));
12485 
12486     parse_VkBool32("fragmentShadingRateWithShaderSampleMask", obj["fragmentShadingRateWithShaderSampleMask"],
12487                    (o.fragmentShadingRateWithShaderSampleMask));
12488 
12489     parse_VkBool32("fragmentShadingRateWithConservativeRasterization",
12490                    obj["fragmentShadingRateWithConservativeRasterization"],
12491                    (o.fragmentShadingRateWithConservativeRasterization));
12492 
12493     parse_VkBool32("fragmentShadingRateWithFragmentShaderInterlock",
12494                    obj["fragmentShadingRateWithFragmentShaderInterlock"],
12495                    (o.fragmentShadingRateWithFragmentShaderInterlock));
12496 
12497     parse_VkBool32("fragmentShadingRateWithCustomSampleLocations", obj["fragmentShadingRateWithCustomSampleLocations"],
12498                    (o.fragmentShadingRateWithCustomSampleLocations));
12499 
12500     parse_VkBool32("fragmentShadingRateStrictMultiplyCombiner", obj["fragmentShadingRateStrictMultiplyCombiner"],
12501                    (o.fragmentShadingRateStrictMultiplyCombiner));
12502 }
12503 
parse_VkPhysicalDeviceFragmentShadingRateKHR(const char * s,Json::Value & obj,VkPhysicalDeviceFragmentShadingRateKHR & o)12504 static void parse_VkPhysicalDeviceFragmentShadingRateKHR(const char *s, Json::Value &obj,
12505                                                          VkPhysicalDeviceFragmentShadingRateKHR &o)
12506 {
12507 
12508     parse_VkStructureType("sType", obj["sType"], (o.sType));
12509 
12510     o.pNext = (VkPhysicalDeviceFragmentShadingRateKHR *)parsePNextChain(obj);
12511 
12512     parse_VkSampleCountFlags("sampleCounts", obj["sampleCounts"], (o.sampleCounts));
12513 
12514     parse_VkExtent2D("fragmentSize", obj["fragmentSize"], (o.fragmentSize));
12515 }
12516 
12517 static std::map<std::string, int> VkRefreshObjectFlagBitsKHR_map = {};
parse_VkRefreshObjectFlagBitsKHR(const char * s,Json::Value & obj,VkRefreshObjectFlagBitsKHR & o)12518 static void parse_VkRefreshObjectFlagBitsKHR(const char *s, Json::Value &obj, VkRefreshObjectFlagBitsKHR &o)
12519 {
12520     std::string _res = obj.asString();
12521     o                = (VkRefreshObjectFlagBitsKHR)VkRefreshObjectFlagBitsKHR_map[std::string(_res)];
12522 }
12523 
parse_VkRefreshObjectFlagsKHR(const char * s,Json::Value & obj,VkRefreshObjectFlagsKHR & o)12524 static void parse_VkRefreshObjectFlagsKHR(const char *s, Json::Value &obj, VkRefreshObjectFlagsKHR &o)
12525 {
12526     o                = (VkRefreshObjectFlagsKHR)0;
12527     std::string _res = obj.asString();
12528     std::vector<std::string> bitmasks;
12529     std::istringstream inputStream(_res);
12530     std::string tempStr;
12531     while (getline(inputStream, tempStr, '|'))
12532     {
12533         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
12534         bitmasks.push_back(tempStr);
12535     }
12536     for (auto &it : bitmasks)
12537     {
12538         o |= (VkRefreshObjectFlagBitsKHR)VkRefreshObjectFlagBitsKHR_map[it];
12539     }
12540 }
12541 
parse_VkRefreshObjectKHR(const char * s,Json::Value & obj,VkRefreshObjectKHR & o)12542 static void parse_VkRefreshObjectKHR(const char *s, Json::Value &obj, VkRefreshObjectKHR &o)
12543 {
12544 
12545     parse_VkObjectType("objectType", obj["objectType"], (o.objectType));
12546 
12547     parse_uint64_t("objectHandle", obj["objectHandle"], (o.objectHandle));
12548 
12549     parse_VkRefreshObjectFlagsKHR("flags", obj["flags"], (o.flags));
12550 }
12551 
parse_VkRefreshObjectListKHR(const char * s,Json::Value & obj,VkRefreshObjectListKHR & o)12552 static void parse_VkRefreshObjectListKHR(const char *s, Json::Value &obj, VkRefreshObjectListKHR &o)
12553 {
12554 
12555     parse_VkStructureType("sType", obj["sType"], (o.sType));
12556 
12557     o.pNext = (VkRefreshObjectListKHR *)parsePNextChain(obj);
12558 
12559     parse_uint32_t("objectCount", obj["objectCount"], (o.objectCount));
12560 
12561     (o.pObjects)              = (VkRefreshObjectKHR *)s_globalMem.allocate((o.objectCount), sizeof(VkRefreshObjectKHR));
12562     Json::Value &obj_pObjects = obj["pObjects"];
12563     if (obj_pObjects.size() == 0)
12564         (o.pObjects) = nullptr;
12565     else
12566     {
12567         for (unsigned int i = 0; i < (o.objectCount); i++)
12568         {
12569             parse_VkRefreshObjectKHR("pObjects", obj_pObjects[i], const_cast<VkRefreshObjectKHR &>((o.pObjects[i])));
12570         }
12571     }
12572 }
12573 
parse_VkFlags64(const char * s,Json::Value & obj,VkFlags64 & o)12574 static void parse_VkFlags64(const char *s, Json::Value &obj, VkFlags64 &o)
12575 {
12576     std::string _res = obj.asString();
12577     sscanf(_res.c_str(), "%" SCNd64, &o);
12578 }
12579 
12580 static std::map<std::string, uint64_t> VkPipelineStageFlagBits2KHR_map = {
12581     std::make_pair("VK_PIPELINE_STAGE_2_NONE_KHR", 0),
12582     std::make_pair("VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR", 1ULL << 0),
12583     std::make_pair("VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR", 1ULL << 1),
12584     std::make_pair("VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR", 1ULL << 2),
12585     std::make_pair("VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR", 1ULL << 3),
12586     std::make_pair("VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR", 1ULL << 4),
12587     std::make_pair("VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR", 1ULL << 5),
12588     std::make_pair("VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR", 1ULL << 6),
12589     std::make_pair("VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR", 1ULL << 7),
12590     std::make_pair("VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR", 1ULL << 8),
12591     std::make_pair("VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR", 1ULL << 9),
12592     std::make_pair("VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR", 1ULL << 10),
12593     std::make_pair("VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR", 1ULL << 11),
12594     std::make_pair("VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR", 1ULL << 12),
12595     std::make_pair("VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR", 1ULL << 13),
12596     std::make_pair("VK_PIPELINE_STAGE_2_HOST_BIT_KHR", 1ULL << 14),
12597     std::make_pair("VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR", 1ULL << 15),
12598     std::make_pair("VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR", 1ULL << 16),
12599     std::make_pair("VK_PIPELINE_STAGE_2_COPY_BIT_KHR", 1ULL << 32),
12600     std::make_pair("VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR", 1ULL << 33),
12601     std::make_pair("VK_PIPELINE_STAGE_2_BLIT_BIT_KHR", 1ULL << 34),
12602     std::make_pair("VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR", 1ULL << 35),
12603     std::make_pair("VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR", 1ULL << 36),
12604     std::make_pair("VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR", 1ULL << 37),
12605     std::make_pair("VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR", 1ULL << 38),
12606     std::make_pair("VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR", 1ULL << 26),
12607     std::make_pair("VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR", 1ULL << 27),
12608     std::make_pair("VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT", 1ULL << 24),
12609     std::make_pair("VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT", 1ULL << 18),
12610     std::make_pair("VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV", 1ULL << 17),
12611     std::make_pair("VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR", 1ULL << 22),
12612     std::make_pair("VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR", 1ULL << 25),
12613     std::make_pair("VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR", 1ULL << 21),
12614     std::make_pair("VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT", 1ULL << 23),
12615     std::make_pair("VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV", 1ULL << 19),
12616     std::make_pair("VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV", 1ULL << 20),
12617     std::make_pair("VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI", 1ULL << 39),
12618     std::make_pair("VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI", 1ULL << 40),
12619     std::make_pair("VK_PIPELINE_STAGE_2_RESERVED_387_BIT_KHR", 1ULL << 28),
12620 };
parse_VkPipelineStageFlagBits2KHR(const char * s,Json::Value & obj,VkPipelineStageFlagBits2KHR & o)12621 static void parse_VkPipelineStageFlagBits2KHR(const char *s, Json::Value &obj, VkPipelineStageFlagBits2KHR &o)
12622 {
12623     std::string _res = obj.asString();
12624     o                = (VkPipelineStageFlagBits2KHR)VkPipelineStageFlagBits2KHR_map[std::string(_res)];
12625 }
12626 
12627 static std::map<std::string, uint64_t> VkAccessFlagBits2KHR_map = {
12628     std::make_pair("VK_ACCESS_2_NONE_KHR", 0),
12629     std::make_pair("VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR", 1ULL << 0),
12630     std::make_pair("VK_ACCESS_2_INDEX_READ_BIT_KHR", 1ULL << 1),
12631     std::make_pair("VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR", 1ULL << 2),
12632     std::make_pair("VK_ACCESS_2_UNIFORM_READ_BIT_KHR", 1ULL << 3),
12633     std::make_pair("VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR", 1ULL << 4),
12634     std::make_pair("VK_ACCESS_2_SHADER_READ_BIT_KHR", 1ULL << 5),
12635     std::make_pair("VK_ACCESS_2_SHADER_WRITE_BIT_KHR", 1ULL << 6),
12636     std::make_pair("VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR", 1ULL << 7),
12637     std::make_pair("VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR", 1ULL << 8),
12638     std::make_pair("VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR", 1ULL << 9),
12639     std::make_pair("VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR", 1ULL << 10),
12640     std::make_pair("VK_ACCESS_2_TRANSFER_READ_BIT_KHR", 1ULL << 11),
12641     std::make_pair("VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR", 1ULL << 12),
12642     std::make_pair("VK_ACCESS_2_HOST_READ_BIT_KHR", 1ULL << 13),
12643     std::make_pair("VK_ACCESS_2_HOST_WRITE_BIT_KHR", 1ULL << 14),
12644     std::make_pair("VK_ACCESS_2_MEMORY_READ_BIT_KHR", 1ULL << 15),
12645     std::make_pair("VK_ACCESS_2_MEMORY_WRITE_BIT_KHR", 1ULL << 16),
12646     std::make_pair("VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR", 1ULL << 32),
12647     std::make_pair("VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR", 1ULL << 33),
12648     std::make_pair("VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR", 1ULL << 34),
12649     std::make_pair("VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR", 1ULL << 35),
12650     std::make_pair("VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR", 1ULL << 36),
12651     std::make_pair("VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR", 1ULL << 37),
12652     std::make_pair("VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR", 1ULL << 38),
12653     std::make_pair("VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT", 1ULL << 25),
12654     std::make_pair("VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT", 1ULL << 26),
12655     std::make_pair("VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT", 1ULL << 27),
12656     std::make_pair("VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT", 1ULL << 20),
12657     std::make_pair("VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV", 1ULL << 17),
12658     std::make_pair("VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV", 1ULL << 18),
12659     std::make_pair("VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR", 1ULL << 23),
12660     std::make_pair("VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR", 1ULL << 21),
12661     std::make_pair("VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR", 1ULL << 22),
12662     std::make_pair("VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT", 1ULL << 24),
12663     std::make_pair("VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT", 1ULL << 19),
12664     std::make_pair("VK_ACCESS_2_RESERVED_41_BIT_AMD", 1ULL << 41),
12665     std::make_pair("VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI", 1ULL << 39),
12666     std::make_pair("VK_ACCESS_2_RESERVED_387_BIT_KHR", 1ULL << 40),
12667 };
parse_VkAccessFlagBits2KHR(const char * s,Json::Value & obj,VkAccessFlagBits2KHR & o)12668 static void parse_VkAccessFlagBits2KHR(const char *s, Json::Value &obj, VkAccessFlagBits2KHR &o)
12669 {
12670     std::string _res = obj.asString();
12671     o                = (VkAccessFlagBits2KHR)VkAccessFlagBits2KHR_map[std::string(_res)];
12672 }
12673 
12674 static std::map<std::string, int> VkSubmitFlagBitsKHR_map = {
12675     std::make_pair("VK_SUBMIT_PROTECTED_BIT_KHR", 1UL << 0),
12676 };
parse_VkSubmitFlagBitsKHR(const char * s,Json::Value & obj,VkSubmitFlagBitsKHR & o)12677 static void parse_VkSubmitFlagBitsKHR(const char *s, Json::Value &obj, VkSubmitFlagBitsKHR &o)
12678 {
12679     std::string _res = obj.asString();
12680     o                = (VkSubmitFlagBitsKHR)VkSubmitFlagBitsKHR_map[std::string(_res)];
12681 }
12682 
parse_VkPipelineStageFlags2KHR(const char * s,Json::Value & obj,VkPipelineStageFlags2KHR & o)12683 static void parse_VkPipelineStageFlags2KHR(const char *s, Json::Value &obj, VkPipelineStageFlags2KHR &o)
12684 {
12685     if (obj.isString())
12686     {
12687         std::string _res = obj.asString();
12688         sscanf(_res.c_str(), "%" SCNd64, &o);
12689     }
12690     else
12691     {
12692         o = obj.asUInt();
12693     }
12694 }
12695 
parse_VkAccessFlags2KHR(const char * s,Json::Value & obj,VkAccessFlags2KHR & o)12696 static void parse_VkAccessFlags2KHR(const char *s, Json::Value &obj, VkAccessFlags2KHR &o)
12697 {
12698     if (obj.isString())
12699     {
12700         std::string _res = obj.asString();
12701         sscanf(_res.c_str(), "%" SCNd64, &o);
12702     }
12703     else
12704     {
12705         o = obj.asUInt();
12706     }
12707 }
12708 
parse_VkSubmitFlagsKHR(const char * s,Json::Value & obj,VkSubmitFlagsKHR & o)12709 static void parse_VkSubmitFlagsKHR(const char *s, Json::Value &obj, VkSubmitFlagsKHR &o)
12710 {
12711     o                = (VkSubmitFlagsKHR)0;
12712     std::string _res = obj.asString();
12713     std::vector<std::string> bitmasks;
12714     std::istringstream inputStream(_res);
12715     std::string tempStr;
12716     while (getline(inputStream, tempStr, '|'))
12717     {
12718         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
12719         bitmasks.push_back(tempStr);
12720     }
12721     for (auto &it : bitmasks)
12722     {
12723         o |= (VkSubmitFlagBitsKHR)VkSubmitFlagBitsKHR_map[it];
12724     }
12725 }
12726 
parse_VkMemoryBarrier2KHR(const char * s,Json::Value & obj,VkMemoryBarrier2KHR & o)12727 static void parse_VkMemoryBarrier2KHR(const char *s, Json::Value &obj, VkMemoryBarrier2KHR &o)
12728 {
12729 
12730     parse_VkStructureType("sType", obj["sType"], (o.sType));
12731 
12732     o.pNext = (VkMemoryBarrier2KHR *)parsePNextChain(obj);
12733 
12734     parse_VkPipelineStageFlags2KHR("srcStageMask", obj["srcStageMask"], (o.srcStageMask));
12735 
12736     parse_VkAccessFlags2KHR("srcAccessMask", obj["srcAccessMask"], (o.srcAccessMask));
12737 
12738     parse_VkPipelineStageFlags2KHR("dstStageMask", obj["dstStageMask"], (o.dstStageMask));
12739 
12740     parse_VkAccessFlags2KHR("dstAccessMask", obj["dstAccessMask"], (o.dstAccessMask));
12741 }
12742 
parse_VkBufferMemoryBarrier2KHR(const char * s,Json::Value & obj,VkBufferMemoryBarrier2KHR & o)12743 static void parse_VkBufferMemoryBarrier2KHR(const char *s, Json::Value &obj, VkBufferMemoryBarrier2KHR &o)
12744 {
12745 
12746     parse_VkStructureType("sType", obj["sType"], (o.sType));
12747 
12748     o.pNext = (VkBufferMemoryBarrier2KHR *)parsePNextChain(obj);
12749 
12750     parse_VkPipelineStageFlags2KHR("srcStageMask", obj["srcStageMask"], (o.srcStageMask));
12751 
12752     parse_VkAccessFlags2KHR("srcAccessMask", obj["srcAccessMask"], (o.srcAccessMask));
12753 
12754     parse_VkPipelineStageFlags2KHR("dstStageMask", obj["dstStageMask"], (o.dstStageMask));
12755 
12756     parse_VkAccessFlags2KHR("dstAccessMask", obj["dstAccessMask"], (o.dstAccessMask));
12757 
12758     parse_uint32_t("srcQueueFamilyIndex", obj["srcQueueFamilyIndex"], (o.srcQueueFamilyIndex));
12759 
12760     parse_uint32_t("dstQueueFamilyIndex", obj["dstQueueFamilyIndex"], (o.dstQueueFamilyIndex));
12761 
12762     parse_VkDeviceSize("offset", obj["offset"], (o.offset));
12763 
12764     parse_VkDeviceSize("size", obj["size"], (o.size));
12765 }
12766 
parse_VkImageMemoryBarrier2KHR(const char * s,Json::Value & obj,VkImageMemoryBarrier2KHR & o)12767 static void parse_VkImageMemoryBarrier2KHR(const char *s, Json::Value &obj, VkImageMemoryBarrier2KHR &o)
12768 {
12769 
12770     parse_VkStructureType("sType", obj["sType"], (o.sType));
12771 
12772     o.pNext = (VkImageMemoryBarrier2KHR *)parsePNextChain(obj);
12773 
12774     parse_VkPipelineStageFlags2KHR("srcStageMask", obj["srcStageMask"], (o.srcStageMask));
12775 
12776     parse_VkAccessFlags2KHR("srcAccessMask", obj["srcAccessMask"], (o.srcAccessMask));
12777 
12778     parse_VkPipelineStageFlags2KHR("dstStageMask", obj["dstStageMask"], (o.dstStageMask));
12779 
12780     parse_VkAccessFlags2KHR("dstAccessMask", obj["dstAccessMask"], (o.dstAccessMask));
12781 
12782     parse_VkImageLayout("oldLayout", obj["oldLayout"], (o.oldLayout));
12783 
12784     parse_VkImageLayout("newLayout", obj["newLayout"], (o.newLayout));
12785 
12786     parse_uint32_t("srcQueueFamilyIndex", obj["srcQueueFamilyIndex"], (o.srcQueueFamilyIndex));
12787 
12788     parse_uint32_t("dstQueueFamilyIndex", obj["dstQueueFamilyIndex"], (o.dstQueueFamilyIndex));
12789 
12790     parse_VkImageSubresourceRange("subresourceRange", obj["subresourceRange"], (o.subresourceRange));
12791 }
12792 
parse_VkDependencyInfoKHR(const char * s,Json::Value & obj,VkDependencyInfoKHR & o)12793 static void parse_VkDependencyInfoKHR(const char *s, Json::Value &obj, VkDependencyInfoKHR &o)
12794 {
12795 
12796     parse_VkStructureType("sType", obj["sType"], (o.sType));
12797 
12798     o.pNext = (VkDependencyInfoKHR *)parsePNextChain(obj);
12799 
12800     parse_VkDependencyFlags("dependencyFlags", obj["dependencyFlags"], (o.dependencyFlags));
12801 
12802     parse_uint32_t("memoryBarrierCount", obj["memoryBarrierCount"], (o.memoryBarrierCount));
12803 
12804     (o.pMemoryBarriers) =
12805         (VkMemoryBarrier2KHR *)s_globalMem.allocate((o.memoryBarrierCount), sizeof(VkMemoryBarrier2KHR));
12806     Json::Value &obj_pMemoryBarriers = obj["pMemoryBarriers"];
12807     if (obj_pMemoryBarriers.size() == 0)
12808         (o.pMemoryBarriers) = nullptr;
12809     else
12810     {
12811         for (unsigned int i = 0; i < (o.memoryBarrierCount); i++)
12812         {
12813             parse_VkMemoryBarrier2KHR("pMemoryBarriers", obj_pMemoryBarriers[i],
12814                                       const_cast<VkMemoryBarrier2KHR &>((o.pMemoryBarriers[i])));
12815         }
12816     }
12817 
12818     parse_uint32_t("bufferMemoryBarrierCount", obj["bufferMemoryBarrierCount"], (o.bufferMemoryBarrierCount));
12819 
12820     (o.pBufferMemoryBarriers) = (VkBufferMemoryBarrier2KHR *)s_globalMem.allocate((o.bufferMemoryBarrierCount),
12821                                                                                   sizeof(VkBufferMemoryBarrier2KHR));
12822     Json::Value &obj_pBufferMemoryBarriers = obj["pBufferMemoryBarriers"];
12823     if (obj_pBufferMemoryBarriers.size() == 0)
12824         (o.pBufferMemoryBarriers) = nullptr;
12825     else
12826     {
12827         for (unsigned int i = 0; i < (o.bufferMemoryBarrierCount); i++)
12828         {
12829             parse_VkBufferMemoryBarrier2KHR("pBufferMemoryBarriers", obj_pBufferMemoryBarriers[i],
12830                                             const_cast<VkBufferMemoryBarrier2KHR &>((o.pBufferMemoryBarriers[i])));
12831         }
12832     }
12833 
12834     parse_uint32_t("imageMemoryBarrierCount", obj["imageMemoryBarrierCount"], (o.imageMemoryBarrierCount));
12835 
12836     (o.pImageMemoryBarriers) =
12837         (VkImageMemoryBarrier2KHR *)s_globalMem.allocate((o.imageMemoryBarrierCount), sizeof(VkImageMemoryBarrier2KHR));
12838     Json::Value &obj_pImageMemoryBarriers = obj["pImageMemoryBarriers"];
12839     if (obj_pImageMemoryBarriers.size() == 0)
12840         (o.pImageMemoryBarriers) = nullptr;
12841     else
12842     {
12843         for (unsigned int i = 0; i < (o.imageMemoryBarrierCount); i++)
12844         {
12845             parse_VkImageMemoryBarrier2KHR("pImageMemoryBarriers", obj_pImageMemoryBarriers[i],
12846                                            const_cast<VkImageMemoryBarrier2KHR &>((o.pImageMemoryBarriers[i])));
12847         }
12848     }
12849 }
12850 
parse_VkSemaphoreSubmitInfoKHR(const char * s,Json::Value & obj,VkSemaphoreSubmitInfoKHR & o)12851 static void parse_VkSemaphoreSubmitInfoKHR(const char *s, Json::Value &obj, VkSemaphoreSubmitInfoKHR &o)
12852 {
12853 
12854     parse_VkStructureType("sType", obj["sType"], (o.sType));
12855 
12856     o.pNext = (VkSemaphoreSubmitInfoKHR *)parsePNextChain(obj);
12857 
12858     parse_uint64_t("value", obj["value"], (o.value));
12859 
12860     parse_VkPipelineStageFlags2KHR("stageMask", obj["stageMask"], (o.stageMask));
12861 
12862     parse_uint32_t("deviceIndex", obj["deviceIndex"], (o.deviceIndex));
12863 }
12864 
parse_VkCommandBufferSubmitInfoKHR(const char * s,Json::Value & obj,VkCommandBufferSubmitInfoKHR & o)12865 static void parse_VkCommandBufferSubmitInfoKHR(const char *s, Json::Value &obj, VkCommandBufferSubmitInfoKHR &o)
12866 {
12867 
12868     parse_VkStructureType("sType", obj["sType"], (o.sType));
12869 
12870     o.pNext = (VkCommandBufferSubmitInfoKHR *)parsePNextChain(obj);
12871 
12872     parse_uint32_t("deviceMask", obj["deviceMask"], (o.deviceMask));
12873 }
12874 
parse_VkSubmitInfo2KHR(const char * s,Json::Value & obj,VkSubmitInfo2KHR & o)12875 static void parse_VkSubmitInfo2KHR(const char *s, Json::Value &obj, VkSubmitInfo2KHR &o)
12876 {
12877 
12878     parse_VkStructureType("sType", obj["sType"], (o.sType));
12879 
12880     o.pNext = (VkSubmitInfo2KHR *)parsePNextChain(obj);
12881 
12882     parse_VkSubmitFlagsKHR("flags", obj["flags"], (o.flags));
12883 
12884     parse_uint32_t("waitSemaphoreInfoCount", obj["waitSemaphoreInfoCount"], (o.waitSemaphoreInfoCount));
12885 
12886     (o.pWaitSemaphoreInfos) =
12887         (VkSemaphoreSubmitInfoKHR *)s_globalMem.allocate((o.waitSemaphoreInfoCount), sizeof(VkSemaphoreSubmitInfoKHR));
12888     Json::Value &obj_pWaitSemaphoreInfos = obj["pWaitSemaphoreInfos"];
12889     if (obj_pWaitSemaphoreInfos.size() == 0)
12890         (o.pWaitSemaphoreInfos) = nullptr;
12891     else
12892     {
12893         for (unsigned int i = 0; i < (o.waitSemaphoreInfoCount); i++)
12894         {
12895             parse_VkSemaphoreSubmitInfoKHR("pWaitSemaphoreInfos", obj_pWaitSemaphoreInfos[i],
12896                                            const_cast<VkSemaphoreSubmitInfoKHR &>((o.pWaitSemaphoreInfos[i])));
12897         }
12898     }
12899 
12900     parse_uint32_t("commandBufferInfoCount", obj["commandBufferInfoCount"], (o.commandBufferInfoCount));
12901 
12902     (o.pCommandBufferInfos) = (VkCommandBufferSubmitInfoKHR *)s_globalMem.allocate(
12903         (o.commandBufferInfoCount), sizeof(VkCommandBufferSubmitInfoKHR));
12904     Json::Value &obj_pCommandBufferInfos = obj["pCommandBufferInfos"];
12905     if (obj_pCommandBufferInfos.size() == 0)
12906         (o.pCommandBufferInfos) = nullptr;
12907     else
12908     {
12909         for (unsigned int i = 0; i < (o.commandBufferInfoCount); i++)
12910         {
12911             parse_VkCommandBufferSubmitInfoKHR("pCommandBufferInfos", obj_pCommandBufferInfos[i],
12912                                                const_cast<VkCommandBufferSubmitInfoKHR &>((o.pCommandBufferInfos[i])));
12913         }
12914     }
12915 
12916     parse_uint32_t("signalSemaphoreInfoCount", obj["signalSemaphoreInfoCount"], (o.signalSemaphoreInfoCount));
12917 
12918     (o.pSignalSemaphoreInfos) = (VkSemaphoreSubmitInfoKHR *)s_globalMem.allocate((o.signalSemaphoreInfoCount),
12919                                                                                  sizeof(VkSemaphoreSubmitInfoKHR));
12920     Json::Value &obj_pSignalSemaphoreInfos = obj["pSignalSemaphoreInfos"];
12921     if (obj_pSignalSemaphoreInfos.size() == 0)
12922         (o.pSignalSemaphoreInfos) = nullptr;
12923     else
12924     {
12925         for (unsigned int i = 0; i < (o.signalSemaphoreInfoCount); i++)
12926         {
12927             parse_VkSemaphoreSubmitInfoKHR("pSignalSemaphoreInfos", obj_pSignalSemaphoreInfos[i],
12928                                            const_cast<VkSemaphoreSubmitInfoKHR &>((o.pSignalSemaphoreInfos[i])));
12929         }
12930     }
12931 }
12932 
parse_VkPhysicalDeviceSynchronization2FeaturesKHR(const char * s,Json::Value & obj,VkPhysicalDeviceSynchronization2FeaturesKHR & o)12933 static void parse_VkPhysicalDeviceSynchronization2FeaturesKHR(const char *s, Json::Value &obj,
12934                                                               VkPhysicalDeviceSynchronization2FeaturesKHR &o)
12935 {
12936 
12937     parse_VkStructureType("sType", obj["sType"], (o.sType));
12938 
12939     o.pNext = (VkPhysicalDeviceSynchronization2FeaturesKHR *)parsePNextChain(obj);
12940 
12941     parse_VkBool32("synchronization2", obj["synchronization2"], (o.synchronization2));
12942 }
12943 
parse_VkQueueFamilyCheckpointProperties2NV(const char * s,Json::Value & obj,VkQueueFamilyCheckpointProperties2NV & o)12944 static void parse_VkQueueFamilyCheckpointProperties2NV(const char *s, Json::Value &obj,
12945                                                        VkQueueFamilyCheckpointProperties2NV &o)
12946 {
12947 
12948     parse_VkStructureType("sType", obj["sType"], (o.sType));
12949 
12950     o.pNext = (VkQueueFamilyCheckpointProperties2NV *)parsePNextChain(obj);
12951 
12952     parse_VkPipelineStageFlags2KHR("checkpointExecutionStageMask", obj["checkpointExecutionStageMask"],
12953                                    (o.checkpointExecutionStageMask));
12954 }
12955 
parse_VkCheckpointData2NV(const char * s,Json::Value & obj,VkCheckpointData2NV & o)12956 static void parse_VkCheckpointData2NV(const char *s, Json::Value &obj, VkCheckpointData2NV &o)
12957 {
12958 
12959     parse_VkStructureType("sType", obj["sType"], (o.sType));
12960 
12961     o.pNext = (VkCheckpointData2NV *)parsePNextChain(obj);
12962 
12963     parse_VkPipelineStageFlags2KHR("stage", obj["stage"], (o.stage));
12964 }
12965 
parse_VkBufferCopy2KHR(const char * s,Json::Value & obj,VkBufferCopy2KHR & o)12966 static void parse_VkBufferCopy2KHR(const char *s, Json::Value &obj, VkBufferCopy2KHR &o)
12967 {
12968 
12969     parse_VkStructureType("sType", obj["sType"], (o.sType));
12970 
12971     o.pNext = (VkBufferCopy2KHR *)parsePNextChain(obj);
12972 
12973     parse_VkDeviceSize("srcOffset", obj["srcOffset"], (o.srcOffset));
12974 
12975     parse_VkDeviceSize("dstOffset", obj["dstOffset"], (o.dstOffset));
12976 
12977     parse_VkDeviceSize("size", obj["size"], (o.size));
12978 }
12979 
parse_VkCopyBufferInfo2KHR(const char * s,Json::Value & obj,VkCopyBufferInfo2KHR & o)12980 static void parse_VkCopyBufferInfo2KHR(const char *s, Json::Value &obj, VkCopyBufferInfo2KHR &o)
12981 {
12982 
12983     parse_VkStructureType("sType", obj["sType"], (o.sType));
12984 
12985     o.pNext = (VkCopyBufferInfo2KHR *)parsePNextChain(obj);
12986 
12987     parse_uint32_t("regionCount", obj["regionCount"], (o.regionCount));
12988 
12989     (o.pRegions)              = (VkBufferCopy2KHR *)s_globalMem.allocate((o.regionCount), sizeof(VkBufferCopy2KHR));
12990     Json::Value &obj_pRegions = obj["pRegions"];
12991     if (obj_pRegions.size() == 0)
12992         (o.pRegions) = nullptr;
12993     else
12994     {
12995         for (unsigned int i = 0; i < (o.regionCount); i++)
12996         {
12997             parse_VkBufferCopy2KHR("pRegions", obj_pRegions[i], const_cast<VkBufferCopy2KHR &>((o.pRegions[i])));
12998         }
12999     }
13000 }
13001 
parse_VkImageCopy2KHR(const char * s,Json::Value & obj,VkImageCopy2KHR & o)13002 static void parse_VkImageCopy2KHR(const char *s, Json::Value &obj, VkImageCopy2KHR &o)
13003 {
13004 
13005     parse_VkStructureType("sType", obj["sType"], (o.sType));
13006 
13007     o.pNext = (VkImageCopy2KHR *)parsePNextChain(obj);
13008 
13009     parse_VkImageSubresourceLayers("srcSubresource", obj["srcSubresource"], (o.srcSubresource));
13010 
13011     parse_VkOffset3D("srcOffset", obj["srcOffset"], (o.srcOffset));
13012 
13013     parse_VkImageSubresourceLayers("dstSubresource", obj["dstSubresource"], (o.dstSubresource));
13014 
13015     parse_VkOffset3D("dstOffset", obj["dstOffset"], (o.dstOffset));
13016 
13017     parse_VkExtent3D("extent", obj["extent"], (o.extent));
13018 }
13019 
parse_VkCopyImageInfo2KHR(const char * s,Json::Value & obj,VkCopyImageInfo2KHR & o)13020 static void parse_VkCopyImageInfo2KHR(const char *s, Json::Value &obj, VkCopyImageInfo2KHR &o)
13021 {
13022 
13023     parse_VkStructureType("sType", obj["sType"], (o.sType));
13024 
13025     o.pNext = (VkCopyImageInfo2KHR *)parsePNextChain(obj);
13026 
13027     parse_VkImageLayout("srcImageLayout", obj["srcImageLayout"], (o.srcImageLayout));
13028 
13029     parse_VkImageLayout("dstImageLayout", obj["dstImageLayout"], (o.dstImageLayout));
13030 
13031     parse_uint32_t("regionCount", obj["regionCount"], (o.regionCount));
13032 
13033     (o.pRegions)              = (VkImageCopy2KHR *)s_globalMem.allocate((o.regionCount), sizeof(VkImageCopy2KHR));
13034     Json::Value &obj_pRegions = obj["pRegions"];
13035     if (obj_pRegions.size() == 0)
13036         (o.pRegions) = nullptr;
13037     else
13038     {
13039         for (unsigned int i = 0; i < (o.regionCount); i++)
13040         {
13041             parse_VkImageCopy2KHR("pRegions", obj_pRegions[i], const_cast<VkImageCopy2KHR &>((o.pRegions[i])));
13042         }
13043     }
13044 }
13045 
parse_VkBufferImageCopy2KHR(const char * s,Json::Value & obj,VkBufferImageCopy2KHR & o)13046 static void parse_VkBufferImageCopy2KHR(const char *s, Json::Value &obj, VkBufferImageCopy2KHR &o)
13047 {
13048 
13049     parse_VkStructureType("sType", obj["sType"], (o.sType));
13050 
13051     o.pNext = (VkBufferImageCopy2KHR *)parsePNextChain(obj);
13052 
13053     parse_VkDeviceSize("bufferOffset", obj["bufferOffset"], (o.bufferOffset));
13054 
13055     parse_uint32_t("bufferRowLength", obj["bufferRowLength"], (o.bufferRowLength));
13056 
13057     parse_uint32_t("bufferImageHeight", obj["bufferImageHeight"], (o.bufferImageHeight));
13058 
13059     parse_VkImageSubresourceLayers("imageSubresource", obj["imageSubresource"], (o.imageSubresource));
13060 
13061     parse_VkOffset3D("imageOffset", obj["imageOffset"], (o.imageOffset));
13062 
13063     parse_VkExtent3D("imageExtent", obj["imageExtent"], (o.imageExtent));
13064 }
13065 
parse_VkCopyBufferToImageInfo2KHR(const char * s,Json::Value & obj,VkCopyBufferToImageInfo2KHR & o)13066 static void parse_VkCopyBufferToImageInfo2KHR(const char *s, Json::Value &obj, VkCopyBufferToImageInfo2KHR &o)
13067 {
13068 
13069     parse_VkStructureType("sType", obj["sType"], (o.sType));
13070 
13071     o.pNext = (VkCopyBufferToImageInfo2KHR *)parsePNextChain(obj);
13072 
13073     parse_VkImageLayout("dstImageLayout", obj["dstImageLayout"], (o.dstImageLayout));
13074 
13075     parse_uint32_t("regionCount", obj["regionCount"], (o.regionCount));
13076 
13077     (o.pRegions) = (VkBufferImageCopy2KHR *)s_globalMem.allocate((o.regionCount), sizeof(VkBufferImageCopy2KHR));
13078     Json::Value &obj_pRegions = obj["pRegions"];
13079     if (obj_pRegions.size() == 0)
13080         (o.pRegions) = nullptr;
13081     else
13082     {
13083         for (unsigned int i = 0; i < (o.regionCount); i++)
13084         {
13085             parse_VkBufferImageCopy2KHR("pRegions", obj_pRegions[i],
13086                                         const_cast<VkBufferImageCopy2KHR &>((o.pRegions[i])));
13087         }
13088     }
13089 }
13090 
parse_VkCopyImageToBufferInfo2KHR(const char * s,Json::Value & obj,VkCopyImageToBufferInfo2KHR & o)13091 static void parse_VkCopyImageToBufferInfo2KHR(const char *s, Json::Value &obj, VkCopyImageToBufferInfo2KHR &o)
13092 {
13093 
13094     parse_VkStructureType("sType", obj["sType"], (o.sType));
13095 
13096     o.pNext = (VkCopyImageToBufferInfo2KHR *)parsePNextChain(obj);
13097 
13098     parse_VkImageLayout("srcImageLayout", obj["srcImageLayout"], (o.srcImageLayout));
13099 
13100     parse_uint32_t("regionCount", obj["regionCount"], (o.regionCount));
13101 
13102     (o.pRegions) = (VkBufferImageCopy2KHR *)s_globalMem.allocate((o.regionCount), sizeof(VkBufferImageCopy2KHR));
13103     Json::Value &obj_pRegions = obj["pRegions"];
13104     if (obj_pRegions.size() == 0)
13105         (o.pRegions) = nullptr;
13106     else
13107     {
13108         for (unsigned int i = 0; i < (o.regionCount); i++)
13109         {
13110             parse_VkBufferImageCopy2KHR("pRegions", obj_pRegions[i],
13111                                         const_cast<VkBufferImageCopy2KHR &>((o.pRegions[i])));
13112         }
13113     }
13114 }
13115 
parse_VkImageBlit2KHR(const char * s,Json::Value & obj,VkImageBlit2KHR & o)13116 static void parse_VkImageBlit2KHR(const char *s, Json::Value &obj, VkImageBlit2KHR &o)
13117 {
13118 
13119     parse_VkStructureType("sType", obj["sType"], (o.sType));
13120 
13121     o.pNext = (VkImageBlit2KHR *)parsePNextChain(obj);
13122 
13123     parse_VkImageSubresourceLayers("srcSubresource", obj["srcSubresource"], (o.srcSubresource));
13124 
13125     Json::Value &obj_srcOffsets_arr = obj["srcOffsets"];
13126     for (unsigned int i = 0; i < obj_srcOffsets_arr.size(); i++)
13127     {
13128         parse_VkOffset3D("srcOffsets", obj_srcOffsets_arr[i], const_cast<VkOffset3D &>((o.srcOffsets[i])));
13129     }
13130 
13131     parse_VkImageSubresourceLayers("dstSubresource", obj["dstSubresource"], (o.dstSubresource));
13132 
13133     Json::Value &obj_dstOffsets_arr = obj["dstOffsets"];
13134     for (unsigned int i = 0; i < obj_dstOffsets_arr.size(); i++)
13135     {
13136         parse_VkOffset3D("dstOffsets", obj_dstOffsets_arr[i], const_cast<VkOffset3D &>((o.dstOffsets[i])));
13137     }
13138 }
13139 
parse_VkBlitImageInfo2KHR(const char * s,Json::Value & obj,VkBlitImageInfo2KHR & o)13140 static void parse_VkBlitImageInfo2KHR(const char *s, Json::Value &obj, VkBlitImageInfo2KHR &o)
13141 {
13142 
13143     parse_VkStructureType("sType", obj["sType"], (o.sType));
13144 
13145     o.pNext = (VkBlitImageInfo2KHR *)parsePNextChain(obj);
13146 
13147     parse_VkImageLayout("srcImageLayout", obj["srcImageLayout"], (o.srcImageLayout));
13148 
13149     parse_VkImageLayout("dstImageLayout", obj["dstImageLayout"], (o.dstImageLayout));
13150 
13151     parse_uint32_t("regionCount", obj["regionCount"], (o.regionCount));
13152 
13153     (o.pRegions)              = (VkImageBlit2KHR *)s_globalMem.allocate((o.regionCount), sizeof(VkImageBlit2KHR));
13154     Json::Value &obj_pRegions = obj["pRegions"];
13155     if (obj_pRegions.size() == 0)
13156         (o.pRegions) = nullptr;
13157     else
13158     {
13159         for (unsigned int i = 0; i < (o.regionCount); i++)
13160         {
13161             parse_VkImageBlit2KHR("pRegions", obj_pRegions[i], const_cast<VkImageBlit2KHR &>((o.pRegions[i])));
13162         }
13163     }
13164 
13165     parse_VkFilter("filter", obj["filter"], (o.filter));
13166 }
13167 
parse_VkImageResolve2KHR(const char * s,Json::Value & obj,VkImageResolve2KHR & o)13168 static void parse_VkImageResolve2KHR(const char *s, Json::Value &obj, VkImageResolve2KHR &o)
13169 {
13170 
13171     parse_VkStructureType("sType", obj["sType"], (o.sType));
13172 
13173     o.pNext = (VkImageResolve2KHR *)parsePNextChain(obj);
13174 
13175     parse_VkImageSubresourceLayers("srcSubresource", obj["srcSubresource"], (o.srcSubresource));
13176 
13177     parse_VkOffset3D("srcOffset", obj["srcOffset"], (o.srcOffset));
13178 
13179     parse_VkImageSubresourceLayers("dstSubresource", obj["dstSubresource"], (o.dstSubresource));
13180 
13181     parse_VkOffset3D("dstOffset", obj["dstOffset"], (o.dstOffset));
13182 
13183     parse_VkExtent3D("extent", obj["extent"], (o.extent));
13184 }
13185 
parse_VkResolveImageInfo2KHR(const char * s,Json::Value & obj,VkResolveImageInfo2KHR & o)13186 static void parse_VkResolveImageInfo2KHR(const char *s, Json::Value &obj, VkResolveImageInfo2KHR &o)
13187 {
13188 
13189     parse_VkStructureType("sType", obj["sType"], (o.sType));
13190 
13191     o.pNext = (VkResolveImageInfo2KHR *)parsePNextChain(obj);
13192 
13193     parse_VkImageLayout("srcImageLayout", obj["srcImageLayout"], (o.srcImageLayout));
13194 
13195     parse_VkImageLayout("dstImageLayout", obj["dstImageLayout"], (o.dstImageLayout));
13196 
13197     parse_uint32_t("regionCount", obj["regionCount"], (o.regionCount));
13198 
13199     (o.pRegions)              = (VkImageResolve2KHR *)s_globalMem.allocate((o.regionCount), sizeof(VkImageResolve2KHR));
13200     Json::Value &obj_pRegions = obj["pRegions"];
13201     if (obj_pRegions.size() == 0)
13202         (o.pRegions) = nullptr;
13203     else
13204     {
13205         for (unsigned int i = 0; i < (o.regionCount); i++)
13206         {
13207             parse_VkImageResolve2KHR("pRegions", obj_pRegions[i], const_cast<VkImageResolve2KHR &>((o.pRegions[i])));
13208         }
13209     }
13210 }
13211 
parse_VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT & o)13212 static void parse_VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(
13213     const char *s, Json::Value &obj, VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT &o)
13214 {
13215 
13216     parse_VkStructureType("sType", obj["sType"], (o.sType));
13217 
13218     o.pNext = (VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT *)parsePNextChain(obj);
13219 
13220     parse_VkBool32("textureCompressionASTC_HDR", obj["textureCompressionASTC_HDR"], (o.textureCompressionASTC_HDR));
13221 }
13222 
parse_VkImageViewASTCDecodeModeEXT(const char * s,Json::Value & obj,VkImageViewASTCDecodeModeEXT & o)13223 static void parse_VkImageViewASTCDecodeModeEXT(const char *s, Json::Value &obj, VkImageViewASTCDecodeModeEXT &o)
13224 {
13225 
13226     parse_VkStructureType("sType", obj["sType"], (o.sType));
13227 
13228     o.pNext = (VkImageViewASTCDecodeModeEXT *)parsePNextChain(obj);
13229 
13230     parse_VkFormat("decodeMode", obj["decodeMode"], (o.decodeMode));
13231 }
13232 
parse_VkPhysicalDeviceASTCDecodeFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceASTCDecodeFeaturesEXT & o)13233 static void parse_VkPhysicalDeviceASTCDecodeFeaturesEXT(const char *s, Json::Value &obj,
13234                                                         VkPhysicalDeviceASTCDecodeFeaturesEXT &o)
13235 {
13236 
13237     parse_VkStructureType("sType", obj["sType"], (o.sType));
13238 
13239     o.pNext = (VkPhysicalDeviceASTCDecodeFeaturesEXT *)parsePNextChain(obj);
13240 
13241     parse_VkBool32("decodeModeSharedExponent", obj["decodeModeSharedExponent"], (o.decodeModeSharedExponent));
13242 }
13243 
13244 static std::map<std::string, int> VkSurfaceCounterFlagBitsEXT_map = {
13245     std::make_pair("VK_SURFACE_COUNTER_VBLANK_BIT_EXT", 1UL << 0),
13246 };
parse_VkSurfaceCounterFlagBitsEXT(const char * s,Json::Value & obj,VkSurfaceCounterFlagBitsEXT & o)13247 static void parse_VkSurfaceCounterFlagBitsEXT(const char *s, Json::Value &obj, VkSurfaceCounterFlagBitsEXT &o)
13248 {
13249     std::string _res = obj.asString();
13250     o                = (VkSurfaceCounterFlagBitsEXT)VkSurfaceCounterFlagBitsEXT_map[std::string(_res)];
13251 }
13252 
parse_VkSurfaceCounterFlagsEXT(const char * s,Json::Value & obj,VkSurfaceCounterFlagsEXT & o)13253 static void parse_VkSurfaceCounterFlagsEXT(const char *s, Json::Value &obj, VkSurfaceCounterFlagsEXT &o)
13254 {
13255     o                = (VkSurfaceCounterFlagsEXT)0;
13256     std::string _res = obj.asString();
13257     std::vector<std::string> bitmasks;
13258     std::istringstream inputStream(_res);
13259     std::string tempStr;
13260     while (getline(inputStream, tempStr, '|'))
13261     {
13262         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
13263         bitmasks.push_back(tempStr);
13264     }
13265     for (auto &it : bitmasks)
13266     {
13267         o |= (VkSurfaceCounterFlagBitsEXT)VkSurfaceCounterFlagBitsEXT_map[it];
13268     }
13269 }
13270 
parse_VkSurfaceCapabilities2EXT(const char * s,Json::Value & obj,VkSurfaceCapabilities2EXT & o)13271 static void parse_VkSurfaceCapabilities2EXT(const char *s, Json::Value &obj, VkSurfaceCapabilities2EXT &o)
13272 {
13273 
13274     parse_VkStructureType("sType", obj["sType"], (o.sType));
13275 
13276     o.pNext = (VkSurfaceCapabilities2EXT *)parsePNextChain(obj);
13277 
13278     parse_uint32_t("minImageCount", obj["minImageCount"], (o.minImageCount));
13279 
13280     parse_uint32_t("maxImageCount", obj["maxImageCount"], (o.maxImageCount));
13281 
13282     parse_VkExtent2D("currentExtent", obj["currentExtent"], (o.currentExtent));
13283 
13284     parse_VkExtent2D("minImageExtent", obj["minImageExtent"], (o.minImageExtent));
13285 
13286     parse_VkExtent2D("maxImageExtent", obj["maxImageExtent"], (o.maxImageExtent));
13287 
13288     parse_uint32_t("maxImageArrayLayers", obj["maxImageArrayLayers"], (o.maxImageArrayLayers));
13289 
13290     parse_VkSurfaceTransformFlagsKHR("supportedTransforms", obj["supportedTransforms"], (o.supportedTransforms));
13291 
13292     parse_VkSurfaceTransformFlagBitsKHR("currentTransform", obj["currentTransform"], (o.currentTransform));
13293 
13294     parse_VkCompositeAlphaFlagsKHR("supportedCompositeAlpha", obj["supportedCompositeAlpha"],
13295                                    (o.supportedCompositeAlpha));
13296 
13297     parse_VkImageUsageFlags("supportedUsageFlags", obj["supportedUsageFlags"], (o.supportedUsageFlags));
13298 
13299     parse_VkSurfaceCounterFlagsEXT("supportedSurfaceCounters", obj["supportedSurfaceCounters"],
13300                                    (o.supportedSurfaceCounters));
13301 }
13302 
13303 static std::map<std::string, int> VkDisplayPowerStateEXT_map = {
13304     std::make_pair("VK_DISPLAY_POWER_STATE_OFF_EXT", 0),
13305     std::make_pair("VK_DISPLAY_POWER_STATE_SUSPEND_EXT", 1),
13306     std::make_pair("VK_DISPLAY_POWER_STATE_ON_EXT", 2),
13307 };
parse_VkDisplayPowerStateEXT(const char * s,Json::Value & obj,VkDisplayPowerStateEXT & o)13308 static void parse_VkDisplayPowerStateEXT(const char *s, Json::Value &obj, VkDisplayPowerStateEXT &o)
13309 {
13310     std::string _res = obj.asString();
13311     o                = (VkDisplayPowerStateEXT)VkDisplayPowerStateEXT_map[std::string(_res)];
13312 }
13313 
13314 static std::map<std::string, int> VkDeviceEventTypeEXT_map = {
13315     std::make_pair("VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT", 0),
13316 };
parse_VkDeviceEventTypeEXT(const char * s,Json::Value & obj,VkDeviceEventTypeEXT & o)13317 static void parse_VkDeviceEventTypeEXT(const char *s, Json::Value &obj, VkDeviceEventTypeEXT &o)
13318 {
13319     std::string _res = obj.asString();
13320     o                = (VkDeviceEventTypeEXT)VkDeviceEventTypeEXT_map[std::string(_res)];
13321 }
13322 
13323 static std::map<std::string, int> VkDisplayEventTypeEXT_map = {
13324     std::make_pair("VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT", 0),
13325 };
parse_VkDisplayEventTypeEXT(const char * s,Json::Value & obj,VkDisplayEventTypeEXT & o)13326 static void parse_VkDisplayEventTypeEXT(const char *s, Json::Value &obj, VkDisplayEventTypeEXT &o)
13327 {
13328     std::string _res = obj.asString();
13329     o                = (VkDisplayEventTypeEXT)VkDisplayEventTypeEXT_map[std::string(_res)];
13330 }
13331 
parse_VkDisplayPowerInfoEXT(const char * s,Json::Value & obj,VkDisplayPowerInfoEXT & o)13332 static void parse_VkDisplayPowerInfoEXT(const char *s, Json::Value &obj, VkDisplayPowerInfoEXT &o)
13333 {
13334 
13335     parse_VkStructureType("sType", obj["sType"], (o.sType));
13336 
13337     o.pNext = (VkDisplayPowerInfoEXT *)parsePNextChain(obj);
13338 
13339     parse_VkDisplayPowerStateEXT("powerState", obj["powerState"], (o.powerState));
13340 }
13341 
parse_VkDeviceEventInfoEXT(const char * s,Json::Value & obj,VkDeviceEventInfoEXT & o)13342 static void parse_VkDeviceEventInfoEXT(const char *s, Json::Value &obj, VkDeviceEventInfoEXT &o)
13343 {
13344 
13345     parse_VkStructureType("sType", obj["sType"], (o.sType));
13346 
13347     o.pNext = (VkDeviceEventInfoEXT *)parsePNextChain(obj);
13348 
13349     parse_VkDeviceEventTypeEXT("deviceEvent", obj["deviceEvent"], (o.deviceEvent));
13350 }
13351 
parse_VkDisplayEventInfoEXT(const char * s,Json::Value & obj,VkDisplayEventInfoEXT & o)13352 static void parse_VkDisplayEventInfoEXT(const char *s, Json::Value &obj, VkDisplayEventInfoEXT &o)
13353 {
13354 
13355     parse_VkStructureType("sType", obj["sType"], (o.sType));
13356 
13357     o.pNext = (VkDisplayEventInfoEXT *)parsePNextChain(obj);
13358 
13359     parse_VkDisplayEventTypeEXT("displayEvent", obj["displayEvent"], (o.displayEvent));
13360 }
13361 
parse_VkSwapchainCounterCreateInfoEXT(const char * s,Json::Value & obj,VkSwapchainCounterCreateInfoEXT & o)13362 static void parse_VkSwapchainCounterCreateInfoEXT(const char *s, Json::Value &obj, VkSwapchainCounterCreateInfoEXT &o)
13363 {
13364 
13365     parse_VkStructureType("sType", obj["sType"], (o.sType));
13366 
13367     o.pNext = (VkSwapchainCounterCreateInfoEXT *)parsePNextChain(obj);
13368 
13369     parse_VkSurfaceCounterFlagsEXT("surfaceCounters", obj["surfaceCounters"], (o.surfaceCounters));
13370 }
13371 
13372 static std::map<std::string, int> VkDiscardRectangleModeEXT_map = {
13373     std::make_pair("VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT", 0),
13374     std::make_pair("VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT", 1),
13375 };
parse_VkDiscardRectangleModeEXT(const char * s,Json::Value & obj,VkDiscardRectangleModeEXT & o)13376 static void parse_VkDiscardRectangleModeEXT(const char *s, Json::Value &obj, VkDiscardRectangleModeEXT &o)
13377 {
13378     std::string _res = obj.asString();
13379     o                = (VkDiscardRectangleModeEXT)VkDiscardRectangleModeEXT_map[std::string(_res)];
13380 }
13381 
parse_VkPipelineDiscardRectangleStateCreateFlagsEXT(const char * s,Json::Value & obj,VkPipelineDiscardRectangleStateCreateFlagsEXT & o)13382 static void parse_VkPipelineDiscardRectangleStateCreateFlagsEXT(const char *s, Json::Value &obj,
13383                                                                 VkPipelineDiscardRectangleStateCreateFlagsEXT &o)
13384 {
13385     if (obj.isString())
13386     {
13387         std::string _res = obj.asString();
13388         sscanf(_res.c_str(), "%u", &o);
13389     }
13390     else
13391     {
13392         o = obj.asUInt();
13393     }
13394 }
13395 
parse_VkPhysicalDeviceDiscardRectanglePropertiesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceDiscardRectanglePropertiesEXT & o)13396 static void parse_VkPhysicalDeviceDiscardRectanglePropertiesEXT(const char *s, Json::Value &obj,
13397                                                                 VkPhysicalDeviceDiscardRectanglePropertiesEXT &o)
13398 {
13399 
13400     parse_VkStructureType("sType", obj["sType"], (o.sType));
13401 
13402     o.pNext = (VkPhysicalDeviceDiscardRectanglePropertiesEXT *)parsePNextChain(obj);
13403 
13404     parse_uint32_t("maxDiscardRectangles", obj["maxDiscardRectangles"], (o.maxDiscardRectangles));
13405 }
13406 
parse_VkPipelineDiscardRectangleStateCreateInfoEXT(const char * s,Json::Value & obj,VkPipelineDiscardRectangleStateCreateInfoEXT & o)13407 static void parse_VkPipelineDiscardRectangleStateCreateInfoEXT(const char *s, Json::Value &obj,
13408                                                                VkPipelineDiscardRectangleStateCreateInfoEXT &o)
13409 {
13410 
13411     parse_VkStructureType("sType", obj["sType"], (o.sType));
13412 
13413     o.pNext = (VkPipelineDiscardRectangleStateCreateInfoEXT *)parsePNextChain(obj);
13414 
13415     parse_VkPipelineDiscardRectangleStateCreateFlagsEXT("flags", obj["flags"], (o.flags));
13416 
13417     parse_VkDiscardRectangleModeEXT("discardRectangleMode", obj["discardRectangleMode"], (o.discardRectangleMode));
13418 
13419     parse_uint32_t("discardRectangleCount", obj["discardRectangleCount"], (o.discardRectangleCount));
13420 
13421     (o.pDiscardRectangles)              = (VkRect2D *)s_globalMem.allocate((o.discardRectangleCount), sizeof(VkRect2D));
13422     Json::Value &obj_pDiscardRectangles = obj["pDiscardRectangles"];
13423     if (obj_pDiscardRectangles.size() == 0)
13424         (o.pDiscardRectangles) = nullptr;
13425     else
13426     {
13427         for (unsigned int i = 0; i < (o.discardRectangleCount); i++)
13428         {
13429             parse_VkRect2D("pDiscardRectangles", obj_pDiscardRectangles[i],
13430                            const_cast<VkRect2D &>((o.pDiscardRectangles[i])));
13431         }
13432     }
13433 }
13434 
13435 static std::map<std::string, int> VkConservativeRasterizationModeEXT_map = {
13436     std::make_pair("VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT", 0),
13437     std::make_pair("VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT", 1),
13438     std::make_pair("VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT", 2),
13439 };
parse_VkConservativeRasterizationModeEXT(const char * s,Json::Value & obj,VkConservativeRasterizationModeEXT & o)13440 static void parse_VkConservativeRasterizationModeEXT(const char *s, Json::Value &obj,
13441                                                      VkConservativeRasterizationModeEXT &o)
13442 {
13443     std::string _res = obj.asString();
13444     o                = (VkConservativeRasterizationModeEXT)VkConservativeRasterizationModeEXT_map[std::string(_res)];
13445 }
13446 
parse_VkPipelineRasterizationConservativeStateCreateFlagsEXT(const char * s,Json::Value & obj,VkPipelineRasterizationConservativeStateCreateFlagsEXT & o)13447 static void parse_VkPipelineRasterizationConservativeStateCreateFlagsEXT(
13448     const char *s, Json::Value &obj, VkPipelineRasterizationConservativeStateCreateFlagsEXT &o)
13449 {
13450     if (obj.isString())
13451     {
13452         std::string _res = obj.asString();
13453         sscanf(_res.c_str(), "%u", &o);
13454     }
13455     else
13456     {
13457         o = obj.asUInt();
13458     }
13459 }
13460 
parse_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceConservativeRasterizationPropertiesEXT & o)13461 static void parse_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
13462     const char *s, Json::Value &obj, VkPhysicalDeviceConservativeRasterizationPropertiesEXT &o)
13463 {
13464 
13465     parse_VkStructureType("sType", obj["sType"], (o.sType));
13466 
13467     o.pNext = (VkPhysicalDeviceConservativeRasterizationPropertiesEXT *)parsePNextChain(obj);
13468 
13469     parse_float("primitiveOverestimationSize", obj["primitiveOverestimationSize"], (o.primitiveOverestimationSize));
13470 
13471     parse_float("maxExtraPrimitiveOverestimationSize", obj["maxExtraPrimitiveOverestimationSize"],
13472                 (o.maxExtraPrimitiveOverestimationSize));
13473 
13474     parse_float("extraPrimitiveOverestimationSizeGranularity", obj["extraPrimitiveOverestimationSizeGranularity"],
13475                 (o.extraPrimitiveOverestimationSizeGranularity));
13476 
13477     parse_VkBool32("primitiveUnderestimation", obj["primitiveUnderestimation"], (o.primitiveUnderestimation));
13478 
13479     parse_VkBool32("conservativePointAndLineRasterization", obj["conservativePointAndLineRasterization"],
13480                    (o.conservativePointAndLineRasterization));
13481 
13482     parse_VkBool32("degenerateTrianglesRasterized", obj["degenerateTrianglesRasterized"],
13483                    (o.degenerateTrianglesRasterized));
13484 
13485     parse_VkBool32("degenerateLinesRasterized", obj["degenerateLinesRasterized"], (o.degenerateLinesRasterized));
13486 
13487     parse_VkBool32("fullyCoveredFragmentShaderInputVariable", obj["fullyCoveredFragmentShaderInputVariable"],
13488                    (o.fullyCoveredFragmentShaderInputVariable));
13489 
13490     parse_VkBool32("conservativeRasterizationPostDepthCoverage", obj["conservativeRasterizationPostDepthCoverage"],
13491                    (o.conservativeRasterizationPostDepthCoverage));
13492 }
13493 
parse_VkPipelineRasterizationConservativeStateCreateInfoEXT(const char * s,Json::Value & obj,VkPipelineRasterizationConservativeStateCreateInfoEXT & o)13494 static void parse_VkPipelineRasterizationConservativeStateCreateInfoEXT(
13495     const char *s, Json::Value &obj, VkPipelineRasterizationConservativeStateCreateInfoEXT &o)
13496 {
13497 
13498     parse_VkStructureType("sType", obj["sType"], (o.sType));
13499 
13500     o.pNext = (VkPipelineRasterizationConservativeStateCreateInfoEXT *)parsePNextChain(obj);
13501 
13502     parse_VkPipelineRasterizationConservativeStateCreateFlagsEXT("flags", obj["flags"], (o.flags));
13503 
13504     parse_VkConservativeRasterizationModeEXT("conservativeRasterizationMode", obj["conservativeRasterizationMode"],
13505                                              (o.conservativeRasterizationMode));
13506 
13507     parse_float("extraPrimitiveOverestimationSize", obj["extraPrimitiveOverestimationSize"],
13508                 (o.extraPrimitiveOverestimationSize));
13509 }
13510 
parse_VkPipelineRasterizationDepthClipStateCreateFlagsEXT(const char * s,Json::Value & obj,VkPipelineRasterizationDepthClipStateCreateFlagsEXT & o)13511 static void parse_VkPipelineRasterizationDepthClipStateCreateFlagsEXT(
13512     const char *s, Json::Value &obj, VkPipelineRasterizationDepthClipStateCreateFlagsEXT &o)
13513 {
13514     if (obj.isString())
13515     {
13516         std::string _res = obj.asString();
13517         sscanf(_res.c_str(), "%u", &o);
13518     }
13519     else
13520     {
13521         o = obj.asUInt();
13522     }
13523 }
13524 
parse_VkPhysicalDeviceDepthClipEnableFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceDepthClipEnableFeaturesEXT & o)13525 static void parse_VkPhysicalDeviceDepthClipEnableFeaturesEXT(const char *s, Json::Value &obj,
13526                                                              VkPhysicalDeviceDepthClipEnableFeaturesEXT &o)
13527 {
13528 
13529     parse_VkStructureType("sType", obj["sType"], (o.sType));
13530 
13531     o.pNext = (VkPhysicalDeviceDepthClipEnableFeaturesEXT *)parsePNextChain(obj);
13532 
13533     parse_VkBool32("depthClipEnable", obj["depthClipEnable"], (o.depthClipEnable));
13534 }
13535 
parse_VkPipelineRasterizationDepthClipStateCreateInfoEXT(const char * s,Json::Value & obj,VkPipelineRasterizationDepthClipStateCreateInfoEXT & o)13536 static void parse_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
13537     const char *s, Json::Value &obj, VkPipelineRasterizationDepthClipStateCreateInfoEXT &o)
13538 {
13539 
13540     parse_VkStructureType("sType", obj["sType"], (o.sType));
13541 
13542     o.pNext = (VkPipelineRasterizationDepthClipStateCreateInfoEXT *)parsePNextChain(obj);
13543 
13544     parse_VkPipelineRasterizationDepthClipStateCreateFlagsEXT("flags", obj["flags"], (o.flags));
13545 
13546     parse_VkBool32("depthClipEnable", obj["depthClipEnable"], (o.depthClipEnable));
13547 }
13548 
parse_VkXYColorEXT(const char * s,Json::Value & obj,VkXYColorEXT & o)13549 static void parse_VkXYColorEXT(const char *s, Json::Value &obj, VkXYColorEXT &o)
13550 {
13551 
13552     parse_float("x", obj["x"], (o.x));
13553 
13554     parse_float("y", obj["y"], (o.y));
13555 }
13556 
parse_VkHdrMetadataEXT(const char * s,Json::Value & obj,VkHdrMetadataEXT & o)13557 static void parse_VkHdrMetadataEXT(const char *s, Json::Value &obj, VkHdrMetadataEXT &o)
13558 {
13559 
13560     parse_VkStructureType("sType", obj["sType"], (o.sType));
13561 
13562     o.pNext = (VkHdrMetadataEXT *)parsePNextChain(obj);
13563 
13564     parse_VkXYColorEXT("displayPrimaryRed", obj["displayPrimaryRed"], (o.displayPrimaryRed));
13565 
13566     parse_VkXYColorEXT("displayPrimaryGreen", obj["displayPrimaryGreen"], (o.displayPrimaryGreen));
13567 
13568     parse_VkXYColorEXT("displayPrimaryBlue", obj["displayPrimaryBlue"], (o.displayPrimaryBlue));
13569 
13570     parse_VkXYColorEXT("whitePoint", obj["whitePoint"], (o.whitePoint));
13571 
13572     parse_float("maxLuminance", obj["maxLuminance"], (o.maxLuminance));
13573 
13574     parse_float("minLuminance", obj["minLuminance"], (o.minLuminance));
13575 
13576     parse_float("maxContentLightLevel", obj["maxContentLightLevel"], (o.maxContentLightLevel));
13577 
13578     parse_float("maxFrameAverageLightLevel", obj["maxFrameAverageLightLevel"], (o.maxFrameAverageLightLevel));
13579 }
13580 
parse_VkDebugUtilsMessengerEXT(const char * s,Json::Value & obj,VkDebugUtilsMessengerEXT & o)13581 static void parse_VkDebugUtilsMessengerEXT(const char *s, Json::Value &obj, VkDebugUtilsMessengerEXT &o)
13582 {
13583     //     std::string _res = obj.asString();
13584 }
13585 
13586 static std::map<std::string, int> VkDebugUtilsMessageSeverityFlagBitsEXT_map = {
13587     std::make_pair("VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT", 1UL << 0),
13588     std::make_pair("VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT", 1UL << 4),
13589     std::make_pair("VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT", 1UL << 8),
13590     std::make_pair("VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT", 1UL << 12),
13591 };
parse_VkDebugUtilsMessageSeverityFlagBitsEXT(const char * s,Json::Value & obj,VkDebugUtilsMessageSeverityFlagBitsEXT & o)13592 static void parse_VkDebugUtilsMessageSeverityFlagBitsEXT(const char *s, Json::Value &obj,
13593                                                          VkDebugUtilsMessageSeverityFlagBitsEXT &o)
13594 {
13595     std::string _res = obj.asString();
13596     o = (VkDebugUtilsMessageSeverityFlagBitsEXT)VkDebugUtilsMessageSeverityFlagBitsEXT_map[std::string(_res)];
13597 }
13598 
13599 static std::map<std::string, int> VkDebugUtilsMessageTypeFlagBitsEXT_map = {
13600     std::make_pair("VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT", 1UL << 0),
13601     std::make_pair("VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT", 1UL << 1),
13602     std::make_pair("VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT", 1UL << 2),
13603 };
parse_VkDebugUtilsMessageTypeFlagBitsEXT(const char * s,Json::Value & obj,VkDebugUtilsMessageTypeFlagBitsEXT & o)13604 static void parse_VkDebugUtilsMessageTypeFlagBitsEXT(const char *s, Json::Value &obj,
13605                                                      VkDebugUtilsMessageTypeFlagBitsEXT &o)
13606 {
13607     std::string _res = obj.asString();
13608     o                = (VkDebugUtilsMessageTypeFlagBitsEXT)VkDebugUtilsMessageTypeFlagBitsEXT_map[std::string(_res)];
13609 }
13610 
parse_VkDebugUtilsMessengerCallbackDataFlagsEXT(const char * s,Json::Value & obj,VkDebugUtilsMessengerCallbackDataFlagsEXT & o)13611 static void parse_VkDebugUtilsMessengerCallbackDataFlagsEXT(const char *s, Json::Value &obj,
13612                                                             VkDebugUtilsMessengerCallbackDataFlagsEXT &o)
13613 {
13614     if (obj.isString())
13615     {
13616         std::string _res = obj.asString();
13617         sscanf(_res.c_str(), "%u", &o);
13618     }
13619     else
13620     {
13621         o = obj.asUInt();
13622     }
13623 }
13624 
parse_VkDebugUtilsMessageTypeFlagsEXT(const char * s,Json::Value & obj,VkDebugUtilsMessageTypeFlagsEXT & o)13625 static void parse_VkDebugUtilsMessageTypeFlagsEXT(const char *s, Json::Value &obj, VkDebugUtilsMessageTypeFlagsEXT &o)
13626 {
13627     o                = (VkDebugUtilsMessageTypeFlagsEXT)0;
13628     std::string _res = obj.asString();
13629     std::vector<std::string> bitmasks;
13630     std::istringstream inputStream(_res);
13631     std::string tempStr;
13632     while (getline(inputStream, tempStr, '|'))
13633     {
13634         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
13635         bitmasks.push_back(tempStr);
13636     }
13637     for (auto &it : bitmasks)
13638     {
13639         o |= (VkDebugUtilsMessageTypeFlagBitsEXT)VkDebugUtilsMessageTypeFlagBitsEXT_map[it];
13640     }
13641 }
13642 
parse_VkDebugUtilsMessageSeverityFlagsEXT(const char * s,Json::Value & obj,VkDebugUtilsMessageSeverityFlagsEXT & o)13643 static void parse_VkDebugUtilsMessageSeverityFlagsEXT(const char *s, Json::Value &obj,
13644                                                       VkDebugUtilsMessageSeverityFlagsEXT &o)
13645 {
13646     o                = (VkDebugUtilsMessageSeverityFlagsEXT)0;
13647     std::string _res = obj.asString();
13648     std::vector<std::string> bitmasks;
13649     std::istringstream inputStream(_res);
13650     std::string tempStr;
13651     while (getline(inputStream, tempStr, '|'))
13652     {
13653         tempStr.erase(std::remove_if(tempStr.begin(), tempStr.end(), isspace), tempStr.end());
13654         bitmasks.push_back(tempStr);
13655     }
13656     for (auto &it : bitmasks)
13657     {
13658         o |= (VkDebugUtilsMessageSeverityFlagBitsEXT)VkDebugUtilsMessageSeverityFlagBitsEXT_map[it];
13659     }
13660 }
13661 
parse_VkDebugUtilsMessengerCreateFlagsEXT(const char * s,Json::Value & obj,VkDebugUtilsMessengerCreateFlagsEXT & o)13662 static void parse_VkDebugUtilsMessengerCreateFlagsEXT(const char *s, Json::Value &obj,
13663                                                       VkDebugUtilsMessengerCreateFlagsEXT &o)
13664 {
13665     if (obj.isString())
13666     {
13667         std::string _res = obj.asString();
13668         sscanf(_res.c_str(), "%u", &o);
13669     }
13670     else
13671     {
13672         o = obj.asUInt();
13673     }
13674 }
13675 
parse_VkDebugUtilsLabelEXT(const char * s,Json::Value & obj,VkDebugUtilsLabelEXT & o)13676 static void parse_VkDebugUtilsLabelEXT(const char *s, Json::Value &obj, VkDebugUtilsLabelEXT &o)
13677 {
13678 
13679     parse_VkStructureType("sType", obj["sType"], (o.sType));
13680 
13681     o.pNext = (VkDebugUtilsLabelEXT *)parsePNextChain(obj);
13682 
13683     /** TODO: Handle this - pLabelName **/
13684 
13685     Json::Value &obj_color_arr = obj["color"];
13686     for (unsigned int i = 0; i < obj_color_arr.size(); i++)
13687     {
13688         parse_float("color", obj_color_arr[i], const_cast<float &>((o.color[i])));
13689     }
13690 }
13691 
parse_VkDebugUtilsObjectNameInfoEXT(const char * s,Json::Value & obj,VkDebugUtilsObjectNameInfoEXT & o)13692 static void parse_VkDebugUtilsObjectNameInfoEXT(const char *s, Json::Value &obj, VkDebugUtilsObjectNameInfoEXT &o)
13693 {
13694 
13695     parse_VkStructureType("sType", obj["sType"], (o.sType));
13696 
13697     o.pNext = (VkDebugUtilsObjectNameInfoEXT *)parsePNextChain(obj);
13698 
13699     parse_VkObjectType("objectType", obj["objectType"], (o.objectType));
13700 
13701     parse_uint64_t("objectHandle", obj["objectHandle"], (o.objectHandle));
13702 
13703     /** TODO: Handle this - pObjectName **/
13704 }
13705 
parse_VkDebugUtilsMessengerCallbackDataEXT(const char * s,Json::Value & obj,VkDebugUtilsMessengerCallbackDataEXT & o)13706 static void parse_VkDebugUtilsMessengerCallbackDataEXT(const char *s, Json::Value &obj,
13707                                                        VkDebugUtilsMessengerCallbackDataEXT &o)
13708 {
13709 
13710     parse_VkStructureType("sType", obj["sType"], (o.sType));
13711 
13712     o.pNext = (VkDebugUtilsMessengerCallbackDataEXT *)parsePNextChain(obj);
13713 
13714     parse_VkDebugUtilsMessengerCallbackDataFlagsEXT("flags", obj["flags"], (o.flags));
13715 
13716     /** TODO: Handle this - pMessageIdName **/
13717 
13718     parse_int32_t("messageIdNumber", obj["messageIdNumber"], (o.messageIdNumber));
13719 
13720     /** TODO: Handle this - pMessage **/
13721 
13722     parse_uint32_t("queueLabelCount", obj["queueLabelCount"], (o.queueLabelCount));
13723 
13724     (o.pQueueLabels) = (VkDebugUtilsLabelEXT *)s_globalMem.allocate((o.queueLabelCount), sizeof(VkDebugUtilsLabelEXT));
13725     Json::Value &obj_pQueueLabels = obj["pQueueLabels"];
13726     if (obj_pQueueLabels.size() == 0)
13727         (o.pQueueLabels) = nullptr;
13728     else
13729     {
13730         for (unsigned int i = 0; i < (o.queueLabelCount); i++)
13731         {
13732             parse_VkDebugUtilsLabelEXT("pQueueLabels", obj_pQueueLabels[i],
13733                                        const_cast<VkDebugUtilsLabelEXT &>((o.pQueueLabels[i])));
13734         }
13735     }
13736 
13737     parse_uint32_t("cmdBufLabelCount", obj["cmdBufLabelCount"], (o.cmdBufLabelCount));
13738 
13739     (o.pCmdBufLabels) =
13740         (VkDebugUtilsLabelEXT *)s_globalMem.allocate((o.cmdBufLabelCount), sizeof(VkDebugUtilsLabelEXT));
13741     Json::Value &obj_pCmdBufLabels = obj["pCmdBufLabels"];
13742     if (obj_pCmdBufLabels.size() == 0)
13743         (o.pCmdBufLabels) = nullptr;
13744     else
13745     {
13746         for (unsigned int i = 0; i < (o.cmdBufLabelCount); i++)
13747         {
13748             parse_VkDebugUtilsLabelEXT("pCmdBufLabels", obj_pCmdBufLabels[i],
13749                                        const_cast<VkDebugUtilsLabelEXT &>((o.pCmdBufLabels[i])));
13750         }
13751     }
13752 
13753     parse_uint32_t("objectCount", obj["objectCount"], (o.objectCount));
13754 
13755     (o.pObjects) =
13756         (VkDebugUtilsObjectNameInfoEXT *)s_globalMem.allocate((o.objectCount), sizeof(VkDebugUtilsObjectNameInfoEXT));
13757     Json::Value &obj_pObjects = obj["pObjects"];
13758     if (obj_pObjects.size() == 0)
13759         (o.pObjects) = nullptr;
13760     else
13761     {
13762         for (unsigned int i = 0; i < (o.objectCount); i++)
13763         {
13764             parse_VkDebugUtilsObjectNameInfoEXT("pObjects", obj_pObjects[i],
13765                                                 const_cast<VkDebugUtilsObjectNameInfoEXT &>((o.pObjects[i])));
13766         }
13767     }
13768 }
13769 
parse_VkDebugUtilsMessengerCreateInfoEXT(const char * s,Json::Value & obj,VkDebugUtilsMessengerCreateInfoEXT & o)13770 static void parse_VkDebugUtilsMessengerCreateInfoEXT(const char *s, Json::Value &obj,
13771                                                      VkDebugUtilsMessengerCreateInfoEXT &o)
13772 {
13773 
13774     parse_VkStructureType("sType", obj["sType"], (o.sType));
13775 
13776     o.pNext = (VkDebugUtilsMessengerCreateInfoEXT *)parsePNextChain(obj);
13777 
13778     parse_VkDebugUtilsMessengerCreateFlagsEXT("flags", obj["flags"], (o.flags));
13779 
13780     parse_VkDebugUtilsMessageSeverityFlagsEXT("messageSeverity", obj["messageSeverity"], (o.messageSeverity));
13781 
13782     parse_VkDebugUtilsMessageTypeFlagsEXT("messageType", obj["messageType"], (o.messageType));
13783 
13784     /** Note: Ignoring function pointer (PFN_vkDebugUtilsMessengerCallbackEXT). **/
13785 }
13786 
parse_VkDebugUtilsObjectTagInfoEXT(const char * s,Json::Value & obj,VkDebugUtilsObjectTagInfoEXT & o)13787 static void parse_VkDebugUtilsObjectTagInfoEXT(const char *s, Json::Value &obj, VkDebugUtilsObjectTagInfoEXT &o)
13788 {
13789 
13790     parse_VkStructureType("sType", obj["sType"], (o.sType));
13791 
13792     o.pNext = (VkDebugUtilsObjectTagInfoEXT *)parsePNextChain(obj);
13793 
13794     parse_VkObjectType("objectType", obj["objectType"], (o.objectType));
13795 
13796     parse_uint64_t("objectHandle", obj["objectHandle"], (o.objectHandle));
13797 
13798     parse_uint64_t("tagName", obj["tagName"], (o.tagName));
13799 
13800     parse_size_t("tagSize", obj["tagSize"], (o.tagSize));
13801 }
13802 
parse_VkSampleLocationEXT(const char * s,Json::Value & obj,VkSampleLocationEXT & o)13803 static void parse_VkSampleLocationEXT(const char *s, Json::Value &obj, VkSampleLocationEXT &o)
13804 {
13805 
13806     parse_float("x", obj["x"], (o.x));
13807 
13808     parse_float("y", obj["y"], (o.y));
13809 }
13810 
parse_VkSampleLocationsInfoEXT(const char * s,Json::Value & obj,VkSampleLocationsInfoEXT & o)13811 static void parse_VkSampleLocationsInfoEXT(const char *s, Json::Value &obj, VkSampleLocationsInfoEXT &o)
13812 {
13813 
13814     parse_VkStructureType("sType", obj["sType"], (o.sType));
13815 
13816     o.pNext = (VkSampleLocationsInfoEXT *)parsePNextChain(obj);
13817 
13818     parse_VkSampleCountFlagBits("sampleLocationsPerPixel", obj["sampleLocationsPerPixel"], (o.sampleLocationsPerPixel));
13819 
13820     parse_VkExtent2D("sampleLocationGridSize", obj["sampleLocationGridSize"], (o.sampleLocationGridSize));
13821 
13822     parse_uint32_t("sampleLocationsCount", obj["sampleLocationsCount"], (o.sampleLocationsCount));
13823 
13824     (o.pSampleLocations) =
13825         (VkSampleLocationEXT *)s_globalMem.allocate((o.sampleLocationsCount), sizeof(VkSampleLocationEXT));
13826     Json::Value &obj_pSampleLocations = obj["pSampleLocations"];
13827     if (obj_pSampleLocations.size() == 0)
13828         (o.pSampleLocations) = nullptr;
13829     else
13830     {
13831         for (unsigned int i = 0; i < (o.sampleLocationsCount); i++)
13832         {
13833             parse_VkSampleLocationEXT("pSampleLocations", obj_pSampleLocations[i],
13834                                       const_cast<VkSampleLocationEXT &>((o.pSampleLocations[i])));
13835         }
13836     }
13837 }
13838 
parse_VkAttachmentSampleLocationsEXT(const char * s,Json::Value & obj,VkAttachmentSampleLocationsEXT & o)13839 static void parse_VkAttachmentSampleLocationsEXT(const char *s, Json::Value &obj, VkAttachmentSampleLocationsEXT &o)
13840 {
13841 
13842     parse_uint32_t("attachmentIndex", obj["attachmentIndex"], (o.attachmentIndex));
13843 
13844     parse_VkSampleLocationsInfoEXT("sampleLocationsInfo", obj["sampleLocationsInfo"], (o.sampleLocationsInfo));
13845 }
13846 
parse_VkSubpassSampleLocationsEXT(const char * s,Json::Value & obj,VkSubpassSampleLocationsEXT & o)13847 static void parse_VkSubpassSampleLocationsEXT(const char *s, Json::Value &obj, VkSubpassSampleLocationsEXT &o)
13848 {
13849 
13850     parse_uint32_t("subpassIndex", obj["subpassIndex"], (o.subpassIndex));
13851 
13852     parse_VkSampleLocationsInfoEXT("sampleLocationsInfo", obj["sampleLocationsInfo"], (o.sampleLocationsInfo));
13853 }
13854 
parse_VkRenderPassSampleLocationsBeginInfoEXT(const char * s,Json::Value & obj,VkRenderPassSampleLocationsBeginInfoEXT & o)13855 static void parse_VkRenderPassSampleLocationsBeginInfoEXT(const char *s, Json::Value &obj,
13856                                                           VkRenderPassSampleLocationsBeginInfoEXT &o)
13857 {
13858 
13859     parse_VkStructureType("sType", obj["sType"], (o.sType));
13860 
13861     o.pNext = (VkRenderPassSampleLocationsBeginInfoEXT *)parsePNextChain(obj);
13862 
13863     parse_uint32_t("attachmentInitialSampleLocationsCount", obj["attachmentInitialSampleLocationsCount"],
13864                    (o.attachmentInitialSampleLocationsCount));
13865 
13866     (o.pAttachmentInitialSampleLocations) = (VkAttachmentSampleLocationsEXT *)s_globalMem.allocate(
13867         (o.attachmentInitialSampleLocationsCount), sizeof(VkAttachmentSampleLocationsEXT));
13868     Json::Value &obj_pAttachmentInitialSampleLocations = obj["pAttachmentInitialSampleLocations"];
13869     if (obj_pAttachmentInitialSampleLocations.size() == 0)
13870         (o.pAttachmentInitialSampleLocations) = nullptr;
13871     else
13872     {
13873         for (unsigned int i = 0; i < (o.attachmentInitialSampleLocationsCount); i++)
13874         {
13875             parse_VkAttachmentSampleLocationsEXT(
13876                 "pAttachmentInitialSampleLocations", obj_pAttachmentInitialSampleLocations[i],
13877                 const_cast<VkAttachmentSampleLocationsEXT &>((o.pAttachmentInitialSampleLocations[i])));
13878         }
13879     }
13880 
13881     parse_uint32_t("postSubpassSampleLocationsCount", obj["postSubpassSampleLocationsCount"],
13882                    (o.postSubpassSampleLocationsCount));
13883 
13884     (o.pPostSubpassSampleLocations) = (VkSubpassSampleLocationsEXT *)s_globalMem.allocate(
13885         (o.postSubpassSampleLocationsCount), sizeof(VkSubpassSampleLocationsEXT));
13886     Json::Value &obj_pPostSubpassSampleLocations = obj["pPostSubpassSampleLocations"];
13887     if (obj_pPostSubpassSampleLocations.size() == 0)
13888         (o.pPostSubpassSampleLocations) = nullptr;
13889     else
13890     {
13891         for (unsigned int i = 0; i < (o.postSubpassSampleLocationsCount); i++)
13892         {
13893             parse_VkSubpassSampleLocationsEXT(
13894                 "pPostSubpassSampleLocations", obj_pPostSubpassSampleLocations[i],
13895                 const_cast<VkSubpassSampleLocationsEXT &>((o.pPostSubpassSampleLocations[i])));
13896         }
13897     }
13898 }
13899 
parse_VkPipelineSampleLocationsStateCreateInfoEXT(const char * s,Json::Value & obj,VkPipelineSampleLocationsStateCreateInfoEXT & o)13900 static void parse_VkPipelineSampleLocationsStateCreateInfoEXT(const char *s, Json::Value &obj,
13901                                                               VkPipelineSampleLocationsStateCreateInfoEXT &o)
13902 {
13903 
13904     parse_VkStructureType("sType", obj["sType"], (o.sType));
13905 
13906     o.pNext = (VkPipelineSampleLocationsStateCreateInfoEXT *)parsePNextChain(obj);
13907 
13908     parse_VkBool32("sampleLocationsEnable", obj["sampleLocationsEnable"], (o.sampleLocationsEnable));
13909 
13910     parse_VkSampleLocationsInfoEXT("sampleLocationsInfo", obj["sampleLocationsInfo"], (o.sampleLocationsInfo));
13911 }
13912 
parse_VkPhysicalDeviceSampleLocationsPropertiesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceSampleLocationsPropertiesEXT & o)13913 static void parse_VkPhysicalDeviceSampleLocationsPropertiesEXT(const char *s, Json::Value &obj,
13914                                                                VkPhysicalDeviceSampleLocationsPropertiesEXT &o)
13915 {
13916 
13917     parse_VkStructureType("sType", obj["sType"], (o.sType));
13918 
13919     o.pNext = (VkPhysicalDeviceSampleLocationsPropertiesEXT *)parsePNextChain(obj);
13920 
13921     parse_VkSampleCountFlags("sampleLocationSampleCounts", obj["sampleLocationSampleCounts"],
13922                              (o.sampleLocationSampleCounts));
13923 
13924     parse_VkExtent2D("maxSampleLocationGridSize", obj["maxSampleLocationGridSize"], (o.maxSampleLocationGridSize));
13925 
13926     Json::Value &obj_sampleLocationCoordinateRange_arr = obj["sampleLocationCoordinateRange"];
13927     for (unsigned int i = 0; i < obj_sampleLocationCoordinateRange_arr.size(); i++)
13928     {
13929         parse_float("sampleLocationCoordinateRange", obj_sampleLocationCoordinateRange_arr[i],
13930                     const_cast<float &>((o.sampleLocationCoordinateRange[i])));
13931     }
13932 
13933     parse_uint32_t("sampleLocationSubPixelBits", obj["sampleLocationSubPixelBits"], (o.sampleLocationSubPixelBits));
13934 
13935     parse_VkBool32("variableSampleLocations", obj["variableSampleLocations"], (o.variableSampleLocations));
13936 }
13937 
parse_VkMultisamplePropertiesEXT(const char * s,Json::Value & obj,VkMultisamplePropertiesEXT & o)13938 static void parse_VkMultisamplePropertiesEXT(const char *s, Json::Value &obj, VkMultisamplePropertiesEXT &o)
13939 {
13940 
13941     parse_VkStructureType("sType", obj["sType"], (o.sType));
13942 
13943     o.pNext = (VkMultisamplePropertiesEXT *)parsePNextChain(obj);
13944 
13945     parse_VkExtent2D("maxSampleLocationGridSize", obj["maxSampleLocationGridSize"], (o.maxSampleLocationGridSize));
13946 }
13947 
13948 static std::map<std::string, int> VkBlendOverlapEXT_map = {
13949     std::make_pair("VK_BLEND_OVERLAP_UNCORRELATED_EXT", 0),
13950     std::make_pair("VK_BLEND_OVERLAP_DISJOINT_EXT", 1),
13951     std::make_pair("VK_BLEND_OVERLAP_CONJOINT_EXT", 2),
13952 };
parse_VkBlendOverlapEXT(const char * s,Json::Value & obj,VkBlendOverlapEXT & o)13953 static void parse_VkBlendOverlapEXT(const char *s, Json::Value &obj, VkBlendOverlapEXT &o)
13954 {
13955     std::string _res = obj.asString();
13956     o                = (VkBlendOverlapEXT)VkBlendOverlapEXT_map[std::string(_res)];
13957 }
13958 
parse_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT & o)13959 static void parse_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
13960     const char *s, Json::Value &obj, VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT &o)
13961 {
13962 
13963     parse_VkStructureType("sType", obj["sType"], (o.sType));
13964 
13965     o.pNext = (VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *)parsePNextChain(obj);
13966 
13967     parse_VkBool32("advancedBlendCoherentOperations", obj["advancedBlendCoherentOperations"],
13968                    (o.advancedBlendCoherentOperations));
13969 }
13970 
parse_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT & o)13971 static void parse_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
13972     const char *s, Json::Value &obj, VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT &o)
13973 {
13974 
13975     parse_VkStructureType("sType", obj["sType"], (o.sType));
13976 
13977     o.pNext = (VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *)parsePNextChain(obj);
13978 
13979     parse_uint32_t("advancedBlendMaxColorAttachments", obj["advancedBlendMaxColorAttachments"],
13980                    (o.advancedBlendMaxColorAttachments));
13981 
13982     parse_VkBool32("advancedBlendIndependentBlend", obj["advancedBlendIndependentBlend"],
13983                    (o.advancedBlendIndependentBlend));
13984 
13985     parse_VkBool32("advancedBlendNonPremultipliedSrcColor", obj["advancedBlendNonPremultipliedSrcColor"],
13986                    (o.advancedBlendNonPremultipliedSrcColor));
13987 
13988     parse_VkBool32("advancedBlendNonPremultipliedDstColor", obj["advancedBlendNonPremultipliedDstColor"],
13989                    (o.advancedBlendNonPremultipliedDstColor));
13990 
13991     parse_VkBool32("advancedBlendCorrelatedOverlap", obj["advancedBlendCorrelatedOverlap"],
13992                    (o.advancedBlendCorrelatedOverlap));
13993 
13994     parse_VkBool32("advancedBlendAllOperations", obj["advancedBlendAllOperations"], (o.advancedBlendAllOperations));
13995 }
13996 
parse_VkPipelineColorBlendAdvancedStateCreateInfoEXT(const char * s,Json::Value & obj,VkPipelineColorBlendAdvancedStateCreateInfoEXT & o)13997 static void parse_VkPipelineColorBlendAdvancedStateCreateInfoEXT(const char *s, Json::Value &obj,
13998                                                                  VkPipelineColorBlendAdvancedStateCreateInfoEXT &o)
13999 {
14000 
14001     parse_VkStructureType("sType", obj["sType"], (o.sType));
14002 
14003     o.pNext = (VkPipelineColorBlendAdvancedStateCreateInfoEXT *)parsePNextChain(obj);
14004 
14005     parse_VkBool32("srcPremultiplied", obj["srcPremultiplied"], (o.srcPremultiplied));
14006 
14007     parse_VkBool32("dstPremultiplied", obj["dstPremultiplied"], (o.dstPremultiplied));
14008 
14009     parse_VkBlendOverlapEXT("blendOverlap", obj["blendOverlap"], (o.blendOverlap));
14010 }
14011 
14012 static std::map<std::string, uint64_t> VkFormatFeatureFlagBits2KHR_map = {
14013     std::make_pair("VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR", 1ULL << 0),
14014     std::make_pair("VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR", 1ULL << 1),
14015     std::make_pair("VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR", 1ULL << 2),
14016     std::make_pair("VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR", 1ULL << 3),
14017     std::make_pair("VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR", 1ULL << 4),
14018     std::make_pair("VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR", 1ULL << 5),
14019     std::make_pair("VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR", 1ULL << 6),
14020     std::make_pair("VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR", 1ULL << 7),
14021     std::make_pair("VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR", 1ULL << 8),
14022     std::make_pair("VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR", 1ULL << 9),
14023     std::make_pair("VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR", 1ULL << 10),
14024     std::make_pair("VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR", 1ULL << 11),
14025     std::make_pair("VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR", 1ULL << 12),
14026     std::make_pair("VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT", 1ULL << 13),
14027     std::make_pair("VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR", 1ULL << 14),
14028     std::make_pair("VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR", 1ULL << 15),
14029     std::make_pair("VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR", 1ULL << 16),
14030     std::make_pair("VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR", 1ULL << 17),
14031     std::make_pair("VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR", 1ULL << 18),
14032     std::make_pair("VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR",
14033                    1ULL << 19),
14034     std::make_pair("VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR",
14035                    1ULL << 20),
14036     std::make_pair(
14037         "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR",
14038         1ULL << 21),
14039     std::make_pair("VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR", 1ULL << 22),
14040     std::make_pair("VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR", 1ULL << 23),
14041     std::make_pair("VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR", 1ULL << 31),
14042     std::make_pair("VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR", 1ULL << 32),
14043     std::make_pair("VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR", 1ULL << 33),
14044     std::make_pair("VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR", 1ULL << 25),
14045     std::make_pair("VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR", 1ULL << 26),
14046     std::make_pair("VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR", 1ULL << 29),
14047     std::make_pair("VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT", 1ULL << 24),
14048     std::make_pair("VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR", 1ULL << 30),
14049     std::make_pair("VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR", 1ULL << 27),
14050     std::make_pair("VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR", 1ULL << 28),
14051 };
parse_VkFormatFeatureFlagBits2KHR(const char * s,Json::Value & obj,VkFormatFeatureFlagBits2KHR & o)14052 static void parse_VkFormatFeatureFlagBits2KHR(const char *s, Json::Value &obj, VkFormatFeatureFlagBits2KHR &o)
14053 {
14054     std::string _res = obj.asString();
14055     o                = (VkFormatFeatureFlagBits2KHR)VkFormatFeatureFlagBits2KHR_map[std::string(_res)];
14056 }
14057 
parse_VkFormatFeatureFlags2KHR(const char * s,Json::Value & obj,VkFormatFeatureFlags2KHR & o)14058 static void parse_VkFormatFeatureFlags2KHR(const char *s, Json::Value &obj, VkFormatFeatureFlags2KHR &o)
14059 {
14060     if (obj.isString())
14061     {
14062         std::string _res = obj.asString();
14063         sscanf(_res.c_str(), "%" SCNd64, &o);
14064     }
14065     else
14066     {
14067         o = obj.asUInt();
14068     }
14069 }
14070 
parse_VkDrmFormatModifierPropertiesEXT(const char * s,Json::Value & obj,VkDrmFormatModifierPropertiesEXT & o)14071 static void parse_VkDrmFormatModifierPropertiesEXT(const char *s, Json::Value &obj, VkDrmFormatModifierPropertiesEXT &o)
14072 {
14073 
14074     parse_uint64_t("drmFormatModifier", obj["drmFormatModifier"], (o.drmFormatModifier));
14075 
14076     parse_uint32_t("drmFormatModifierPlaneCount", obj["drmFormatModifierPlaneCount"], (o.drmFormatModifierPlaneCount));
14077 
14078     parse_VkFormatFeatureFlags("drmFormatModifierTilingFeatures", obj["drmFormatModifierTilingFeatures"],
14079                                (o.drmFormatModifierTilingFeatures));
14080 }
14081 
parse_VkDrmFormatModifierPropertiesListEXT(const char * s,Json::Value & obj,VkDrmFormatModifierPropertiesListEXT & o)14082 static void parse_VkDrmFormatModifierPropertiesListEXT(const char *s, Json::Value &obj,
14083                                                        VkDrmFormatModifierPropertiesListEXT &o)
14084 {
14085 
14086     parse_VkStructureType("sType", obj["sType"], (o.sType));
14087 
14088     o.pNext = (VkDrmFormatModifierPropertiesListEXT *)parsePNextChain(obj);
14089 
14090     parse_uint32_t("drmFormatModifierCount", obj["drmFormatModifierCount"], (o.drmFormatModifierCount));
14091 
14092     (o.pDrmFormatModifierProperties) = (VkDrmFormatModifierPropertiesEXT *)s_globalMem.allocate(
14093         (o.drmFormatModifierCount), sizeof(VkDrmFormatModifierPropertiesEXT));
14094     Json::Value &obj_pDrmFormatModifierProperties = obj["pDrmFormatModifierProperties"];
14095     if (obj_pDrmFormatModifierProperties.size() == 0)
14096         (o.pDrmFormatModifierProperties) = nullptr;
14097     else
14098     {
14099         for (unsigned int i = 0; i < (o.drmFormatModifierCount); i++)
14100         {
14101             parse_VkDrmFormatModifierPropertiesEXT(
14102                 "pDrmFormatModifierProperties", obj_pDrmFormatModifierProperties[i],
14103                 const_cast<VkDrmFormatModifierPropertiesEXT &>((o.pDrmFormatModifierProperties[i])));
14104         }
14105     }
14106 }
14107 
parse_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(const char * s,Json::Value & obj,VkPhysicalDeviceImageDrmFormatModifierInfoEXT & o)14108 static void parse_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(const char *s, Json::Value &obj,
14109                                                                 VkPhysicalDeviceImageDrmFormatModifierInfoEXT &o)
14110 {
14111 
14112     parse_VkStructureType("sType", obj["sType"], (o.sType));
14113 
14114     o.pNext = (VkPhysicalDeviceImageDrmFormatModifierInfoEXT *)parsePNextChain(obj);
14115 
14116     parse_uint64_t("drmFormatModifier", obj["drmFormatModifier"], (o.drmFormatModifier));
14117 
14118     parse_VkSharingMode("sharingMode", obj["sharingMode"], (o.sharingMode));
14119 
14120     parse_uint32_t("queueFamilyIndexCount", obj["queueFamilyIndexCount"], (o.queueFamilyIndexCount));
14121 
14122     (o.pQueueFamilyIndices) = (uint32_t *)s_globalMem.allocate((o.queueFamilyIndexCount), sizeof(uint32_t));
14123     Json::Value &obj_pQueueFamilyIndices_arr = obj["pQueueFamilyIndices"];
14124     for (unsigned int i = 0; i < obj_pQueueFamilyIndices_arr.size(); i++)
14125     {
14126         parse_uint32_t("pQueueFamilyIndices", obj_pQueueFamilyIndices_arr[i],
14127                        const_cast<uint32_t &>((o.pQueueFamilyIndices[i])));
14128     }
14129 }
14130 
parse_VkImageDrmFormatModifierListCreateInfoEXT(const char * s,Json::Value & obj,VkImageDrmFormatModifierListCreateInfoEXT & o)14131 static void parse_VkImageDrmFormatModifierListCreateInfoEXT(const char *s, Json::Value &obj,
14132                                                             VkImageDrmFormatModifierListCreateInfoEXT &o)
14133 {
14134 
14135     parse_VkStructureType("sType", obj["sType"], (o.sType));
14136 
14137     o.pNext = (VkImageDrmFormatModifierListCreateInfoEXT *)parsePNextChain(obj);
14138 
14139     parse_uint32_t("drmFormatModifierCount", obj["drmFormatModifierCount"], (o.drmFormatModifierCount));
14140 
14141     (o.pDrmFormatModifiers) = (uint64_t *)s_globalMem.allocate((o.drmFormatModifierCount), sizeof(uint64_t));
14142     Json::Value &obj_pDrmFormatModifiers_arr = obj["pDrmFormatModifiers"];
14143     for (unsigned int i = 0; i < obj_pDrmFormatModifiers_arr.size(); i++)
14144     {
14145         parse_uint64_t("pDrmFormatModifiers", obj_pDrmFormatModifiers_arr[i],
14146                        const_cast<uint64_t &>((o.pDrmFormatModifiers[i])));
14147     }
14148 }
14149 
parse_VkImageDrmFormatModifierExplicitCreateInfoEXT(const char * s,Json::Value & obj,VkImageDrmFormatModifierExplicitCreateInfoEXT & o)14150 static void parse_VkImageDrmFormatModifierExplicitCreateInfoEXT(const char *s, Json::Value &obj,
14151                                                                 VkImageDrmFormatModifierExplicitCreateInfoEXT &o)
14152 {
14153 
14154     parse_VkStructureType("sType", obj["sType"], (o.sType));
14155 
14156     o.pNext = (VkImageDrmFormatModifierExplicitCreateInfoEXT *)parsePNextChain(obj);
14157 
14158     parse_uint64_t("drmFormatModifier", obj["drmFormatModifier"], (o.drmFormatModifier));
14159 
14160     parse_uint32_t("drmFormatModifierPlaneCount", obj["drmFormatModifierPlaneCount"], (o.drmFormatModifierPlaneCount));
14161 
14162     (o.pPlaneLayouts) =
14163         (VkSubresourceLayout *)s_globalMem.allocate((o.drmFormatModifierPlaneCount), sizeof(VkSubresourceLayout));
14164     Json::Value &obj_pPlaneLayouts = obj["pPlaneLayouts"];
14165     if (obj_pPlaneLayouts.size() == 0)
14166         (o.pPlaneLayouts) = nullptr;
14167     else
14168     {
14169         for (unsigned int i = 0; i < (o.drmFormatModifierPlaneCount); i++)
14170         {
14171             parse_VkSubresourceLayout("pPlaneLayouts", obj_pPlaneLayouts[i],
14172                                       const_cast<VkSubresourceLayout &>((o.pPlaneLayouts[i])));
14173         }
14174     }
14175 }
14176 
parse_VkImageDrmFormatModifierPropertiesEXT(const char * s,Json::Value & obj,VkImageDrmFormatModifierPropertiesEXT & o)14177 static void parse_VkImageDrmFormatModifierPropertiesEXT(const char *s, Json::Value &obj,
14178                                                         VkImageDrmFormatModifierPropertiesEXT &o)
14179 {
14180 
14181     parse_VkStructureType("sType", obj["sType"], (o.sType));
14182 
14183     o.pNext = (VkImageDrmFormatModifierPropertiesEXT *)parsePNextChain(obj);
14184 
14185     parse_uint64_t("drmFormatModifier", obj["drmFormatModifier"], (o.drmFormatModifier));
14186 }
14187 
parse_VkDrmFormatModifierProperties2EXT(const char * s,Json::Value & obj,VkDrmFormatModifierProperties2EXT & o)14188 static void parse_VkDrmFormatModifierProperties2EXT(const char *s, Json::Value &obj,
14189                                                     VkDrmFormatModifierProperties2EXT &o)
14190 {
14191 
14192     parse_uint64_t("drmFormatModifier", obj["drmFormatModifier"], (o.drmFormatModifier));
14193 
14194     parse_uint32_t("drmFormatModifierPlaneCount", obj["drmFormatModifierPlaneCount"], (o.drmFormatModifierPlaneCount));
14195 
14196     parse_VkFormatFeatureFlags2KHR("drmFormatModifierTilingFeatures", obj["drmFormatModifierTilingFeatures"],
14197                                    (o.drmFormatModifierTilingFeatures));
14198 }
14199 
parse_VkDrmFormatModifierPropertiesList2EXT(const char * s,Json::Value & obj,VkDrmFormatModifierPropertiesList2EXT & o)14200 static void parse_VkDrmFormatModifierPropertiesList2EXT(const char *s, Json::Value &obj,
14201                                                         VkDrmFormatModifierPropertiesList2EXT &o)
14202 {
14203 
14204     parse_VkStructureType("sType", obj["sType"], (o.sType));
14205 
14206     o.pNext = (VkDrmFormatModifierPropertiesList2EXT *)parsePNextChain(obj);
14207 
14208     parse_uint32_t("drmFormatModifierCount", obj["drmFormatModifierCount"], (o.drmFormatModifierCount));
14209 
14210     (o.pDrmFormatModifierProperties) = (VkDrmFormatModifierProperties2EXT *)s_globalMem.allocate(
14211         (o.drmFormatModifierCount), sizeof(VkDrmFormatModifierProperties2EXT));
14212     Json::Value &obj_pDrmFormatModifierProperties = obj["pDrmFormatModifierProperties"];
14213     if (obj_pDrmFormatModifierProperties.size() == 0)
14214         (o.pDrmFormatModifierProperties) = nullptr;
14215     else
14216     {
14217         for (unsigned int i = 0; i < (o.drmFormatModifierCount); i++)
14218         {
14219             parse_VkDrmFormatModifierProperties2EXT(
14220                 "pDrmFormatModifierProperties", obj_pDrmFormatModifierProperties[i],
14221                 const_cast<VkDrmFormatModifierProperties2EXT &>((o.pDrmFormatModifierProperties[i])));
14222         }
14223     }
14224 }
14225 
parse_VkPhysicalDeviceImageViewImageFormatInfoEXT(const char * s,Json::Value & obj,VkPhysicalDeviceImageViewImageFormatInfoEXT & o)14226 static void parse_VkPhysicalDeviceImageViewImageFormatInfoEXT(const char *s, Json::Value &obj,
14227                                                               VkPhysicalDeviceImageViewImageFormatInfoEXT &o)
14228 {
14229 
14230     parse_VkStructureType("sType", obj["sType"], (o.sType));
14231 
14232     o.pNext = (VkPhysicalDeviceImageViewImageFormatInfoEXT *)parsePNextChain(obj);
14233 
14234     parse_VkImageViewType("imageViewType", obj["imageViewType"], (o.imageViewType));
14235 }
14236 
parse_VkFilterCubicImageViewImageFormatPropertiesEXT(const char * s,Json::Value & obj,VkFilterCubicImageViewImageFormatPropertiesEXT & o)14237 static void parse_VkFilterCubicImageViewImageFormatPropertiesEXT(const char *s, Json::Value &obj,
14238                                                                  VkFilterCubicImageViewImageFormatPropertiesEXT &o)
14239 {
14240 
14241     parse_VkStructureType("sType", obj["sType"], (o.sType));
14242 
14243     o.pNext = (VkFilterCubicImageViewImageFormatPropertiesEXT *)parsePNextChain(obj);
14244 
14245     parse_VkBool32("filterCubic", obj["filterCubic"], (o.filterCubic));
14246 
14247     parse_VkBool32("filterCubicMinmax", obj["filterCubicMinmax"], (o.filterCubicMinmax));
14248 }
14249 
14250 static std::map<std::string, int> VkQueueGlobalPriorityEXT_map = {
14251     std::make_pair("VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT", 128),
14252     std::make_pair("VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT", 256),
14253     std::make_pair("VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT", 512),
14254     std::make_pair("VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT", 1024),
14255 };
parse_VkQueueGlobalPriorityEXT(const char * s,Json::Value & obj,VkQueueGlobalPriorityEXT & o)14256 static void parse_VkQueueGlobalPriorityEXT(const char *s, Json::Value &obj, VkQueueGlobalPriorityEXT &o)
14257 {
14258     std::string _res = obj.asString();
14259     o                = (VkQueueGlobalPriorityEXT)VkQueueGlobalPriorityEXT_map[std::string(_res)];
14260 }
14261 
parse_VkDeviceQueueGlobalPriorityCreateInfoEXT(const char * s,Json::Value & obj,VkDeviceQueueGlobalPriorityCreateInfoEXT & o)14262 static void parse_VkDeviceQueueGlobalPriorityCreateInfoEXT(const char *s, Json::Value &obj,
14263                                                            VkDeviceQueueGlobalPriorityCreateInfoEXT &o)
14264 {
14265 
14266     parse_VkStructureType("sType", obj["sType"], (o.sType));
14267 
14268     o.pNext = (VkDeviceQueueGlobalPriorityCreateInfoEXT *)parsePNextChain(obj);
14269 
14270     parse_VkQueueGlobalPriorityEXT("globalPriority", obj["globalPriority"], (o.globalPriority));
14271 }
14272 
parse_VkImportMemoryHostPointerInfoEXT(const char * s,Json::Value & obj,VkImportMemoryHostPointerInfoEXT & o)14273 static void parse_VkImportMemoryHostPointerInfoEXT(const char *s, Json::Value &obj, VkImportMemoryHostPointerInfoEXT &o)
14274 {
14275 
14276     parse_VkStructureType("sType", obj["sType"], (o.sType));
14277 
14278     o.pNext = (VkImportMemoryHostPointerInfoEXT *)parsePNextChain(obj);
14279 
14280     parse_VkExternalMemoryHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
14281 }
14282 
parse_VkMemoryHostPointerPropertiesEXT(const char * s,Json::Value & obj,VkMemoryHostPointerPropertiesEXT & o)14283 static void parse_VkMemoryHostPointerPropertiesEXT(const char *s, Json::Value &obj, VkMemoryHostPointerPropertiesEXT &o)
14284 {
14285 
14286     parse_VkStructureType("sType", obj["sType"], (o.sType));
14287 
14288     o.pNext = (VkMemoryHostPointerPropertiesEXT *)parsePNextChain(obj);
14289 
14290     parse_uint32_t("memoryTypeBits", obj["memoryTypeBits"], (o.memoryTypeBits));
14291 }
14292 
parse_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceExternalMemoryHostPropertiesEXT & o)14293 static void parse_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(const char *s, Json::Value &obj,
14294                                                                   VkPhysicalDeviceExternalMemoryHostPropertiesEXT &o)
14295 {
14296 
14297     parse_VkStructureType("sType", obj["sType"], (o.sType));
14298 
14299     o.pNext = (VkPhysicalDeviceExternalMemoryHostPropertiesEXT *)parsePNextChain(obj);
14300 
14301     parse_VkDeviceSize("minImportedHostPointerAlignment", obj["minImportedHostPointerAlignment"],
14302                        (o.minImportedHostPointerAlignment));
14303 }
14304 
14305 static std::map<std::string, int> VkTimeDomainEXT_map = {
14306     std::make_pair("VK_TIME_DOMAIN_DEVICE_EXT", 0),
14307     std::make_pair("VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT", 1),
14308     std::make_pair("VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT", 2),
14309     std::make_pair("VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT", 3),
14310 };
parse_VkTimeDomainEXT(const char * s,Json::Value & obj,VkTimeDomainEXT & o)14311 static void parse_VkTimeDomainEXT(const char *s, Json::Value &obj, VkTimeDomainEXT &o)
14312 {
14313     std::string _res = obj.asString();
14314     o                = (VkTimeDomainEXT)VkTimeDomainEXT_map[std::string(_res)];
14315 }
14316 
parse_VkCalibratedTimestampInfoEXT(const char * s,Json::Value & obj,VkCalibratedTimestampInfoEXT & o)14317 static void parse_VkCalibratedTimestampInfoEXT(const char *s, Json::Value &obj, VkCalibratedTimestampInfoEXT &o)
14318 {
14319 
14320     parse_VkStructureType("sType", obj["sType"], (o.sType));
14321 
14322     o.pNext = (VkCalibratedTimestampInfoEXT *)parsePNextChain(obj);
14323 
14324     parse_VkTimeDomainEXT("timeDomain", obj["timeDomain"], (o.timeDomain));
14325 }
14326 
parse_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT & o)14327 static void parse_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
14328     const char *s, Json::Value &obj, VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT &o)
14329 {
14330 
14331     parse_VkStructureType("sType", obj["sType"], (o.sType));
14332 
14333     o.pNext = (VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *)parsePNextChain(obj);
14334 
14335     parse_uint32_t("maxVertexAttribDivisor", obj["maxVertexAttribDivisor"], (o.maxVertexAttribDivisor));
14336 }
14337 
parse_VkVertexInputBindingDivisorDescriptionEXT(const char * s,Json::Value & obj,VkVertexInputBindingDivisorDescriptionEXT & o)14338 static void parse_VkVertexInputBindingDivisorDescriptionEXT(const char *s, Json::Value &obj,
14339                                                             VkVertexInputBindingDivisorDescriptionEXT &o)
14340 {
14341 
14342     parse_uint32_t("binding", obj["binding"], (o.binding));
14343 
14344     parse_uint32_t("divisor", obj["divisor"], (o.divisor));
14345 }
14346 
parse_VkPipelineVertexInputDivisorStateCreateInfoEXT(const char * s,Json::Value & obj,VkPipelineVertexInputDivisorStateCreateInfoEXT & o)14347 static void parse_VkPipelineVertexInputDivisorStateCreateInfoEXT(const char *s, Json::Value &obj,
14348                                                                  VkPipelineVertexInputDivisorStateCreateInfoEXT &o)
14349 {
14350 
14351     parse_VkStructureType("sType", obj["sType"], (o.sType));
14352 
14353     o.pNext = (VkPipelineVertexInputDivisorStateCreateInfoEXT *)parsePNextChain(obj);
14354 
14355     parse_uint32_t("vertexBindingDivisorCount", obj["vertexBindingDivisorCount"], (o.vertexBindingDivisorCount));
14356 
14357     (o.pVertexBindingDivisors) = (VkVertexInputBindingDivisorDescriptionEXT *)s_globalMem.allocate(
14358         (o.vertexBindingDivisorCount), sizeof(VkVertexInputBindingDivisorDescriptionEXT));
14359     Json::Value &obj_pVertexBindingDivisors = obj["pVertexBindingDivisors"];
14360     if (obj_pVertexBindingDivisors.size() == 0)
14361         (o.pVertexBindingDivisors) = nullptr;
14362     else
14363     {
14364         for (unsigned int i = 0; i < (o.vertexBindingDivisorCount); i++)
14365         {
14366             parse_VkVertexInputBindingDivisorDescriptionEXT(
14367                 "pVertexBindingDivisors", obj_pVertexBindingDivisors[i],
14368                 const_cast<VkVertexInputBindingDivisorDescriptionEXT &>((o.pVertexBindingDivisors[i])));
14369         }
14370     }
14371 }
14372 
parse_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT & o)14373 static void parse_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
14374     const char *s, Json::Value &obj, VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT &o)
14375 {
14376 
14377     parse_VkStructureType("sType", obj["sType"], (o.sType));
14378 
14379     o.pNext = (VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *)parsePNextChain(obj);
14380 
14381     parse_VkBool32("vertexAttributeInstanceRateDivisor", obj["vertexAttributeInstanceRateDivisor"],
14382                    (o.vertexAttributeInstanceRateDivisor));
14383 
14384     parse_VkBool32("vertexAttributeInstanceRateZeroDivisor", obj["vertexAttributeInstanceRateZeroDivisor"],
14385                    (o.vertexAttributeInstanceRateZeroDivisor));
14386 }
14387 
parse_VkPhysicalDevicePCIBusInfoPropertiesEXT(const char * s,Json::Value & obj,VkPhysicalDevicePCIBusInfoPropertiesEXT & o)14388 static void parse_VkPhysicalDevicePCIBusInfoPropertiesEXT(const char *s, Json::Value &obj,
14389                                                           VkPhysicalDevicePCIBusInfoPropertiesEXT &o)
14390 {
14391 
14392     parse_VkStructureType("sType", obj["sType"], (o.sType));
14393 
14394     o.pNext = (VkPhysicalDevicePCIBusInfoPropertiesEXT *)parsePNextChain(obj);
14395 
14396     parse_uint32_t("pciDomain", obj["pciDomain"], (o.pciDomain));
14397 
14398     parse_uint32_t("pciBus", obj["pciBus"], (o.pciBus));
14399 
14400     parse_uint32_t("pciDevice", obj["pciDevice"], (o.pciDevice));
14401 
14402     parse_uint32_t("pciFunction", obj["pciFunction"], (o.pciFunction));
14403 }
14404 
parse_VkPhysicalDeviceSubgroupSizeControlFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceSubgroupSizeControlFeaturesEXT & o)14405 static void parse_VkPhysicalDeviceSubgroupSizeControlFeaturesEXT(const char *s, Json::Value &obj,
14406                                                                  VkPhysicalDeviceSubgroupSizeControlFeaturesEXT &o)
14407 {
14408 
14409     parse_VkStructureType("sType", obj["sType"], (o.sType));
14410 
14411     o.pNext = (VkPhysicalDeviceSubgroupSizeControlFeaturesEXT *)parsePNextChain(obj);
14412 
14413     parse_VkBool32("subgroupSizeControl", obj["subgroupSizeControl"], (o.subgroupSizeControl));
14414 
14415     parse_VkBool32("computeFullSubgroups", obj["computeFullSubgroups"], (o.computeFullSubgroups));
14416 }
14417 
parse_VkPhysicalDeviceSubgroupSizeControlPropertiesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceSubgroupSizeControlPropertiesEXT & o)14418 static void parse_VkPhysicalDeviceSubgroupSizeControlPropertiesEXT(const char *s, Json::Value &obj,
14419                                                                    VkPhysicalDeviceSubgroupSizeControlPropertiesEXT &o)
14420 {
14421 
14422     parse_VkStructureType("sType", obj["sType"], (o.sType));
14423 
14424     o.pNext = (VkPhysicalDeviceSubgroupSizeControlPropertiesEXT *)parsePNextChain(obj);
14425 
14426     parse_uint32_t("minSubgroupSize", obj["minSubgroupSize"], (o.minSubgroupSize));
14427 
14428     parse_uint32_t("maxSubgroupSize", obj["maxSubgroupSize"], (o.maxSubgroupSize));
14429 
14430     parse_uint32_t("maxComputeWorkgroupSubgroups", obj["maxComputeWorkgroupSubgroups"],
14431                    (o.maxComputeWorkgroupSubgroups));
14432 
14433     parse_VkShaderStageFlags("requiredSubgroupSizeStages", obj["requiredSubgroupSizeStages"],
14434                              (o.requiredSubgroupSizeStages));
14435 }
14436 
parse_VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(const char * s,Json::Value & obj,VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT & o)14437 static void parse_VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(
14438     const char *s, Json::Value &obj, VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT &o)
14439 {
14440 
14441     parse_VkStructureType("sType", obj["sType"], (o.sType));
14442 
14443     o.pNext = (VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT *)parsePNextChain(obj);
14444 
14445     parse_uint32_t("requiredSubgroupSize", obj["requiredSubgroupSize"], (o.requiredSubgroupSize));
14446 }
14447 
parse_VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT & o)14448 static void parse_VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(
14449     const char *s, Json::Value &obj, VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT &o)
14450 {
14451 
14452     parse_VkStructureType("sType", obj["sType"], (o.sType));
14453 
14454     o.pNext = (VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *)parsePNextChain(obj);
14455 
14456     parse_VkBool32("shaderImageInt64Atomics", obj["shaderImageInt64Atomics"], (o.shaderImageInt64Atomics));
14457 
14458     parse_VkBool32("sparseImageInt64Atomics", obj["sparseImageInt64Atomics"], (o.sparseImageInt64Atomics));
14459 }
14460 
parse_VkPhysicalDeviceMemoryBudgetPropertiesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceMemoryBudgetPropertiesEXT & o)14461 static void parse_VkPhysicalDeviceMemoryBudgetPropertiesEXT(const char *s, Json::Value &obj,
14462                                                             VkPhysicalDeviceMemoryBudgetPropertiesEXT &o)
14463 {
14464 
14465     parse_VkStructureType("sType", obj["sType"], (o.sType));
14466 
14467     o.pNext = (VkPhysicalDeviceMemoryBudgetPropertiesEXT *)parsePNextChain(obj);
14468 
14469     Json::Value &obj_heapBudget_arr = obj["heapBudget"];
14470     for (unsigned int i = 0; i < obj_heapBudget_arr.size(); i++)
14471     {
14472         parse_VkDeviceSize("heapBudget", obj_heapBudget_arr[i], const_cast<VkDeviceSize &>((o.heapBudget[i])));
14473     }
14474 
14475     Json::Value &obj_heapUsage_arr = obj["heapUsage"];
14476     for (unsigned int i = 0; i < obj_heapUsage_arr.size(); i++)
14477     {
14478         parse_VkDeviceSize("heapUsage", obj_heapUsage_arr[i], const_cast<VkDeviceSize &>((o.heapUsage[i])));
14479     }
14480 }
14481 
14482 static std::map<std::string, int> VkValidationFeatureEnableEXT_map = {
14483     std::make_pair("VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT", 0),
14484     std::make_pair("VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT", 1),
14485     std::make_pair("VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT", 2),
14486     std::make_pair("VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT", 3),
14487     std::make_pair("VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT", 4),
14488 };
parse_VkValidationFeatureEnableEXT(const char * s,Json::Value & obj,VkValidationFeatureEnableEXT & o)14489 static void parse_VkValidationFeatureEnableEXT(const char *s, Json::Value &obj, VkValidationFeatureEnableEXT &o)
14490 {
14491     std::string _res = obj.asString();
14492     o                = (VkValidationFeatureEnableEXT)VkValidationFeatureEnableEXT_map[std::string(_res)];
14493 }
14494 
14495 static std::map<std::string, int> VkValidationFeatureDisableEXT_map = {
14496     std::make_pair("VK_VALIDATION_FEATURE_DISABLE_ALL_EXT", 0),
14497     std::make_pair("VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT", 1),
14498     std::make_pair("VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT", 2),
14499     std::make_pair("VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT", 3),
14500     std::make_pair("VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT", 4),
14501     std::make_pair("VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT", 5),
14502     std::make_pair("VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT", 6),
14503     std::make_pair("VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT", 7),
14504 };
parse_VkValidationFeatureDisableEXT(const char * s,Json::Value & obj,VkValidationFeatureDisableEXT & o)14505 static void parse_VkValidationFeatureDisableEXT(const char *s, Json::Value &obj, VkValidationFeatureDisableEXT &o)
14506 {
14507     std::string _res = obj.asString();
14508     o                = (VkValidationFeatureDisableEXT)VkValidationFeatureDisableEXT_map[std::string(_res)];
14509 }
14510 
parse_VkValidationFeaturesEXT(const char * s,Json::Value & obj,VkValidationFeaturesEXT & o)14511 static void parse_VkValidationFeaturesEXT(const char *s, Json::Value &obj, VkValidationFeaturesEXT &o)
14512 {
14513 
14514     parse_VkStructureType("sType", obj["sType"], (o.sType));
14515 
14516     o.pNext = (VkValidationFeaturesEXT *)parsePNextChain(obj);
14517 
14518     parse_uint32_t("enabledValidationFeatureCount", obj["enabledValidationFeatureCount"],
14519                    (o.enabledValidationFeatureCount));
14520 
14521     (o.pEnabledValidationFeatures) = (VkValidationFeatureEnableEXT *)s_globalMem.allocate(
14522         (o.enabledValidationFeatureCount), sizeof(VkValidationFeatureEnableEXT));
14523     Json::Value &obj_pEnabledValidationFeatures_arr = obj["pEnabledValidationFeatures"];
14524     for (unsigned int i = 0; i < obj_pEnabledValidationFeatures_arr.size(); i++)
14525     {
14526         parse_VkValidationFeatureEnableEXT(
14527             "pEnabledValidationFeatures", obj_pEnabledValidationFeatures_arr[i],
14528             const_cast<VkValidationFeatureEnableEXT &>((o.pEnabledValidationFeatures[i])));
14529     }
14530 
14531     parse_uint32_t("disabledValidationFeatureCount", obj["disabledValidationFeatureCount"],
14532                    (o.disabledValidationFeatureCount));
14533 
14534     (o.pDisabledValidationFeatures) = (VkValidationFeatureDisableEXT *)s_globalMem.allocate(
14535         (o.disabledValidationFeatureCount), sizeof(VkValidationFeatureDisableEXT));
14536     Json::Value &obj_pDisabledValidationFeatures_arr = obj["pDisabledValidationFeatures"];
14537     for (unsigned int i = 0; i < obj_pDisabledValidationFeatures_arr.size(); i++)
14538     {
14539         parse_VkValidationFeatureDisableEXT(
14540             "pDisabledValidationFeatures", obj_pDisabledValidationFeatures_arr[i],
14541             const_cast<VkValidationFeatureDisableEXT &>((o.pDisabledValidationFeatures[i])));
14542     }
14543 }
14544 
parse_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT & o)14545 static void parse_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(
14546     const char *s, Json::Value &obj, VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT &o)
14547 {
14548 
14549     parse_VkStructureType("sType", obj["sType"], (o.sType));
14550 
14551     o.pNext = (VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *)parsePNextChain(obj);
14552 
14553     parse_VkBool32("fragmentShaderSampleInterlock", obj["fragmentShaderSampleInterlock"],
14554                    (o.fragmentShaderSampleInterlock));
14555 
14556     parse_VkBool32("fragmentShaderPixelInterlock", obj["fragmentShaderPixelInterlock"],
14557                    (o.fragmentShaderPixelInterlock));
14558 
14559     parse_VkBool32("fragmentShaderShadingRateInterlock", obj["fragmentShaderShadingRateInterlock"],
14560                    (o.fragmentShaderShadingRateInterlock));
14561 }
14562 
parse_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceYcbcrImageArraysFeaturesEXT & o)14563 static void parse_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT(const char *s, Json::Value &obj,
14564                                                               VkPhysicalDeviceYcbcrImageArraysFeaturesEXT &o)
14565 {
14566 
14567     parse_VkStructureType("sType", obj["sType"], (o.sType));
14568 
14569     o.pNext = (VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *)parsePNextChain(obj);
14570 
14571     parse_VkBool32("ycbcrImageArrays", obj["ycbcrImageArrays"], (o.ycbcrImageArrays));
14572 }
14573 
parse_VkHeadlessSurfaceCreateFlagsEXT(const char * s,Json::Value & obj,VkHeadlessSurfaceCreateFlagsEXT & o)14574 static void parse_VkHeadlessSurfaceCreateFlagsEXT(const char *s, Json::Value &obj, VkHeadlessSurfaceCreateFlagsEXT &o)
14575 {
14576     if (obj.isString())
14577     {
14578         std::string _res = obj.asString();
14579         sscanf(_res.c_str(), "%u", &o);
14580     }
14581     else
14582     {
14583         o = obj.asUInt();
14584     }
14585 }
14586 
parse_VkHeadlessSurfaceCreateInfoEXT(const char * s,Json::Value & obj,VkHeadlessSurfaceCreateInfoEXT & o)14587 static void parse_VkHeadlessSurfaceCreateInfoEXT(const char *s, Json::Value &obj, VkHeadlessSurfaceCreateInfoEXT &o)
14588 {
14589 
14590     parse_VkStructureType("sType", obj["sType"], (o.sType));
14591 
14592     o.pNext = (VkHeadlessSurfaceCreateInfoEXT *)parsePNextChain(obj);
14593 
14594     parse_VkHeadlessSurfaceCreateFlagsEXT("flags", obj["flags"], (o.flags));
14595 }
14596 
14597 static std::map<std::string, int> VkLineRasterizationModeEXT_map = {
14598     std::make_pair("VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT", 0),
14599     std::make_pair("VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT", 1),
14600     std::make_pair("VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT", 2),
14601     std::make_pair("VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT", 3),
14602 };
parse_VkLineRasterizationModeEXT(const char * s,Json::Value & obj,VkLineRasterizationModeEXT & o)14603 static void parse_VkLineRasterizationModeEXT(const char *s, Json::Value &obj, VkLineRasterizationModeEXT &o)
14604 {
14605     std::string _res = obj.asString();
14606     o                = (VkLineRasterizationModeEXT)VkLineRasterizationModeEXT_map[std::string(_res)];
14607 }
14608 
parse_VkPhysicalDeviceLineRasterizationFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceLineRasterizationFeaturesEXT & o)14609 static void parse_VkPhysicalDeviceLineRasterizationFeaturesEXT(const char *s, Json::Value &obj,
14610                                                                VkPhysicalDeviceLineRasterizationFeaturesEXT &o)
14611 {
14612 
14613     parse_VkStructureType("sType", obj["sType"], (o.sType));
14614 
14615     o.pNext = (VkPhysicalDeviceLineRasterizationFeaturesEXT *)parsePNextChain(obj);
14616 
14617     parse_VkBool32("rectangularLines", obj["rectangularLines"], (o.rectangularLines));
14618 
14619     parse_VkBool32("bresenhamLines", obj["bresenhamLines"], (o.bresenhamLines));
14620 
14621     parse_VkBool32("smoothLines", obj["smoothLines"], (o.smoothLines));
14622 
14623     parse_VkBool32("stippledRectangularLines", obj["stippledRectangularLines"], (o.stippledRectangularLines));
14624 
14625     parse_VkBool32("stippledBresenhamLines", obj["stippledBresenhamLines"], (o.stippledBresenhamLines));
14626 
14627     parse_VkBool32("stippledSmoothLines", obj["stippledSmoothLines"], (o.stippledSmoothLines));
14628 }
14629 
parse_VkPhysicalDeviceLineRasterizationPropertiesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceLineRasterizationPropertiesEXT & o)14630 static void parse_VkPhysicalDeviceLineRasterizationPropertiesEXT(const char *s, Json::Value &obj,
14631                                                                  VkPhysicalDeviceLineRasterizationPropertiesEXT &o)
14632 {
14633 
14634     parse_VkStructureType("sType", obj["sType"], (o.sType));
14635 
14636     o.pNext = (VkPhysicalDeviceLineRasterizationPropertiesEXT *)parsePNextChain(obj);
14637 
14638     parse_uint32_t("lineSubPixelPrecisionBits", obj["lineSubPixelPrecisionBits"], (o.lineSubPixelPrecisionBits));
14639 }
14640 
parse_VkPipelineRasterizationLineStateCreateInfoEXT(const char * s,Json::Value & obj,VkPipelineRasterizationLineStateCreateInfoEXT & o)14641 static void parse_VkPipelineRasterizationLineStateCreateInfoEXT(const char *s, Json::Value &obj,
14642                                                                 VkPipelineRasterizationLineStateCreateInfoEXT &o)
14643 {
14644 
14645     parse_VkStructureType("sType", obj["sType"], (o.sType));
14646 
14647     o.pNext = (VkPipelineRasterizationLineStateCreateInfoEXT *)parsePNextChain(obj);
14648 
14649     parse_VkLineRasterizationModeEXT("lineRasterizationMode", obj["lineRasterizationMode"], (o.lineRasterizationMode));
14650 
14651     parse_VkBool32("stippledLineEnable", obj["stippledLineEnable"], (o.stippledLineEnable));
14652 
14653     parse_uint32_t("lineStippleFactor", obj["lineStippleFactor"], (o.lineStippleFactor));
14654 
14655     parse_uint16_t("lineStipplePattern", obj["lineStipplePattern"], (o.lineStipplePattern));
14656 }
14657 
parse_VkPhysicalDeviceShaderAtomicFloatFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceShaderAtomicFloatFeaturesEXT & o)14658 static void parse_VkPhysicalDeviceShaderAtomicFloatFeaturesEXT(const char *s, Json::Value &obj,
14659                                                                VkPhysicalDeviceShaderAtomicFloatFeaturesEXT &o)
14660 {
14661 
14662     parse_VkStructureType("sType", obj["sType"], (o.sType));
14663 
14664     o.pNext = (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *)parsePNextChain(obj);
14665 
14666     parse_VkBool32("shaderBufferFloat32Atomics", obj["shaderBufferFloat32Atomics"], (o.shaderBufferFloat32Atomics));
14667 
14668     parse_VkBool32("shaderBufferFloat32AtomicAdd", obj["shaderBufferFloat32AtomicAdd"],
14669                    (o.shaderBufferFloat32AtomicAdd));
14670 
14671     parse_VkBool32("shaderBufferFloat64Atomics", obj["shaderBufferFloat64Atomics"], (o.shaderBufferFloat64Atomics));
14672 
14673     parse_VkBool32("shaderBufferFloat64AtomicAdd", obj["shaderBufferFloat64AtomicAdd"],
14674                    (o.shaderBufferFloat64AtomicAdd));
14675 
14676     parse_VkBool32("shaderSharedFloat32Atomics", obj["shaderSharedFloat32Atomics"], (o.shaderSharedFloat32Atomics));
14677 
14678     parse_VkBool32("shaderSharedFloat32AtomicAdd", obj["shaderSharedFloat32AtomicAdd"],
14679                    (o.shaderSharedFloat32AtomicAdd));
14680 
14681     parse_VkBool32("shaderSharedFloat64Atomics", obj["shaderSharedFloat64Atomics"], (o.shaderSharedFloat64Atomics));
14682 
14683     parse_VkBool32("shaderSharedFloat64AtomicAdd", obj["shaderSharedFloat64AtomicAdd"],
14684                    (o.shaderSharedFloat64AtomicAdd));
14685 
14686     parse_VkBool32("shaderImageFloat32Atomics", obj["shaderImageFloat32Atomics"], (o.shaderImageFloat32Atomics));
14687 
14688     parse_VkBool32("shaderImageFloat32AtomicAdd", obj["shaderImageFloat32AtomicAdd"], (o.shaderImageFloat32AtomicAdd));
14689 
14690     parse_VkBool32("sparseImageFloat32Atomics", obj["sparseImageFloat32Atomics"], (o.sparseImageFloat32Atomics));
14691 
14692     parse_VkBool32("sparseImageFloat32AtomicAdd", obj["sparseImageFloat32AtomicAdd"], (o.sparseImageFloat32AtomicAdd));
14693 }
14694 
parse_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceIndexTypeUint8FeaturesEXT & o)14695 static void parse_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(const char *s, Json::Value &obj,
14696                                                             VkPhysicalDeviceIndexTypeUint8FeaturesEXT &o)
14697 {
14698 
14699     parse_VkStructureType("sType", obj["sType"], (o.sType));
14700 
14701     o.pNext = (VkPhysicalDeviceIndexTypeUint8FeaturesEXT *)parsePNextChain(obj);
14702 
14703     parse_VkBool32("indexTypeUint8", obj["indexTypeUint8"], (o.indexTypeUint8));
14704 }
14705 
parse_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceExtendedDynamicStateFeaturesEXT & o)14706 static void parse_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(const char *s, Json::Value &obj,
14707                                                                   VkPhysicalDeviceExtendedDynamicStateFeaturesEXT &o)
14708 {
14709 
14710     parse_VkStructureType("sType", obj["sType"], (o.sType));
14711 
14712     o.pNext = (VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *)parsePNextChain(obj);
14713 
14714     parse_VkBool32("extendedDynamicState", obj["extendedDynamicState"], (o.extendedDynamicState));
14715 }
14716 
parse_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT & o)14717 static void parse_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(
14718     const char *s, Json::Value &obj, VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT &o)
14719 {
14720 
14721     parse_VkStructureType("sType", obj["sType"], (o.sType));
14722 
14723     o.pNext = (VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT *)parsePNextChain(obj);
14724 
14725     parse_VkBool32("shaderDemoteToHelperInvocation", obj["shaderDemoteToHelperInvocation"],
14726                    (o.shaderDemoteToHelperInvocation));
14727 }
14728 
parse_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT & o)14729 static void parse_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(const char *s, Json::Value &obj,
14730                                                                   VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT &o)
14731 {
14732 
14733     parse_VkStructureType("sType", obj["sType"], (o.sType));
14734 
14735     o.pNext = (VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *)parsePNextChain(obj);
14736 
14737     parse_VkBool32("texelBufferAlignment", obj["texelBufferAlignment"], (o.texelBufferAlignment));
14738 }
14739 
parse_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT & o)14740 static void parse_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT(
14741     const char *s, Json::Value &obj, VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT &o)
14742 {
14743 
14744     parse_VkStructureType("sType", obj["sType"], (o.sType));
14745 
14746     o.pNext = (VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT *)parsePNextChain(obj);
14747 
14748     parse_VkDeviceSize("storageTexelBufferOffsetAlignmentBytes", obj["storageTexelBufferOffsetAlignmentBytes"],
14749                        (o.storageTexelBufferOffsetAlignmentBytes));
14750 
14751     parse_VkBool32("storageTexelBufferOffsetSingleTexelAlignment", obj["storageTexelBufferOffsetSingleTexelAlignment"],
14752                    (o.storageTexelBufferOffsetSingleTexelAlignment));
14753 
14754     parse_VkDeviceSize("uniformTexelBufferOffsetAlignmentBytes", obj["uniformTexelBufferOffsetAlignmentBytes"],
14755                        (o.uniformTexelBufferOffsetAlignmentBytes));
14756 
14757     parse_VkBool32("uniformTexelBufferOffsetSingleTexelAlignment", obj["uniformTexelBufferOffsetSingleTexelAlignment"],
14758                    (o.uniformTexelBufferOffsetSingleTexelAlignment));
14759 }
14760 
parse_VkPhysicalDeviceRobustness2FeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceRobustness2FeaturesEXT & o)14761 static void parse_VkPhysicalDeviceRobustness2FeaturesEXT(const char *s, Json::Value &obj,
14762                                                          VkPhysicalDeviceRobustness2FeaturesEXT &o)
14763 {
14764 
14765     parse_VkStructureType("sType", obj["sType"], (o.sType));
14766 
14767     o.pNext = (VkPhysicalDeviceRobustness2FeaturesEXT *)parsePNextChain(obj);
14768 
14769     parse_VkBool32("robustBufferAccess2", obj["robustBufferAccess2"], (o.robustBufferAccess2));
14770 
14771     parse_VkBool32("robustImageAccess2", obj["robustImageAccess2"], (o.robustImageAccess2));
14772 
14773     parse_VkBool32("nullDescriptor", obj["nullDescriptor"], (o.nullDescriptor));
14774 }
14775 
parse_VkPhysicalDeviceRobustness2PropertiesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceRobustness2PropertiesEXT & o)14776 static void parse_VkPhysicalDeviceRobustness2PropertiesEXT(const char *s, Json::Value &obj,
14777                                                            VkPhysicalDeviceRobustness2PropertiesEXT &o)
14778 {
14779 
14780     parse_VkStructureType("sType", obj["sType"], (o.sType));
14781 
14782     o.pNext = (VkPhysicalDeviceRobustness2PropertiesEXT *)parsePNextChain(obj);
14783 
14784     parse_VkDeviceSize("robustStorageBufferAccessSizeAlignment", obj["robustStorageBufferAccessSizeAlignment"],
14785                        (o.robustStorageBufferAccessSizeAlignment));
14786 
14787     parse_VkDeviceSize("robustUniformBufferAccessSizeAlignment", obj["robustUniformBufferAccessSizeAlignment"],
14788                        (o.robustUniformBufferAccessSizeAlignment));
14789 }
14790 
parse_VkSamplerCustomBorderColorCreateInfoEXT(const char * s,Json::Value & obj,VkSamplerCustomBorderColorCreateInfoEXT & o)14791 static void parse_VkSamplerCustomBorderColorCreateInfoEXT(const char *s, Json::Value &obj,
14792                                                           VkSamplerCustomBorderColorCreateInfoEXT &o)
14793 {
14794 
14795     parse_VkStructureType("sType", obj["sType"], (o.sType));
14796 
14797     o.pNext = (VkSamplerCustomBorderColorCreateInfoEXT *)parsePNextChain(obj);
14798 
14799     parse_VkClearColorValue("customBorderColor", obj["customBorderColor"], (o.customBorderColor));
14800 
14801     parse_VkFormat("format", obj["format"], (o.format));
14802 }
14803 
parse_VkPhysicalDeviceCustomBorderColorPropertiesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceCustomBorderColorPropertiesEXT & o)14804 static void parse_VkPhysicalDeviceCustomBorderColorPropertiesEXT(const char *s, Json::Value &obj,
14805                                                                  VkPhysicalDeviceCustomBorderColorPropertiesEXT &o)
14806 {
14807 
14808     parse_VkStructureType("sType", obj["sType"], (o.sType));
14809 
14810     o.pNext = (VkPhysicalDeviceCustomBorderColorPropertiesEXT *)parsePNextChain(obj);
14811 
14812     parse_uint32_t("maxCustomBorderColorSamplers", obj["maxCustomBorderColorSamplers"],
14813                    (o.maxCustomBorderColorSamplers));
14814 }
14815 
parse_VkPhysicalDeviceCustomBorderColorFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceCustomBorderColorFeaturesEXT & o)14816 static void parse_VkPhysicalDeviceCustomBorderColorFeaturesEXT(const char *s, Json::Value &obj,
14817                                                                VkPhysicalDeviceCustomBorderColorFeaturesEXT &o)
14818 {
14819 
14820     parse_VkStructureType("sType", obj["sType"], (o.sType));
14821 
14822     o.pNext = (VkPhysicalDeviceCustomBorderColorFeaturesEXT *)parsePNextChain(obj);
14823 
14824     parse_VkBool32("customBorderColors", obj["customBorderColors"], (o.customBorderColors));
14825 
14826     parse_VkBool32("customBorderColorWithoutFormat", obj["customBorderColorWithoutFormat"],
14827                    (o.customBorderColorWithoutFormat));
14828 }
14829 
parse_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & o)14830 static void parse_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(const char *s, Json::Value &obj,
14831                                                                    VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &o)
14832 {
14833 
14834     parse_VkStructureType("sType", obj["sType"], (o.sType));
14835 
14836     o.pNext = (VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *)parsePNextChain(obj);
14837 
14838     parse_VkBool32("ycbcr2plane444Formats", obj["ycbcr2plane444Formats"], (o.ycbcr2plane444Formats));
14839 }
14840 
parse_VkPhysicalDeviceImageRobustnessFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceImageRobustnessFeaturesEXT & o)14841 static void parse_VkPhysicalDeviceImageRobustnessFeaturesEXT(const char *s, Json::Value &obj,
14842                                                              VkPhysicalDeviceImageRobustnessFeaturesEXT &o)
14843 {
14844 
14845     parse_VkStructureType("sType", obj["sType"], (o.sType));
14846 
14847     o.pNext = (VkPhysicalDeviceImageRobustnessFeaturesEXT *)parsePNextChain(obj);
14848 
14849     parse_VkBool32("robustImageAccess", obj["robustImageAccess"], (o.robustImageAccess));
14850 }
14851 
parse_VkPhysicalDevice4444FormatsFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDevice4444FormatsFeaturesEXT & o)14852 static void parse_VkPhysicalDevice4444FormatsFeaturesEXT(const char *s, Json::Value &obj,
14853                                                          VkPhysicalDevice4444FormatsFeaturesEXT &o)
14854 {
14855 
14856     parse_VkStructureType("sType", obj["sType"], (o.sType));
14857 
14858     o.pNext = (VkPhysicalDevice4444FormatsFeaturesEXT *)parsePNextChain(obj);
14859 
14860     parse_VkBool32("formatA4R4G4B4", obj["formatA4R4G4B4"], (o.formatA4R4G4B4));
14861 
14862     parse_VkBool32("formatA4B4G4R4", obj["formatA4B4G4R4"], (o.formatA4B4G4R4));
14863 }
14864 
parse_VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT & o)14865 static void parse_VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(
14866     const char *s, Json::Value &obj, VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT &o)
14867 {
14868 
14869     parse_VkStructureType("sType", obj["sType"], (o.sType));
14870 
14871     o.pNext = (VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *)parsePNextChain(obj);
14872 
14873     parse_VkBool32("vertexInputDynamicState", obj["vertexInputDynamicState"], (o.vertexInputDynamicState));
14874 }
14875 
parse_VkVertexInputBindingDescription2EXT(const char * s,Json::Value & obj,VkVertexInputBindingDescription2EXT & o)14876 static void parse_VkVertexInputBindingDescription2EXT(const char *s, Json::Value &obj,
14877                                                       VkVertexInputBindingDescription2EXT &o)
14878 {
14879 
14880     parse_VkStructureType("sType", obj["sType"], (o.sType));
14881 
14882     o.pNext = (VkVertexInputBindingDescription2EXT *)parsePNextChain(obj);
14883 
14884     parse_uint32_t("binding", obj["binding"], (o.binding));
14885 
14886     parse_uint32_t("stride", obj["stride"], (o.stride));
14887 
14888     parse_VkVertexInputRate("inputRate", obj["inputRate"], (o.inputRate));
14889 
14890     parse_uint32_t("divisor", obj["divisor"], (o.divisor));
14891 }
14892 
parse_VkVertexInputAttributeDescription2EXT(const char * s,Json::Value & obj,VkVertexInputAttributeDescription2EXT & o)14893 static void parse_VkVertexInputAttributeDescription2EXT(const char *s, Json::Value &obj,
14894                                                         VkVertexInputAttributeDescription2EXT &o)
14895 {
14896 
14897     parse_VkStructureType("sType", obj["sType"], (o.sType));
14898 
14899     o.pNext = (VkVertexInputAttributeDescription2EXT *)parsePNextChain(obj);
14900 
14901     parse_uint32_t("location", obj["location"], (o.location));
14902 
14903     parse_uint32_t("binding", obj["binding"], (o.binding));
14904 
14905     parse_VkFormat("format", obj["format"], (o.format));
14906 
14907     parse_uint32_t("offset", obj["offset"], (o.offset));
14908 }
14909 
14910 static std::map<std::string, int> VkSciSyncClientTypeNV_map = {
14911     std::make_pair("VK_SCI_SYNC_CLIENT_TYPE_SIGNALER_NV", 0),
14912     std::make_pair("VK_SCI_SYNC_CLIENT_TYPE_WAITER_NV", 1),
14913     std::make_pair("VK_SCI_SYNC_CLIENT_TYPE_SIGNALER_WAITER_NV", 2),
14914 };
parse_VkSciSyncClientTypeNV(const char * s,Json::Value & obj,VkSciSyncClientTypeNV & o)14915 static void parse_VkSciSyncClientTypeNV(const char *s, Json::Value &obj, VkSciSyncClientTypeNV &o)
14916 {
14917     std::string _res = obj.asString();
14918     o                = (VkSciSyncClientTypeNV)VkSciSyncClientTypeNV_map[std::string(_res)];
14919 }
14920 
14921 static std::map<std::string, int> VkSciSyncPrimitiveTypeNV_map = {
14922     std::make_pair("VK_SCI_SYNC_PRIMITIVE_TYPE_FENCE_NV", 0),
14923     std::make_pair("VK_SCI_SYNC_PRIMITIVE_TYPE_SEMAPHORE_NV", 1),
14924 };
parse_VkSciSyncPrimitiveTypeNV(const char * s,Json::Value & obj,VkSciSyncPrimitiveTypeNV & o)14925 static void parse_VkSciSyncPrimitiveTypeNV(const char *s, Json::Value &obj, VkSciSyncPrimitiveTypeNV &o)
14926 {
14927     std::string _res = obj.asString();
14928     o                = (VkSciSyncPrimitiveTypeNV)VkSciSyncPrimitiveTypeNV_map[std::string(_res)];
14929 }
14930 
parse_VkExportFenceSciSyncInfoNV(const char * s,Json::Value & obj,VkExportFenceSciSyncInfoNV & o)14931 static void parse_VkExportFenceSciSyncInfoNV(const char *s, Json::Value &obj, VkExportFenceSciSyncInfoNV &o)
14932 {
14933 
14934     parse_VkStructureType("sType", obj["sType"], (o.sType));
14935 
14936     o.pNext = (VkExportFenceSciSyncInfoNV *)parsePNextChain(obj);
14937 
14938     parse_NvSciSyncAttrList("pAttributes", obj["pAttributes"], (o.pAttributes));
14939 }
14940 
parse_VkImportFenceSciSyncInfoNV(const char * s,Json::Value & obj,VkImportFenceSciSyncInfoNV & o)14941 static void parse_VkImportFenceSciSyncInfoNV(const char *s, Json::Value &obj, VkImportFenceSciSyncInfoNV &o)
14942 {
14943 
14944     parse_VkStructureType("sType", obj["sType"], (o.sType));
14945 
14946     o.pNext = (VkImportFenceSciSyncInfoNV *)parsePNextChain(obj);
14947 
14948     parse_VkExternalFenceHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
14949 }
14950 
parse_VkFenceGetSciSyncInfoNV(const char * s,Json::Value & obj,VkFenceGetSciSyncInfoNV & o)14951 static void parse_VkFenceGetSciSyncInfoNV(const char *s, Json::Value &obj, VkFenceGetSciSyncInfoNV &o)
14952 {
14953 
14954     parse_VkStructureType("sType", obj["sType"], (o.sType));
14955 
14956     o.pNext = (VkFenceGetSciSyncInfoNV *)parsePNextChain(obj);
14957 
14958     parse_VkExternalFenceHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
14959 }
14960 
parse_VkSciSyncAttributesInfoNV(const char * s,Json::Value & obj,VkSciSyncAttributesInfoNV & o)14961 static void parse_VkSciSyncAttributesInfoNV(const char *s, Json::Value &obj, VkSciSyncAttributesInfoNV &o)
14962 {
14963 
14964     parse_VkStructureType("sType", obj["sType"], (o.sType));
14965 
14966     o.pNext = (VkSciSyncAttributesInfoNV *)parsePNextChain(obj);
14967 
14968     parse_VkSciSyncClientTypeNV("clientType", obj["clientType"], (o.clientType));
14969 
14970     parse_VkSciSyncPrimitiveTypeNV("primitiveType", obj["primitiveType"], (o.primitiveType));
14971 }
14972 
parse_VkExportSemaphoreSciSyncInfoNV(const char * s,Json::Value & obj,VkExportSemaphoreSciSyncInfoNV & o)14973 static void parse_VkExportSemaphoreSciSyncInfoNV(const char *s, Json::Value &obj, VkExportSemaphoreSciSyncInfoNV &o)
14974 {
14975 
14976     parse_VkStructureType("sType", obj["sType"], (o.sType));
14977 
14978     o.pNext = (VkExportSemaphoreSciSyncInfoNV *)parsePNextChain(obj);
14979 
14980     parse_NvSciSyncAttrList("pAttributes", obj["pAttributes"], (o.pAttributes));
14981 }
14982 
parse_VkImportSemaphoreSciSyncInfoNV(const char * s,Json::Value & obj,VkImportSemaphoreSciSyncInfoNV & o)14983 static void parse_VkImportSemaphoreSciSyncInfoNV(const char *s, Json::Value &obj, VkImportSemaphoreSciSyncInfoNV &o)
14984 {
14985 
14986     parse_VkStructureType("sType", obj["sType"], (o.sType));
14987 
14988     o.pNext = (VkImportSemaphoreSciSyncInfoNV *)parsePNextChain(obj);
14989 
14990     parse_VkExternalSemaphoreHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
14991 }
14992 
parse_VkSemaphoreGetSciSyncInfoNV(const char * s,Json::Value & obj,VkSemaphoreGetSciSyncInfoNV & o)14993 static void parse_VkSemaphoreGetSciSyncInfoNV(const char *s, Json::Value &obj, VkSemaphoreGetSciSyncInfoNV &o)
14994 {
14995 
14996     parse_VkStructureType("sType", obj["sType"], (o.sType));
14997 
14998     o.pNext = (VkSemaphoreGetSciSyncInfoNV *)parsePNextChain(obj);
14999 
15000     parse_VkExternalSemaphoreHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
15001 }
15002 
parse_VkPhysicalDeviceExternalSciSyncFeaturesNV(const char * s,Json::Value & obj,VkPhysicalDeviceExternalSciSyncFeaturesNV & o)15003 static void parse_VkPhysicalDeviceExternalSciSyncFeaturesNV(const char *s, Json::Value &obj,
15004                                                             VkPhysicalDeviceExternalSciSyncFeaturesNV &o)
15005 {
15006 
15007     parse_VkStructureType("sType", obj["sType"], (o.sType));
15008 
15009     o.pNext = (VkPhysicalDeviceExternalSciSyncFeaturesNV *)parsePNextChain(obj);
15010 
15011     parse_VkBool32("sciSyncFence", obj["sciSyncFence"], (o.sciSyncFence));
15012 
15013     parse_VkBool32("sciSyncSemaphore", obj["sciSyncSemaphore"], (o.sciSyncSemaphore));
15014 
15015     parse_VkBool32("sciSyncImport", obj["sciSyncImport"], (o.sciSyncImport));
15016 
15017     parse_VkBool32("sciSyncExport", obj["sciSyncExport"], (o.sciSyncExport));
15018 }
15019 
parse_VkExportMemorySciBufInfoNV(const char * s,Json::Value & obj,VkExportMemorySciBufInfoNV & o)15020 static void parse_VkExportMemorySciBufInfoNV(const char *s, Json::Value &obj, VkExportMemorySciBufInfoNV &o)
15021 {
15022 
15023     parse_VkStructureType("sType", obj["sType"], (o.sType));
15024 
15025     o.pNext = (VkExportMemorySciBufInfoNV *)parsePNextChain(obj);
15026 
15027     parse_NvSciBufAttrList("pAttributes", obj["pAttributes"], (o.pAttributes));
15028 }
15029 
parse_VkImportMemorySciBufInfoNV(const char * s,Json::Value & obj,VkImportMemorySciBufInfoNV & o)15030 static void parse_VkImportMemorySciBufInfoNV(const char *s, Json::Value &obj, VkImportMemorySciBufInfoNV &o)
15031 {
15032 
15033     parse_VkStructureType("sType", obj["sType"], (o.sType));
15034 
15035     o.pNext = (VkImportMemorySciBufInfoNV *)parsePNextChain(obj);
15036 
15037     parse_VkExternalMemoryHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
15038 
15039     parse_NvSciBufObj("handle", obj["handle"], (o.handle));
15040 }
15041 
parse_VkMemoryGetSciBufInfoNV(const char * s,Json::Value & obj,VkMemoryGetSciBufInfoNV & o)15042 static void parse_VkMemoryGetSciBufInfoNV(const char *s, Json::Value &obj, VkMemoryGetSciBufInfoNV &o)
15043 {
15044 
15045     parse_VkStructureType("sType", obj["sType"], (o.sType));
15046 
15047     o.pNext = (VkMemoryGetSciBufInfoNV *)parsePNextChain(obj);
15048 
15049     parse_VkExternalMemoryHandleTypeFlagBits("handleType", obj["handleType"], (o.handleType));
15050 }
15051 
parse_VkMemorySciBufPropertiesNV(const char * s,Json::Value & obj,VkMemorySciBufPropertiesNV & o)15052 static void parse_VkMemorySciBufPropertiesNV(const char *s, Json::Value &obj, VkMemorySciBufPropertiesNV &o)
15053 {
15054 
15055     parse_VkStructureType("sType", obj["sType"], (o.sType));
15056 
15057     o.pNext = (VkMemorySciBufPropertiesNV *)parsePNextChain(obj);
15058 
15059     parse_uint32_t("memoryTypeBits", obj["memoryTypeBits"], (o.memoryTypeBits));
15060 }
15061 
parse_VkPhysicalDeviceExternalMemorySciBufFeaturesNV(const char * s,Json::Value & obj,VkPhysicalDeviceExternalMemorySciBufFeaturesNV & o)15062 static void parse_VkPhysicalDeviceExternalMemorySciBufFeaturesNV(const char *s, Json::Value &obj,
15063                                                                  VkPhysicalDeviceExternalMemorySciBufFeaturesNV &o)
15064 {
15065 
15066     parse_VkStructureType("sType", obj["sType"], (o.sType));
15067 
15068     o.pNext = (VkPhysicalDeviceExternalMemorySciBufFeaturesNV *)parsePNextChain(obj);
15069 
15070     parse_VkBool32("sciBufImport", obj["sciBufImport"], (o.sciBufImport));
15071 
15072     parse_VkBool32("sciBufExport", obj["sciBufExport"], (o.sciBufExport));
15073 }
15074 
15075 typedef VkPhysicalDeviceExternalMemorySciBufFeaturesNV VkPhysicalDeviceExternalSciBufFeaturesNV;
15076 
parse_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceExtendedDynamicState2FeaturesEXT & o)15077 static void parse_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(const char *s, Json::Value &obj,
15078                                                                    VkPhysicalDeviceExtendedDynamicState2FeaturesEXT &o)
15079 {
15080 
15081     parse_VkStructureType("sType", obj["sType"], (o.sType));
15082 
15083     o.pNext = (VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *)parsePNextChain(obj);
15084 
15085     parse_VkBool32("extendedDynamicState2", obj["extendedDynamicState2"], (o.extendedDynamicState2));
15086 
15087     parse_VkBool32("extendedDynamicState2LogicOp", obj["extendedDynamicState2LogicOp"],
15088                    (o.extendedDynamicState2LogicOp));
15089 
15090     parse_VkBool32("extendedDynamicState2PatchControlPoints", obj["extendedDynamicState2PatchControlPoints"],
15091                    (o.extendedDynamicState2PatchControlPoints));
15092 }
15093 
parse_VkPhysicalDeviceColorWriteEnableFeaturesEXT(const char * s,Json::Value & obj,VkPhysicalDeviceColorWriteEnableFeaturesEXT & o)15094 static void parse_VkPhysicalDeviceColorWriteEnableFeaturesEXT(const char *s, Json::Value &obj,
15095                                                               VkPhysicalDeviceColorWriteEnableFeaturesEXT &o)
15096 {
15097 
15098     parse_VkStructureType("sType", obj["sType"], (o.sType));
15099 
15100     o.pNext = (VkPhysicalDeviceColorWriteEnableFeaturesEXT *)parsePNextChain(obj);
15101 
15102     parse_VkBool32("colorWriteEnable", obj["colorWriteEnable"], (o.colorWriteEnable));
15103 }
15104 
parse_VkPipelineColorWriteCreateInfoEXT(const char * s,Json::Value & obj,VkPipelineColorWriteCreateInfoEXT & o)15105 static void parse_VkPipelineColorWriteCreateInfoEXT(const char *s, Json::Value &obj,
15106                                                     VkPipelineColorWriteCreateInfoEXT &o)
15107 {
15108 
15109     parse_VkStructureType("sType", obj["sType"], (o.sType));
15110 
15111     o.pNext = (VkPipelineColorWriteCreateInfoEXT *)parsePNextChain(obj);
15112 
15113     parse_uint32_t("attachmentCount", obj["attachmentCount"], (o.attachmentCount));
15114 
15115     (o.pColorWriteEnables)                  = (VkBool32 *)s_globalMem.allocate((o.attachmentCount), sizeof(VkBool32));
15116     Json::Value &obj_pColorWriteEnables_arr = obj["pColorWriteEnables"];
15117     for (unsigned int i = 0; i < obj_pColorWriteEnables_arr.size(); i++)
15118     {
15119         parse_VkBool32("pColorWriteEnables", obj_pColorWriteEnables_arr[i],
15120                        const_cast<VkBool32 &>((o.pColorWriteEnables[i])));
15121     }
15122 }
15123 
parse_VkApplicationParametersEXT(const char * s,Json::Value & obj,VkApplicationParametersEXT & o)15124 static void parse_VkApplicationParametersEXT(const char *s, Json::Value &obj, VkApplicationParametersEXT &o)
15125 {
15126 
15127     parse_VkStructureType("sType", obj["sType"], (o.sType));
15128 
15129     o.pNext = (VkApplicationParametersEXT *)parsePNextChain(obj);
15130 
15131     parse_uint32_t("vendorID", obj["vendorID"], (o.vendorID));
15132 
15133     parse_uint32_t("deviceID", obj["deviceID"], (o.deviceID));
15134 
15135     parse_uint32_t("key", obj["key"], (o.key));
15136 
15137     parse_uint64_t("value", obj["value"], (o.value));
15138 }
15139 
parse_VkSemaphoreSciSyncPoolNV(const char * s,Json::Value & obj,VkSemaphoreSciSyncPoolNV & o)15140 static void parse_VkSemaphoreSciSyncPoolNV(const char *s, Json::Value &obj, VkSemaphoreSciSyncPoolNV &o)
15141 {
15142     //     std::string _res = obj.asString();
15143 }
15144 
parse_VkPhysicalDeviceExternalSciSync2FeaturesNV(const char * s,Json::Value & obj,VkPhysicalDeviceExternalSciSync2FeaturesNV & o)15145 static void parse_VkPhysicalDeviceExternalSciSync2FeaturesNV(const char *s, Json::Value &obj,
15146                                                              VkPhysicalDeviceExternalSciSync2FeaturesNV &o)
15147 {
15148 
15149     parse_VkStructureType("sType", obj["sType"], (o.sType));
15150 
15151     o.pNext = (VkPhysicalDeviceExternalSciSync2FeaturesNV *)parsePNextChain(obj);
15152 
15153     parse_VkBool32("sciSyncFence", obj["sciSyncFence"], (o.sciSyncFence));
15154 
15155     parse_VkBool32("sciSyncSemaphore2", obj["sciSyncSemaphore2"], (o.sciSyncSemaphore2));
15156 
15157     parse_VkBool32("sciSyncImport", obj["sciSyncImport"], (o.sciSyncImport));
15158 
15159     parse_VkBool32("sciSyncExport", obj["sciSyncExport"], (o.sciSyncExport));
15160 }
15161 
parse_VkSemaphoreSciSyncPoolCreateInfoNV(const char * s,Json::Value & obj,VkSemaphoreSciSyncPoolCreateInfoNV & o)15162 static void parse_VkSemaphoreSciSyncPoolCreateInfoNV(const char *s, Json::Value &obj,
15163                                                      VkSemaphoreSciSyncPoolCreateInfoNV &o)
15164 {
15165 
15166     parse_VkStructureType("sType", obj["sType"], (o.sType));
15167 
15168     o.pNext = (VkSemaphoreSciSyncPoolCreateInfoNV *)parsePNextChain(obj);
15169 
15170     parse_NvSciSyncObj("handle", obj["handle"], (o.handle));
15171 }
15172 
parse_VkSemaphoreSciSyncCreateInfoNV(const char * s,Json::Value & obj,VkSemaphoreSciSyncCreateInfoNV & o)15173 static void parse_VkSemaphoreSciSyncCreateInfoNV(const char *s, Json::Value &obj, VkSemaphoreSciSyncCreateInfoNV &o)
15174 {
15175 
15176     parse_VkStructureType("sType", obj["sType"], (o.sType));
15177 
15178     o.pNext = (VkSemaphoreSciSyncCreateInfoNV *)parsePNextChain(obj);
15179 
15180     /** TODO: Handle this - pFence **/
15181 }
15182 
parse_VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV(const char * s,Json::Value & obj,VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV & o)15183 static void parse_VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV(
15184     const char *s, Json::Value &obj, VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV &o)
15185 {
15186 
15187     parse_VkStructureType("sType", obj["sType"], (o.sType));
15188 
15189     o.pNext = (VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV *)parsePNextChain(obj);
15190 
15191     parse_uint32_t("semaphoreSciSyncPoolRequestCount", obj["semaphoreSciSyncPoolRequestCount"],
15192                    (o.semaphoreSciSyncPoolRequestCount));
15193 }
15194 
15195 } //End of namespace vk_json_parser
15196 
15197 #endif // _VULKAN_JSON_PARSER_HPP