• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (C) 2018 The Android Open Source Project
2 // Copyright (C) 2018 Google Inc.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 // Autogenerated module goldfish_vk_extension_structs_guest
17 //
18 // (impl) generated by scripts/genvk.py -registry ../../vulkan/registry/vk.xml -registryGfxstream
19 // xml/vk_gfxstream.xml cereal -o /tmp/
20 //
21 // Please do not modify directly;
22 // re-run mesa3d/src/gfxstream/codegen/generate-gfxstream-vulkan.sh,
23 // or directly from Python by defining:
24 // VULKAN_REGISTRY_XML_DIR : Directory containing vk.xml
25 // VULKAN_REGISTRY_SCRIPTS_DIR : Directory containing genvk.py
26 // CEREAL_OUTPUT_DIR: Where to put the generated sources.
27 //
28 // python3 $VULKAN_REGISTRY_SCRIPTS_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o
29 // $CEREAL_OUTPUT_DIR
30 //
31 
32 #include "goldfish_vk_extension_structs_guest.h"
33 namespace gfxstream {
34 namespace vk {
35 
goldfish_vk_struct_type(const void * structExtension)36 uint32_t goldfish_vk_struct_type(const void* structExtension) {
37     const uint32_t asStructType = *(reinterpret_cast<const uint32_t*>(structExtension));
38     return asStructType;
39 }
40 
goldfish_vk_extension_struct_size(VkStructureType rootType,const void * structExtension)41 size_t goldfish_vk_extension_struct_size(VkStructureType rootType, const void* structExtension) {
42     if (!structExtension) {
43         return (size_t)0;
44     }
45     uint32_t structType = (uint32_t)goldfish_vk_struct_type(structExtension);
46     switch (structType) {
47 #ifdef VK_VERSION_1_0
48         case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO: {
49             return sizeof(VkShaderModuleCreateInfo);
50         }
51         case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO: {
52             return sizeof(VkPipelineLayoutCreateInfo);
53         }
54 #endif
55 #ifdef VK_VERSION_1_1
56         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES: {
57             return sizeof(VkPhysicalDeviceSubgroupProperties);
58         }
59         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: {
60             return sizeof(VkPhysicalDevice16BitStorageFeatures);
61         }
62         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS: {
63             return sizeof(VkMemoryDedicatedRequirements);
64         }
65         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO: {
66             return sizeof(VkMemoryDedicatedAllocateInfo);
67         }
68         case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO: {
69             return sizeof(VkMemoryAllocateFlagsInfo);
70         }
71         case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO: {
72             return sizeof(VkDeviceGroupRenderPassBeginInfo);
73         }
74         case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO: {
75             return sizeof(VkDeviceGroupCommandBufferBeginInfo);
76         }
77         case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO: {
78             return sizeof(VkDeviceGroupSubmitInfo);
79         }
80         case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO: {
81             return sizeof(VkDeviceGroupBindSparseInfo);
82         }
83         case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO: {
84             return sizeof(VkBindBufferMemoryDeviceGroupInfo);
85         }
86         case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO: {
87             return sizeof(VkBindImageMemoryDeviceGroupInfo);
88         }
89         case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO: {
90             return sizeof(VkDeviceGroupDeviceCreateInfo);
91         }
92         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
93             return sizeof(VkPhysicalDeviceFeatures2);
94         }
95         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: {
96             return sizeof(VkPhysicalDevicePointClippingProperties);
97         }
98         case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO: {
99             return sizeof(VkRenderPassInputAttachmentAspectCreateInfo);
100         }
101         case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO: {
102             return sizeof(VkImageViewUsageCreateInfo);
103         }
104         case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO: {
105             return sizeof(VkPipelineTessellationDomainOriginStateCreateInfo);
106         }
107         case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO: {
108             return sizeof(VkRenderPassMultiviewCreateInfo);
109         }
110         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: {
111             return sizeof(VkPhysicalDeviceMultiviewFeatures);
112         }
113         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES: {
114             return sizeof(VkPhysicalDeviceMultiviewProperties);
115         }
116         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: {
117             return sizeof(VkPhysicalDeviceVariablePointersFeatures);
118         }
119         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: {
120             return sizeof(VkPhysicalDeviceProtectedMemoryFeatures);
121         }
122         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES: {
123             return sizeof(VkPhysicalDeviceProtectedMemoryProperties);
124         }
125         case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO: {
126             return sizeof(VkProtectedSubmitInfo);
127         }
128         case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: {
129             return sizeof(VkSamplerYcbcrConversionInfo);
130         }
131         case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO: {
132             return sizeof(VkBindImagePlaneMemoryInfo);
133         }
134         case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO: {
135             return sizeof(VkImagePlaneMemoryRequirementsInfo);
136         }
137         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: {
138             return sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures);
139         }
140         case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES: {
141             return sizeof(VkSamplerYcbcrConversionImageFormatProperties);
142         }
143         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO: {
144             return sizeof(VkPhysicalDeviceExternalImageFormatInfo);
145         }
146         case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES: {
147             return sizeof(VkExternalImageFormatProperties);
148         }
149         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES: {
150             return sizeof(VkPhysicalDeviceIDProperties);
151         }
152         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO: {
153             return sizeof(VkExternalMemoryImageCreateInfo);
154         }
155         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO: {
156             return sizeof(VkExternalMemoryBufferCreateInfo);
157         }
158         case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO: {
159             return sizeof(VkExportMemoryAllocateInfo);
160         }
161         case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO: {
162             return sizeof(VkExportFenceCreateInfo);
163         }
164         case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO: {
165             return sizeof(VkExportSemaphoreCreateInfo);
166         }
167         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: {
168             return sizeof(VkPhysicalDeviceMaintenance3Properties);
169         }
170         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: {
171             return sizeof(VkPhysicalDeviceShaderDrawParametersFeatures);
172         }
173 #endif
174 #ifdef VK_VERSION_1_2
175         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: {
176             return sizeof(VkPhysicalDeviceVulkan11Features);
177         }
178         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES: {
179             return sizeof(VkPhysicalDeviceVulkan11Properties);
180         }
181         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: {
182             return sizeof(VkPhysicalDeviceVulkan12Features);
183         }
184         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES: {
185             return sizeof(VkPhysicalDeviceVulkan12Properties);
186         }
187         case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO: {
188             return sizeof(VkImageFormatListCreateInfo);
189         }
190         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: {
191             return sizeof(VkPhysicalDevice8BitStorageFeatures);
192         }
193         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: {
194             return sizeof(VkPhysicalDeviceDriverProperties);
195         }
196         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES: {
197             return sizeof(VkPhysicalDeviceShaderAtomicInt64Features);
198         }
199         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: {
200             return sizeof(VkPhysicalDeviceShaderFloat16Int8Features);
201         }
202         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES: {
203             return sizeof(VkPhysicalDeviceFloatControlsProperties);
204         }
205         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO: {
206             return sizeof(VkDescriptorSetLayoutBindingFlagsCreateInfo);
207         }
208         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES: {
209             return sizeof(VkPhysicalDeviceDescriptorIndexingFeatures);
210         }
211         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES: {
212             return sizeof(VkPhysicalDeviceDescriptorIndexingProperties);
213         }
214         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO: {
215             return sizeof(VkDescriptorSetVariableDescriptorCountAllocateInfo);
216         }
217         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT: {
218             return sizeof(VkDescriptorSetVariableDescriptorCountLayoutSupport);
219         }
220         case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE: {
221             return sizeof(VkSubpassDescriptionDepthStencilResolve);
222         }
223         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES: {
224             return sizeof(VkPhysicalDeviceDepthStencilResolveProperties);
225         }
226         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES: {
227             return sizeof(VkPhysicalDeviceScalarBlockLayoutFeatures);
228         }
229         case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO: {
230             return sizeof(VkImageStencilUsageCreateInfo);
231         }
232         case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO: {
233             return sizeof(VkSamplerReductionModeCreateInfo);
234         }
235         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES: {
236             return sizeof(VkPhysicalDeviceSamplerFilterMinmaxProperties);
237         }
238         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: {
239             return sizeof(VkPhysicalDeviceVulkanMemoryModelFeatures);
240         }
241         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES: {
242             return sizeof(VkPhysicalDeviceImagelessFramebufferFeatures);
243         }
244         case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO: {
245             return sizeof(VkFramebufferAttachmentsCreateInfo);
246         }
247         case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO: {
248             return sizeof(VkRenderPassAttachmentBeginInfo);
249         }
250         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES: {
251             return sizeof(VkPhysicalDeviceUniformBufferStandardLayoutFeatures);
252         }
253         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES: {
254             return sizeof(VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures);
255         }
256         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: {
257             return sizeof(VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures);
258         }
259         case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT: {
260             return sizeof(VkAttachmentReferenceStencilLayout);
261         }
262         case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT: {
263             return sizeof(VkAttachmentDescriptionStencilLayout);
264         }
265         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES: {
266             return sizeof(VkPhysicalDeviceHostQueryResetFeatures);
267         }
268         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES: {
269             return sizeof(VkPhysicalDeviceTimelineSemaphoreFeatures);
270         }
271         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES: {
272             return sizeof(VkPhysicalDeviceTimelineSemaphoreProperties);
273         }
274         case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO: {
275             return sizeof(VkSemaphoreTypeCreateInfo);
276         }
277         case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO: {
278             return sizeof(VkTimelineSemaphoreSubmitInfo);
279         }
280         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES: {
281             return sizeof(VkPhysicalDeviceBufferDeviceAddressFeatures);
282         }
283         case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO: {
284             return sizeof(VkBufferOpaqueCaptureAddressCreateInfo);
285         }
286         case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO: {
287             return sizeof(VkMemoryOpaqueCaptureAddressAllocateInfo);
288         }
289 #endif
290 #ifdef VK_VERSION_1_3
291         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES: {
292             return sizeof(VkPhysicalDeviceVulkan13Features);
293         }
294         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES: {
295             return sizeof(VkPhysicalDeviceVulkan13Properties);
296         }
297         case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: {
298             return sizeof(VkPipelineCreationFeedbackCreateInfo);
299         }
300         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES: {
301             return sizeof(VkPhysicalDeviceShaderTerminateInvocationFeatures);
302         }
303         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES: {
304             return sizeof(VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures);
305         }
306         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES: {
307             return sizeof(VkPhysicalDevicePrivateDataFeatures);
308         }
309         case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO: {
310             return sizeof(VkDevicePrivateDataCreateInfo);
311         }
312         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES: {
313             return sizeof(VkPhysicalDevicePipelineCreationCacheControlFeatures);
314         }
315         case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2: {
316             return sizeof(VkMemoryBarrier2);
317         }
318         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: {
319             return sizeof(VkPhysicalDeviceSynchronization2Features);
320         }
321         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES: {
322             return sizeof(VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures);
323         }
324         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES: {
325             return sizeof(VkPhysicalDeviceImageRobustnessFeatures);
326         }
327         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES: {
328             return sizeof(VkPhysicalDeviceSubgroupSizeControlFeatures);
329         }
330         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES: {
331             return sizeof(VkPhysicalDeviceSubgroupSizeControlProperties);
332         }
333         case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO: {
334             return sizeof(VkPipelineShaderStageRequiredSubgroupSizeCreateInfo);
335         }
336         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES: {
337             return sizeof(VkPhysicalDeviceInlineUniformBlockFeatures);
338         }
339         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES: {
340             return sizeof(VkPhysicalDeviceInlineUniformBlockProperties);
341         }
342         case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK: {
343             return sizeof(VkWriteDescriptorSetInlineUniformBlock);
344         }
345         case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO: {
346             return sizeof(VkDescriptorPoolInlineUniformBlockCreateInfo);
347         }
348         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES: {
349             return sizeof(VkPhysicalDeviceTextureCompressionASTCHDRFeatures);
350         }
351         case VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO: {
352             return sizeof(VkPipelineRenderingCreateInfo);
353         }
354         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES: {
355             return sizeof(VkPhysicalDeviceDynamicRenderingFeatures);
356         }
357         case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO: {
358             return sizeof(VkCommandBufferInheritanceRenderingInfo);
359         }
360         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES: {
361             return sizeof(VkPhysicalDeviceShaderIntegerDotProductFeatures);
362         }
363         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES: {
364             return sizeof(VkPhysicalDeviceShaderIntegerDotProductProperties);
365         }
366         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES: {
367             return sizeof(VkPhysicalDeviceTexelBufferAlignmentProperties);
368         }
369         case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3: {
370             return sizeof(VkFormatProperties3);
371         }
372         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES: {
373             return sizeof(VkPhysicalDeviceMaintenance4Features);
374         }
375         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES: {
376             return sizeof(VkPhysicalDeviceMaintenance4Properties);
377         }
378 #endif
379 #ifdef VK_VERSION_1_4
380         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES: {
381             return sizeof(VkPhysicalDeviceVulkan14Features);
382         }
383         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES: {
384             return sizeof(VkPhysicalDeviceVulkan14Properties);
385         }
386         case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO: {
387             return sizeof(VkDeviceQueueGlobalPriorityCreateInfo);
388         }
389         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES: {
390             return sizeof(VkPhysicalDeviceGlobalPriorityQueryFeatures);
391         }
392         case VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES: {
393             return sizeof(VkQueueFamilyGlobalPriorityProperties);
394         }
395         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES: {
396             return sizeof(VkPhysicalDeviceShaderSubgroupRotateFeatures);
397         }
398         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES: {
399             return sizeof(VkPhysicalDeviceShaderFloatControls2Features);
400         }
401         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES: {
402             return sizeof(VkPhysicalDeviceShaderExpectAssumeFeatures);
403         }
404         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES: {
405             return sizeof(VkPhysicalDeviceLineRasterizationFeatures);
406         }
407         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES: {
408             return sizeof(VkPhysicalDeviceLineRasterizationProperties);
409         }
410         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO: {
411             return sizeof(VkPipelineRasterizationLineStateCreateInfo);
412         }
413         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES: {
414             return sizeof(VkPhysicalDeviceVertexAttributeDivisorProperties);
415         }
416         case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO: {
417             return sizeof(VkPipelineVertexInputDivisorStateCreateInfo);
418         }
419         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES: {
420             return sizeof(VkPhysicalDeviceVertexAttributeDivisorFeatures);
421         }
422         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES: {
423             return sizeof(VkPhysicalDeviceIndexTypeUint8Features);
424         }
425         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES: {
426             return sizeof(VkPhysicalDeviceMaintenance5Features);
427         }
428         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES: {
429             return sizeof(VkPhysicalDeviceMaintenance5Properties);
430         }
431         case VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO: {
432             return sizeof(VkPipelineCreateFlags2CreateInfo);
433         }
434         case VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO: {
435             return sizeof(VkBufferUsageFlags2CreateInfo);
436         }
437         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES: {
438             return sizeof(VkPhysicalDevicePushDescriptorProperties);
439         }
440         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES: {
441             return sizeof(VkPhysicalDeviceDynamicRenderingLocalReadFeatures);
442         }
443         case VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO: {
444             return sizeof(VkRenderingAttachmentLocationInfo);
445         }
446         case VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO: {
447             return sizeof(VkRenderingInputAttachmentIndexInfo);
448         }
449         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES: {
450             return sizeof(VkPhysicalDeviceMaintenance6Features);
451         }
452         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES: {
453             return sizeof(VkPhysicalDeviceMaintenance6Properties);
454         }
455         case VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS: {
456             return sizeof(VkBindMemoryStatus);
457         }
458         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES: {
459             return sizeof(VkPhysicalDevicePipelineProtectedAccessFeatures);
460         }
461         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES: {
462             return sizeof(VkPhysicalDevicePipelineRobustnessFeatures);
463         }
464         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES: {
465             return sizeof(VkPhysicalDevicePipelineRobustnessProperties);
466         }
467         case VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO: {
468             return sizeof(VkPipelineRobustnessCreateInfo);
469         }
470         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES: {
471             return sizeof(VkPhysicalDeviceHostImageCopyFeatures);
472         }
473         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES: {
474             return sizeof(VkPhysicalDeviceHostImageCopyProperties);
475         }
476         case VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE: {
477             return sizeof(VkSubresourceHostMemcpySize);
478         }
479         case VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY: {
480             return sizeof(VkHostImageCopyDevicePerformanceQuery);
481         }
482 #endif
483 #ifdef VK_KHR_incremental_present
484         case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR: {
485             return sizeof(VkPresentRegionsKHR);
486         }
487 #endif
488 #ifdef VK_KHR_pipeline_executable_properties
489         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: {
490             return sizeof(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR);
491         }
492 #endif
493 #ifdef VK_ANDROID_native_buffer
494         case VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID: {
495             return sizeof(VkNativeBufferANDROID);
496         }
497 #endif
498 #ifdef VK_EXT_transform_feedback
499         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: {
500             return sizeof(VkPhysicalDeviceTransformFeedbackFeaturesEXT);
501         }
502         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT: {
503             return sizeof(VkPhysicalDeviceTransformFeedbackPropertiesEXT);
504         }
505         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: {
506             return sizeof(VkPipelineRasterizationStateStreamCreateInfoEXT);
507         }
508 #endif
509 #ifdef VK_EXT_depth_clip_enable
510         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: {
511             return sizeof(VkPhysicalDeviceDepthClipEnableFeaturesEXT);
512         }
513         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: {
514             return sizeof(VkPipelineRasterizationDepthClipStateCreateInfoEXT);
515         }
516 #endif
517 #ifdef VK_EXT_image_drm_format_modifier
518         case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT: {
519             return sizeof(VkDrmFormatModifierPropertiesListEXT);
520         }
521         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT: {
522             return sizeof(VkPhysicalDeviceImageDrmFormatModifierInfoEXT);
523         }
524         case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT: {
525             return sizeof(VkImageDrmFormatModifierListCreateInfoEXT);
526         }
527         case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT: {
528             return sizeof(VkImageDrmFormatModifierExplicitCreateInfoEXT);
529         }
530         case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT: {
531             return sizeof(VkDrmFormatModifierPropertiesList2EXT);
532         }
533 #endif
534 #ifdef VK_EXT_vertex_attribute_divisor
535         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: {
536             return sizeof(VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT);
537         }
538 #endif
539 #ifdef VK_EXT_fragment_density_map
540         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
541             switch (rootType) {
542                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
543                     return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
544                     break;
545                 }
546                 case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
547                     return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
548                     break;
549                 }
550                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
551                     return sizeof(VkImportColorBufferGOOGLE);
552                     break;
553                 }
554                 default: {
555                     return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
556                     break;
557                 }
558             }
559         }
560         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
561             switch (rootType) {
562                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
563                     return sizeof(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
564                     break;
565                 }
566                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
567                     return sizeof(VkCreateBlobGOOGLE);
568                     break;
569                 }
570                 default: {
571                     return sizeof(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
572                     break;
573                 }
574             }
575         }
576         case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
577             switch (rootType) {
578                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
579                     return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
580                     break;
581                 }
582                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
583                     return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
584                     break;
585                 }
586                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
587                     return sizeof(VkImportBufferGOOGLE);
588                     break;
589                 }
590                 default: {
591                     return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
592                     break;
593                 }
594             }
595         }
596         case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT: {
597             return sizeof(VkRenderingFragmentDensityMapAttachmentInfoEXT);
598         }
599 #endif
600 #ifdef VK_EXT_provoking_vertex
601         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
602             return sizeof(VkPhysicalDeviceProvokingVertexFeaturesEXT);
603         }
604         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT: {
605             return sizeof(VkPhysicalDeviceProvokingVertexPropertiesEXT);
606         }
607         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT: {
608             return sizeof(VkPipelineRasterizationProvokingVertexStateCreateInfoEXT);
609         }
610 #endif
611 #ifdef VK_EXT_extended_dynamic_state
612         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: {
613             return sizeof(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT);
614         }
615 #endif
616 #ifdef VK_EXT_texel_buffer_alignment
617         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: {
618             return sizeof(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT);
619         }
620 #endif
621 #ifdef VK_EXT_device_memory_report
622         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT: {
623             return sizeof(VkPhysicalDeviceDeviceMemoryReportFeaturesEXT);
624         }
625         case VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT: {
626             return sizeof(VkDeviceDeviceMemoryReportCreateInfoEXT);
627         }
628 #endif
629 #ifdef VK_EXT_robustness2
630         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: {
631             return sizeof(VkPhysicalDeviceRobustness2FeaturesEXT);
632         }
633         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT: {
634             return sizeof(VkPhysicalDeviceRobustness2PropertiesEXT);
635         }
636 #endif
637 #ifdef VK_EXT_custom_border_color
638         case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT: {
639             return sizeof(VkSamplerCustomBorderColorCreateInfoEXT);
640         }
641         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT: {
642             return sizeof(VkPhysicalDeviceCustomBorderColorPropertiesEXT);
643         }
644         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: {
645             return sizeof(VkPhysicalDeviceCustomBorderColorFeaturesEXT);
646         }
647 #endif
648 #ifdef VK_EXT_graphics_pipeline_library
649         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: {
650             return sizeof(VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT);
651         }
652         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT: {
653             return sizeof(VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT);
654         }
655         case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT: {
656             return sizeof(VkGraphicsPipelineLibraryCreateInfoEXT);
657         }
658 #endif
659 #ifdef VK_EXT_ycbcr_2plane_444_formats
660         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: {
661             return sizeof(VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT);
662         }
663 #endif
664 #ifdef VK_EXT_image_compression_control
665         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT: {
666             return sizeof(VkPhysicalDeviceImageCompressionControlFeaturesEXT);
667         }
668         case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT: {
669             return sizeof(VkImageCompressionControlEXT);
670         }
671         case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT: {
672             return sizeof(VkImageCompressionPropertiesEXT);
673         }
674 #endif
675 #ifdef VK_EXT_4444_formats
676         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: {
677             return sizeof(VkPhysicalDevice4444FormatsFeaturesEXT);
678         }
679 #endif
680 #ifdef VK_EXT_primitive_topology_list_restart
681         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT: {
682             return sizeof(VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT);
683         }
684 #endif
685 #ifdef VK_EXT_extended_dynamic_state2
686         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT: {
687             return sizeof(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT);
688         }
689 #endif
690 #ifdef VK_EXT_color_write_enable
691         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: {
692             return sizeof(VkPhysicalDeviceColorWriteEnableFeaturesEXT);
693         }
694         case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT: {
695             return sizeof(VkPipelineColorWriteCreateInfoEXT);
696         }
697 #endif
698 #ifdef VK_GOOGLE_gfxstream
699         case VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE: {
700             return sizeof(VkImportColorBufferGOOGLE);
701         }
702         case VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE: {
703             return sizeof(VkImportBufferGOOGLE);
704         }
705         case VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE: {
706             return sizeof(VkCreateBlobGOOGLE);
707         }
708 #endif
709 #ifdef VK_EXT_image_compression_control_swapchain
710         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT: {
711             return sizeof(VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT);
712         }
713 #endif
714         default: {
715             return (size_t)0;
716         }
717     }
718 }
719 
goldfish_vk_extension_struct_size_with_stream_features(uint32_t streamFeatures,VkStructureType rootType,const void * structExtension)720 size_t goldfish_vk_extension_struct_size_with_stream_features(uint32_t streamFeatures,
721                                                               VkStructureType rootType,
722                                                               const void* structExtension) {
723     if (!structExtension) {
724         return (size_t)0;
725     }
726     uint32_t structType = (uint32_t)goldfish_vk_struct_type(structExtension);
727     switch (structType) {
728 #ifdef VK_VERSION_1_0
729         case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO: {
730             return sizeof(VkShaderModuleCreateInfo);
731         }
732         case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO: {
733             return sizeof(VkPipelineLayoutCreateInfo);
734         }
735 #endif
736 #ifdef VK_VERSION_1_1
737         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES: {
738             return sizeof(VkPhysicalDeviceSubgroupProperties);
739         }
740         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: {
741             return sizeof(VkPhysicalDevice16BitStorageFeatures);
742         }
743         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS: {
744             return sizeof(VkMemoryDedicatedRequirements);
745         }
746         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO: {
747             return sizeof(VkMemoryDedicatedAllocateInfo);
748         }
749         case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO: {
750             return sizeof(VkMemoryAllocateFlagsInfo);
751         }
752         case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO: {
753             return sizeof(VkDeviceGroupRenderPassBeginInfo);
754         }
755         case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO: {
756             return sizeof(VkDeviceGroupCommandBufferBeginInfo);
757         }
758         case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO: {
759             return sizeof(VkDeviceGroupSubmitInfo);
760         }
761         case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO: {
762             return sizeof(VkDeviceGroupBindSparseInfo);
763         }
764         case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO: {
765             return sizeof(VkBindBufferMemoryDeviceGroupInfo);
766         }
767         case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO: {
768             return sizeof(VkBindImageMemoryDeviceGroupInfo);
769         }
770         case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO: {
771             return sizeof(VkDeviceGroupDeviceCreateInfo);
772         }
773         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
774             return sizeof(VkPhysicalDeviceFeatures2);
775         }
776         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: {
777             return sizeof(VkPhysicalDevicePointClippingProperties);
778         }
779         case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO: {
780             return sizeof(VkRenderPassInputAttachmentAspectCreateInfo);
781         }
782         case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO: {
783             return sizeof(VkImageViewUsageCreateInfo);
784         }
785         case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO: {
786             return sizeof(VkPipelineTessellationDomainOriginStateCreateInfo);
787         }
788         case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO: {
789             return sizeof(VkRenderPassMultiviewCreateInfo);
790         }
791         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: {
792             return sizeof(VkPhysicalDeviceMultiviewFeatures);
793         }
794         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES: {
795             return sizeof(VkPhysicalDeviceMultiviewProperties);
796         }
797         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: {
798             return sizeof(VkPhysicalDeviceVariablePointersFeatures);
799         }
800         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: {
801             return sizeof(VkPhysicalDeviceProtectedMemoryFeatures);
802         }
803         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES: {
804             return sizeof(VkPhysicalDeviceProtectedMemoryProperties);
805         }
806         case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO: {
807             return sizeof(VkProtectedSubmitInfo);
808         }
809         case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: {
810             return sizeof(VkSamplerYcbcrConversionInfo);
811         }
812         case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO: {
813             return sizeof(VkBindImagePlaneMemoryInfo);
814         }
815         case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO: {
816             return sizeof(VkImagePlaneMemoryRequirementsInfo);
817         }
818         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: {
819             return sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures);
820         }
821         case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES: {
822             return sizeof(VkSamplerYcbcrConversionImageFormatProperties);
823         }
824         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO: {
825             return sizeof(VkPhysicalDeviceExternalImageFormatInfo);
826         }
827         case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES: {
828             return sizeof(VkExternalImageFormatProperties);
829         }
830         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES: {
831             return sizeof(VkPhysicalDeviceIDProperties);
832         }
833         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO: {
834             return sizeof(VkExternalMemoryImageCreateInfo);
835         }
836         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO: {
837             return sizeof(VkExternalMemoryBufferCreateInfo);
838         }
839         case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO: {
840             return sizeof(VkExportMemoryAllocateInfo);
841         }
842         case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO: {
843             return sizeof(VkExportFenceCreateInfo);
844         }
845         case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO: {
846             return sizeof(VkExportSemaphoreCreateInfo);
847         }
848         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: {
849             return sizeof(VkPhysicalDeviceMaintenance3Properties);
850         }
851         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: {
852             return sizeof(VkPhysicalDeviceShaderDrawParametersFeatures);
853         }
854 #endif
855 #ifdef VK_VERSION_1_2
856         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: {
857             return sizeof(VkPhysicalDeviceVulkan11Features);
858         }
859         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES: {
860             return sizeof(VkPhysicalDeviceVulkan11Properties);
861         }
862         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: {
863             return sizeof(VkPhysicalDeviceVulkan12Features);
864         }
865         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES: {
866             return sizeof(VkPhysicalDeviceVulkan12Properties);
867         }
868         case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO: {
869             return sizeof(VkImageFormatListCreateInfo);
870         }
871         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: {
872             return sizeof(VkPhysicalDevice8BitStorageFeatures);
873         }
874         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: {
875             return sizeof(VkPhysicalDeviceDriverProperties);
876         }
877         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES: {
878             return sizeof(VkPhysicalDeviceShaderAtomicInt64Features);
879         }
880         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: {
881             if (streamFeatures & VULKAN_STREAM_FEATURE_SHADER_FLOAT16_INT8_BIT) {
882                 return sizeof(VkPhysicalDeviceShaderFloat16Int8Features);
883             } else {
884                 return 0;
885             }
886         }
887         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES: {
888             return sizeof(VkPhysicalDeviceFloatControlsProperties);
889         }
890         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO: {
891             return sizeof(VkDescriptorSetLayoutBindingFlagsCreateInfo);
892         }
893         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES: {
894             return sizeof(VkPhysicalDeviceDescriptorIndexingFeatures);
895         }
896         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES: {
897             return sizeof(VkPhysicalDeviceDescriptorIndexingProperties);
898         }
899         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO: {
900             return sizeof(VkDescriptorSetVariableDescriptorCountAllocateInfo);
901         }
902         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT: {
903             return sizeof(VkDescriptorSetVariableDescriptorCountLayoutSupport);
904         }
905         case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE: {
906             return sizeof(VkSubpassDescriptionDepthStencilResolve);
907         }
908         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES: {
909             return sizeof(VkPhysicalDeviceDepthStencilResolveProperties);
910         }
911         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES: {
912             return sizeof(VkPhysicalDeviceScalarBlockLayoutFeatures);
913         }
914         case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO: {
915             return sizeof(VkImageStencilUsageCreateInfo);
916         }
917         case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO: {
918             return sizeof(VkSamplerReductionModeCreateInfo);
919         }
920         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES: {
921             return sizeof(VkPhysicalDeviceSamplerFilterMinmaxProperties);
922         }
923         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: {
924             return sizeof(VkPhysicalDeviceVulkanMemoryModelFeatures);
925         }
926         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES: {
927             return sizeof(VkPhysicalDeviceImagelessFramebufferFeatures);
928         }
929         case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO: {
930             return sizeof(VkFramebufferAttachmentsCreateInfo);
931         }
932         case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO: {
933             return sizeof(VkRenderPassAttachmentBeginInfo);
934         }
935         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES: {
936             return sizeof(VkPhysicalDeviceUniformBufferStandardLayoutFeatures);
937         }
938         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES: {
939             return sizeof(VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures);
940         }
941         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: {
942             return sizeof(VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures);
943         }
944         case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT: {
945             return sizeof(VkAttachmentReferenceStencilLayout);
946         }
947         case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT: {
948             return sizeof(VkAttachmentDescriptionStencilLayout);
949         }
950         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES: {
951             return sizeof(VkPhysicalDeviceHostQueryResetFeatures);
952         }
953         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES: {
954             return sizeof(VkPhysicalDeviceTimelineSemaphoreFeatures);
955         }
956         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES: {
957             return sizeof(VkPhysicalDeviceTimelineSemaphoreProperties);
958         }
959         case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO: {
960             return sizeof(VkSemaphoreTypeCreateInfo);
961         }
962         case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO: {
963             return sizeof(VkTimelineSemaphoreSubmitInfo);
964         }
965         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES: {
966             return sizeof(VkPhysicalDeviceBufferDeviceAddressFeatures);
967         }
968         case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO: {
969             return sizeof(VkBufferOpaqueCaptureAddressCreateInfo);
970         }
971         case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO: {
972             return sizeof(VkMemoryOpaqueCaptureAddressAllocateInfo);
973         }
974 #endif
975 #ifdef VK_VERSION_1_3
976         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES: {
977             return sizeof(VkPhysicalDeviceVulkan13Features);
978         }
979         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES: {
980             return sizeof(VkPhysicalDeviceVulkan13Properties);
981         }
982         case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: {
983             return sizeof(VkPipelineCreationFeedbackCreateInfo);
984         }
985         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES: {
986             return sizeof(VkPhysicalDeviceShaderTerminateInvocationFeatures);
987         }
988         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES: {
989             return sizeof(VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures);
990         }
991         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES: {
992             return sizeof(VkPhysicalDevicePrivateDataFeatures);
993         }
994         case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO: {
995             return sizeof(VkDevicePrivateDataCreateInfo);
996         }
997         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES: {
998             return sizeof(VkPhysicalDevicePipelineCreationCacheControlFeatures);
999         }
1000         case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2: {
1001             return sizeof(VkMemoryBarrier2);
1002         }
1003         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: {
1004             return sizeof(VkPhysicalDeviceSynchronization2Features);
1005         }
1006         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES: {
1007             return sizeof(VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures);
1008         }
1009         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES: {
1010             return sizeof(VkPhysicalDeviceImageRobustnessFeatures);
1011         }
1012         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES: {
1013             return sizeof(VkPhysicalDeviceSubgroupSizeControlFeatures);
1014         }
1015         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES: {
1016             return sizeof(VkPhysicalDeviceSubgroupSizeControlProperties);
1017         }
1018         case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO: {
1019             return sizeof(VkPipelineShaderStageRequiredSubgroupSizeCreateInfo);
1020         }
1021         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES: {
1022             return sizeof(VkPhysicalDeviceInlineUniformBlockFeatures);
1023         }
1024         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES: {
1025             return sizeof(VkPhysicalDeviceInlineUniformBlockProperties);
1026         }
1027         case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK: {
1028             return sizeof(VkWriteDescriptorSetInlineUniformBlock);
1029         }
1030         case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO: {
1031             return sizeof(VkDescriptorPoolInlineUniformBlockCreateInfo);
1032         }
1033         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES: {
1034             return sizeof(VkPhysicalDeviceTextureCompressionASTCHDRFeatures);
1035         }
1036         case VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO: {
1037             return sizeof(VkPipelineRenderingCreateInfo);
1038         }
1039         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES: {
1040             return sizeof(VkPhysicalDeviceDynamicRenderingFeatures);
1041         }
1042         case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO: {
1043             return sizeof(VkCommandBufferInheritanceRenderingInfo);
1044         }
1045         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES: {
1046             return sizeof(VkPhysicalDeviceShaderIntegerDotProductFeatures);
1047         }
1048         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES: {
1049             return sizeof(VkPhysicalDeviceShaderIntegerDotProductProperties);
1050         }
1051         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES: {
1052             return sizeof(VkPhysicalDeviceTexelBufferAlignmentProperties);
1053         }
1054         case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3: {
1055             return sizeof(VkFormatProperties3);
1056         }
1057         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES: {
1058             return sizeof(VkPhysicalDeviceMaintenance4Features);
1059         }
1060         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES: {
1061             return sizeof(VkPhysicalDeviceMaintenance4Properties);
1062         }
1063 #endif
1064 #ifdef VK_VERSION_1_4
1065         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES: {
1066             return sizeof(VkPhysicalDeviceVulkan14Features);
1067         }
1068         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES: {
1069             return sizeof(VkPhysicalDeviceVulkan14Properties);
1070         }
1071         case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO: {
1072             return sizeof(VkDeviceQueueGlobalPriorityCreateInfo);
1073         }
1074         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES: {
1075             return sizeof(VkPhysicalDeviceGlobalPriorityQueryFeatures);
1076         }
1077         case VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES: {
1078             return sizeof(VkQueueFamilyGlobalPriorityProperties);
1079         }
1080         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES: {
1081             return sizeof(VkPhysicalDeviceShaderSubgroupRotateFeatures);
1082         }
1083         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES: {
1084             return sizeof(VkPhysicalDeviceShaderFloatControls2Features);
1085         }
1086         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES: {
1087             return sizeof(VkPhysicalDeviceShaderExpectAssumeFeatures);
1088         }
1089         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES: {
1090             return sizeof(VkPhysicalDeviceLineRasterizationFeatures);
1091         }
1092         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES: {
1093             return sizeof(VkPhysicalDeviceLineRasterizationProperties);
1094         }
1095         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO: {
1096             return sizeof(VkPipelineRasterizationLineStateCreateInfo);
1097         }
1098         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES: {
1099             return sizeof(VkPhysicalDeviceVertexAttributeDivisorProperties);
1100         }
1101         case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO: {
1102             return sizeof(VkPipelineVertexInputDivisorStateCreateInfo);
1103         }
1104         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES: {
1105             return sizeof(VkPhysicalDeviceVertexAttributeDivisorFeatures);
1106         }
1107         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES: {
1108             return sizeof(VkPhysicalDeviceIndexTypeUint8Features);
1109         }
1110         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES: {
1111             return sizeof(VkPhysicalDeviceMaintenance5Features);
1112         }
1113         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES: {
1114             return sizeof(VkPhysicalDeviceMaintenance5Properties);
1115         }
1116         case VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO: {
1117             return sizeof(VkPipelineCreateFlags2CreateInfo);
1118         }
1119         case VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO: {
1120             return sizeof(VkBufferUsageFlags2CreateInfo);
1121         }
1122         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES: {
1123             return sizeof(VkPhysicalDevicePushDescriptorProperties);
1124         }
1125         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES: {
1126             return sizeof(VkPhysicalDeviceDynamicRenderingLocalReadFeatures);
1127         }
1128         case VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO: {
1129             return sizeof(VkRenderingAttachmentLocationInfo);
1130         }
1131         case VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO: {
1132             return sizeof(VkRenderingInputAttachmentIndexInfo);
1133         }
1134         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES: {
1135             return sizeof(VkPhysicalDeviceMaintenance6Features);
1136         }
1137         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES: {
1138             return sizeof(VkPhysicalDeviceMaintenance6Properties);
1139         }
1140         case VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS: {
1141             return sizeof(VkBindMemoryStatus);
1142         }
1143         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES: {
1144             return sizeof(VkPhysicalDevicePipelineProtectedAccessFeatures);
1145         }
1146         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES: {
1147             return sizeof(VkPhysicalDevicePipelineRobustnessFeatures);
1148         }
1149         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES: {
1150             return sizeof(VkPhysicalDevicePipelineRobustnessProperties);
1151         }
1152         case VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO: {
1153             return sizeof(VkPipelineRobustnessCreateInfo);
1154         }
1155         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES: {
1156             return sizeof(VkPhysicalDeviceHostImageCopyFeatures);
1157         }
1158         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES: {
1159             return sizeof(VkPhysicalDeviceHostImageCopyProperties);
1160         }
1161         case VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE: {
1162             return sizeof(VkSubresourceHostMemcpySize);
1163         }
1164         case VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY: {
1165             return sizeof(VkHostImageCopyDevicePerformanceQuery);
1166         }
1167 #endif
1168 #ifdef VK_KHR_incremental_present
1169         case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR: {
1170             return sizeof(VkPresentRegionsKHR);
1171         }
1172 #endif
1173 #ifdef VK_KHR_pipeline_executable_properties
1174         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: {
1175             return sizeof(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR);
1176         }
1177 #endif
1178 #ifdef VK_ANDROID_native_buffer
1179         case VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID: {
1180             return sizeof(VkNativeBufferANDROID);
1181         }
1182 #endif
1183 #ifdef VK_EXT_transform_feedback
1184         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: {
1185             return sizeof(VkPhysicalDeviceTransformFeedbackFeaturesEXT);
1186         }
1187         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT: {
1188             return sizeof(VkPhysicalDeviceTransformFeedbackPropertiesEXT);
1189         }
1190         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: {
1191             return sizeof(VkPipelineRasterizationStateStreamCreateInfoEXT);
1192         }
1193 #endif
1194 #ifdef VK_EXT_depth_clip_enable
1195         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: {
1196             return sizeof(VkPhysicalDeviceDepthClipEnableFeaturesEXT);
1197         }
1198         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: {
1199             return sizeof(VkPipelineRasterizationDepthClipStateCreateInfoEXT);
1200         }
1201 #endif
1202 #ifdef VK_EXT_image_drm_format_modifier
1203         case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT: {
1204             return sizeof(VkDrmFormatModifierPropertiesListEXT);
1205         }
1206         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT: {
1207             return sizeof(VkPhysicalDeviceImageDrmFormatModifierInfoEXT);
1208         }
1209         case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT: {
1210             return sizeof(VkImageDrmFormatModifierListCreateInfoEXT);
1211         }
1212         case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT: {
1213             return sizeof(VkImageDrmFormatModifierExplicitCreateInfoEXT);
1214         }
1215         case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT: {
1216             return sizeof(VkDrmFormatModifierPropertiesList2EXT);
1217         }
1218 #endif
1219 #ifdef VK_EXT_vertex_attribute_divisor
1220         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: {
1221             return sizeof(VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT);
1222         }
1223 #endif
1224 #ifdef VK_EXT_fragment_density_map
1225         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
1226             switch (rootType) {
1227                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
1228                     return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
1229                     break;
1230                 }
1231                 case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
1232                     return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
1233                     break;
1234                 }
1235                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
1236                     return sizeof(VkImportColorBufferGOOGLE);
1237                     break;
1238                 }
1239                 default: {
1240                     return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
1241                     break;
1242                 }
1243             }
1244         }
1245         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
1246             switch (rootType) {
1247                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
1248                     return sizeof(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
1249                     break;
1250                 }
1251                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
1252                     return sizeof(VkCreateBlobGOOGLE);
1253                     break;
1254                 }
1255                 default: {
1256                     return sizeof(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
1257                     break;
1258                 }
1259             }
1260         }
1261         case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
1262             switch (rootType) {
1263                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
1264                     return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
1265                     break;
1266                 }
1267                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
1268                     return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
1269                     break;
1270                 }
1271                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
1272                     return sizeof(VkImportBufferGOOGLE);
1273                     break;
1274                 }
1275                 default: {
1276                     return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
1277                     break;
1278                 }
1279             }
1280         }
1281         case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT: {
1282             return sizeof(VkRenderingFragmentDensityMapAttachmentInfoEXT);
1283         }
1284 #endif
1285 #ifdef VK_EXT_provoking_vertex
1286         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
1287             return sizeof(VkPhysicalDeviceProvokingVertexFeaturesEXT);
1288         }
1289         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT: {
1290             return sizeof(VkPhysicalDeviceProvokingVertexPropertiesEXT);
1291         }
1292         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT: {
1293             return sizeof(VkPipelineRasterizationProvokingVertexStateCreateInfoEXT);
1294         }
1295 #endif
1296 #ifdef VK_EXT_extended_dynamic_state
1297         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: {
1298             return sizeof(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT);
1299         }
1300 #endif
1301 #ifdef VK_EXT_texel_buffer_alignment
1302         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: {
1303             return sizeof(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT);
1304         }
1305 #endif
1306 #ifdef VK_EXT_device_memory_report
1307         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT: {
1308             return sizeof(VkPhysicalDeviceDeviceMemoryReportFeaturesEXT);
1309         }
1310         case VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT: {
1311             return sizeof(VkDeviceDeviceMemoryReportCreateInfoEXT);
1312         }
1313 #endif
1314 #ifdef VK_EXT_robustness2
1315         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: {
1316             return sizeof(VkPhysicalDeviceRobustness2FeaturesEXT);
1317         }
1318         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT: {
1319             return sizeof(VkPhysicalDeviceRobustness2PropertiesEXT);
1320         }
1321 #endif
1322 #ifdef VK_EXT_custom_border_color
1323         case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT: {
1324             return sizeof(VkSamplerCustomBorderColorCreateInfoEXT);
1325         }
1326         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT: {
1327             return sizeof(VkPhysicalDeviceCustomBorderColorPropertiesEXT);
1328         }
1329         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: {
1330             return sizeof(VkPhysicalDeviceCustomBorderColorFeaturesEXT);
1331         }
1332 #endif
1333 #ifdef VK_EXT_graphics_pipeline_library
1334         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: {
1335             return sizeof(VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT);
1336         }
1337         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT: {
1338             return sizeof(VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT);
1339         }
1340         case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT: {
1341             return sizeof(VkGraphicsPipelineLibraryCreateInfoEXT);
1342         }
1343 #endif
1344 #ifdef VK_EXT_ycbcr_2plane_444_formats
1345         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: {
1346             return sizeof(VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT);
1347         }
1348 #endif
1349 #ifdef VK_EXT_image_compression_control
1350         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT: {
1351             return sizeof(VkPhysicalDeviceImageCompressionControlFeaturesEXT);
1352         }
1353         case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT: {
1354             return sizeof(VkImageCompressionControlEXT);
1355         }
1356         case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT: {
1357             return sizeof(VkImageCompressionPropertiesEXT);
1358         }
1359 #endif
1360 #ifdef VK_EXT_4444_formats
1361         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: {
1362             return sizeof(VkPhysicalDevice4444FormatsFeaturesEXT);
1363         }
1364 #endif
1365 #ifdef VK_EXT_primitive_topology_list_restart
1366         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT: {
1367             return sizeof(VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT);
1368         }
1369 #endif
1370 #ifdef VK_EXT_extended_dynamic_state2
1371         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT: {
1372             return sizeof(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT);
1373         }
1374 #endif
1375 #ifdef VK_EXT_color_write_enable
1376         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: {
1377             return sizeof(VkPhysicalDeviceColorWriteEnableFeaturesEXT);
1378         }
1379         case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT: {
1380             return sizeof(VkPipelineColorWriteCreateInfoEXT);
1381         }
1382 #endif
1383 #ifdef VK_GOOGLE_gfxstream
1384         case VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE: {
1385             return sizeof(VkImportColorBufferGOOGLE);
1386         }
1387         case VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE: {
1388             return sizeof(VkImportBufferGOOGLE);
1389         }
1390         case VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE: {
1391             return sizeof(VkCreateBlobGOOGLE);
1392         }
1393 #endif
1394 #ifdef VK_EXT_image_compression_control_swapchain
1395         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT: {
1396             return sizeof(VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT);
1397         }
1398 #endif
1399         default: {
1400             return (size_t)0;
1401         }
1402     }
1403 }
1404 
1405 }  // namespace vk
1406 }  // namespace gfxstream
1407