xref: /aosp_15_r20/external/mesa3d/src/gfxstream/guest/vulkan_enc/goldfish_vk_extension_structs_guest.cpp (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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_KHR_dynamic_rendering
380         case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR: {
381             return sizeof(VkRenderingFragmentShadingRateAttachmentInfoKHR);
382         }
383         case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT: {
384             return sizeof(VkRenderingFragmentDensityMapAttachmentInfoEXT);
385         }
386         case VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD: {
387             return sizeof(VkAttachmentSampleCountInfoAMD);
388         }
389         case VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX: {
390             return sizeof(VkMultiviewPerViewAttributesInfoNVX);
391         }
392 #endif
393 #ifdef VK_KHR_incremental_present
394         case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR: {
395             return sizeof(VkPresentRegionsKHR);
396         }
397 #endif
398 #ifdef VK_KHR_pipeline_executable_properties
399         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: {
400             return sizeof(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR);
401         }
402 #endif
403 #ifdef VK_KHR_synchronization2
404         case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV: {
405             return sizeof(VkQueueFamilyCheckpointProperties2NV);
406         }
407 #endif
408 #ifdef VK_KHR_maintenance5
409         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR: {
410             return sizeof(VkPhysicalDeviceMaintenance5FeaturesKHR);
411         }
412         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR: {
413             return sizeof(VkPhysicalDeviceMaintenance5PropertiesKHR);
414         }
415         case VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR: {
416             return sizeof(VkPipelineCreateFlags2CreateInfoKHR);
417         }
418         case VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR: {
419             return sizeof(VkBufferUsageFlags2CreateInfoKHR);
420         }
421 #endif
422 #ifdef VK_KHR_line_rasterization
423         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR: {
424             return sizeof(VkPhysicalDeviceLineRasterizationFeaturesKHR);
425         }
426         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR: {
427             return sizeof(VkPhysicalDeviceLineRasterizationPropertiesKHR);
428         }
429         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR: {
430             return sizeof(VkPipelineRasterizationLineStateCreateInfoKHR);
431         }
432 #endif
433 #ifdef VK_ANDROID_native_buffer
434         case VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID: {
435             return sizeof(VkNativeBufferANDROID);
436         }
437 #endif
438 #ifdef VK_EXT_transform_feedback
439         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: {
440             return sizeof(VkPhysicalDeviceTransformFeedbackFeaturesEXT);
441         }
442         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT: {
443             return sizeof(VkPhysicalDeviceTransformFeedbackPropertiesEXT);
444         }
445         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: {
446             return sizeof(VkPipelineRasterizationStateStreamCreateInfoEXT);
447         }
448 #endif
449 #ifdef VK_EXT_depth_clip_enable
450         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: {
451             return sizeof(VkPhysicalDeviceDepthClipEnableFeaturesEXT);
452         }
453         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: {
454             return sizeof(VkPipelineRasterizationDepthClipStateCreateInfoEXT);
455         }
456 #endif
457 #ifdef VK_EXT_image_drm_format_modifier
458         case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT: {
459             return sizeof(VkDrmFormatModifierPropertiesListEXT);
460         }
461         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT: {
462             return sizeof(VkPhysicalDeviceImageDrmFormatModifierInfoEXT);
463         }
464         case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT: {
465             return sizeof(VkImageDrmFormatModifierListCreateInfoEXT);
466         }
467         case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT: {
468             return sizeof(VkImageDrmFormatModifierExplicitCreateInfoEXT);
469         }
470         case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT: {
471             return sizeof(VkDrmFormatModifierPropertiesList2EXT);
472         }
473 #endif
474 #ifdef VK_EXT_vertex_attribute_divisor
475         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: {
476             return sizeof(VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT);
477         }
478 #endif
479 #ifdef VK_EXT_fragment_density_map
480         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
481             switch (rootType) {
482                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
483                     return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
484                     break;
485                 }
486                 case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
487                     return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
488                     break;
489                 }
490                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
491                     return sizeof(VkImportColorBufferGOOGLE);
492                     break;
493                 }
494                 default: {
495                     return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
496                     break;
497                 }
498             }
499         }
500         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
501             switch (rootType) {
502                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
503                     return sizeof(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
504                     break;
505                 }
506                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
507                     return sizeof(VkCreateBlobGOOGLE);
508                     break;
509                 }
510                 default: {
511                     return sizeof(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
512                     break;
513                 }
514             }
515         }
516         case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
517             switch (rootType) {
518                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
519                     return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
520                     break;
521                 }
522                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
523                     return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
524                     break;
525                 }
526                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
527                     return sizeof(VkImportBufferGOOGLE);
528                     break;
529                 }
530                 default: {
531                     return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
532                     break;
533                 }
534             }
535         }
536 #endif
537 #ifdef VK_EXT_provoking_vertex
538         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
539             return sizeof(VkPhysicalDeviceProvokingVertexFeaturesEXT);
540         }
541         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT: {
542             return sizeof(VkPhysicalDeviceProvokingVertexPropertiesEXT);
543         }
544         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT: {
545             return sizeof(VkPipelineRasterizationProvokingVertexStateCreateInfoEXT);
546         }
547 #endif
548 #ifdef VK_EXT_extended_dynamic_state
549         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: {
550             return sizeof(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT);
551         }
552 #endif
553 #ifdef VK_EXT_host_image_copy
554         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT: {
555             return sizeof(VkPhysicalDeviceHostImageCopyFeaturesEXT);
556         }
557         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT: {
558             return sizeof(VkPhysicalDeviceHostImageCopyPropertiesEXT);
559         }
560         case VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT: {
561             return sizeof(VkSubresourceHostMemcpySizeEXT);
562         }
563         case VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT: {
564             return sizeof(VkHostImageCopyDevicePerformanceQueryEXT);
565         }
566 #endif
567 #ifdef VK_EXT_texel_buffer_alignment
568         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: {
569             return sizeof(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT);
570         }
571 #endif
572 #ifdef VK_EXT_device_memory_report
573         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT: {
574             return sizeof(VkPhysicalDeviceDeviceMemoryReportFeaturesEXT);
575         }
576         case VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT: {
577             return sizeof(VkDeviceDeviceMemoryReportCreateInfoEXT);
578         }
579 #endif
580 #ifdef VK_EXT_robustness2
581         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: {
582             return sizeof(VkPhysicalDeviceRobustness2FeaturesEXT);
583         }
584         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT: {
585             return sizeof(VkPhysicalDeviceRobustness2PropertiesEXT);
586         }
587 #endif
588 #ifdef VK_EXT_custom_border_color
589         case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT: {
590             return sizeof(VkSamplerCustomBorderColorCreateInfoEXT);
591         }
592         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT: {
593             return sizeof(VkPhysicalDeviceCustomBorderColorPropertiesEXT);
594         }
595         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: {
596             return sizeof(VkPhysicalDeviceCustomBorderColorFeaturesEXT);
597         }
598 #endif
599 #ifdef VK_EXT_graphics_pipeline_library
600         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: {
601             return sizeof(VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT);
602         }
603         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT: {
604             return sizeof(VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT);
605         }
606         case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT: {
607             return sizeof(VkGraphicsPipelineLibraryCreateInfoEXT);
608         }
609 #endif
610 #ifdef VK_EXT_ycbcr_2plane_444_formats
611         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: {
612             return sizeof(VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT);
613         }
614 #endif
615 #ifdef VK_EXT_image_compression_control
616         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT: {
617             return sizeof(VkPhysicalDeviceImageCompressionControlFeaturesEXT);
618         }
619         case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT: {
620             return sizeof(VkImageCompressionControlEXT);
621         }
622         case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT: {
623             return sizeof(VkImageCompressionPropertiesEXT);
624         }
625 #endif
626 #ifdef VK_EXT_4444_formats
627         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: {
628             return sizeof(VkPhysicalDevice4444FormatsFeaturesEXT);
629         }
630 #endif
631 #ifdef VK_EXT_primitive_topology_list_restart
632         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT: {
633             return sizeof(VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT);
634         }
635 #endif
636 #ifdef VK_EXT_extended_dynamic_state2
637         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT: {
638             return sizeof(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT);
639         }
640 #endif
641 #ifdef VK_EXT_color_write_enable
642         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: {
643             return sizeof(VkPhysicalDeviceColorWriteEnableFeaturesEXT);
644         }
645         case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT: {
646             return sizeof(VkPipelineColorWriteCreateInfoEXT);
647         }
648 #endif
649 #ifdef VK_GOOGLE_gfxstream
650         case VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE: {
651             return sizeof(VkImportColorBufferGOOGLE);
652         }
653         case VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE: {
654             return sizeof(VkImportBufferGOOGLE);
655         }
656         case VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE: {
657             return sizeof(VkCreateBlobGOOGLE);
658         }
659 #endif
660 #ifdef VK_EXT_image_compression_control_swapchain
661         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT: {
662             return sizeof(VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT);
663         }
664 #endif
665         default: {
666             return (size_t)0;
667         }
668     }
669 }
670 
goldfish_vk_extension_struct_size_with_stream_features(uint32_t streamFeatures,VkStructureType rootType,const void * structExtension)671 size_t goldfish_vk_extension_struct_size_with_stream_features(uint32_t streamFeatures,
672                                                               VkStructureType rootType,
673                                                               const void* structExtension) {
674     if (!structExtension) {
675         return (size_t)0;
676     }
677     uint32_t structType = (uint32_t)goldfish_vk_struct_type(structExtension);
678     switch (structType) {
679 #ifdef VK_VERSION_1_0
680         case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO: {
681             return sizeof(VkShaderModuleCreateInfo);
682         }
683         case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO: {
684             return sizeof(VkPipelineLayoutCreateInfo);
685         }
686 #endif
687 #ifdef VK_VERSION_1_1
688         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES: {
689             return sizeof(VkPhysicalDeviceSubgroupProperties);
690         }
691         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: {
692             return sizeof(VkPhysicalDevice16BitStorageFeatures);
693         }
694         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS: {
695             return sizeof(VkMemoryDedicatedRequirements);
696         }
697         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO: {
698             return sizeof(VkMemoryDedicatedAllocateInfo);
699         }
700         case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO: {
701             return sizeof(VkMemoryAllocateFlagsInfo);
702         }
703         case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO: {
704             return sizeof(VkDeviceGroupRenderPassBeginInfo);
705         }
706         case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO: {
707             return sizeof(VkDeviceGroupCommandBufferBeginInfo);
708         }
709         case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO: {
710             return sizeof(VkDeviceGroupSubmitInfo);
711         }
712         case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO: {
713             return sizeof(VkDeviceGroupBindSparseInfo);
714         }
715         case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO: {
716             return sizeof(VkBindBufferMemoryDeviceGroupInfo);
717         }
718         case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO: {
719             return sizeof(VkBindImageMemoryDeviceGroupInfo);
720         }
721         case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO: {
722             return sizeof(VkDeviceGroupDeviceCreateInfo);
723         }
724         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
725             return sizeof(VkPhysicalDeviceFeatures2);
726         }
727         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: {
728             return sizeof(VkPhysicalDevicePointClippingProperties);
729         }
730         case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO: {
731             return sizeof(VkRenderPassInputAttachmentAspectCreateInfo);
732         }
733         case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO: {
734             return sizeof(VkImageViewUsageCreateInfo);
735         }
736         case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO: {
737             return sizeof(VkPipelineTessellationDomainOriginStateCreateInfo);
738         }
739         case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO: {
740             return sizeof(VkRenderPassMultiviewCreateInfo);
741         }
742         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: {
743             return sizeof(VkPhysicalDeviceMultiviewFeatures);
744         }
745         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES: {
746             return sizeof(VkPhysicalDeviceMultiviewProperties);
747         }
748         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: {
749             return sizeof(VkPhysicalDeviceVariablePointersFeatures);
750         }
751         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: {
752             return sizeof(VkPhysicalDeviceProtectedMemoryFeatures);
753         }
754         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES: {
755             return sizeof(VkPhysicalDeviceProtectedMemoryProperties);
756         }
757         case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO: {
758             return sizeof(VkProtectedSubmitInfo);
759         }
760         case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: {
761             return sizeof(VkSamplerYcbcrConversionInfo);
762         }
763         case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO: {
764             return sizeof(VkBindImagePlaneMemoryInfo);
765         }
766         case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO: {
767             return sizeof(VkImagePlaneMemoryRequirementsInfo);
768         }
769         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: {
770             return sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures);
771         }
772         case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES: {
773             return sizeof(VkSamplerYcbcrConversionImageFormatProperties);
774         }
775         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO: {
776             return sizeof(VkPhysicalDeviceExternalImageFormatInfo);
777         }
778         case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES: {
779             return sizeof(VkExternalImageFormatProperties);
780         }
781         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES: {
782             return sizeof(VkPhysicalDeviceIDProperties);
783         }
784         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO: {
785             return sizeof(VkExternalMemoryImageCreateInfo);
786         }
787         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO: {
788             return sizeof(VkExternalMemoryBufferCreateInfo);
789         }
790         case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO: {
791             return sizeof(VkExportMemoryAllocateInfo);
792         }
793         case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO: {
794             return sizeof(VkExportFenceCreateInfo);
795         }
796         case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO: {
797             return sizeof(VkExportSemaphoreCreateInfo);
798         }
799         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: {
800             return sizeof(VkPhysicalDeviceMaintenance3Properties);
801         }
802         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: {
803             return sizeof(VkPhysicalDeviceShaderDrawParametersFeatures);
804         }
805 #endif
806 #ifdef VK_VERSION_1_2
807         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: {
808             return sizeof(VkPhysicalDeviceVulkan11Features);
809         }
810         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES: {
811             return sizeof(VkPhysicalDeviceVulkan11Properties);
812         }
813         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: {
814             return sizeof(VkPhysicalDeviceVulkan12Features);
815         }
816         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES: {
817             return sizeof(VkPhysicalDeviceVulkan12Properties);
818         }
819         case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO: {
820             return sizeof(VkImageFormatListCreateInfo);
821         }
822         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: {
823             return sizeof(VkPhysicalDevice8BitStorageFeatures);
824         }
825         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: {
826             return sizeof(VkPhysicalDeviceDriverProperties);
827         }
828         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES: {
829             return sizeof(VkPhysicalDeviceShaderAtomicInt64Features);
830         }
831         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: {
832             if (streamFeatures & VULKAN_STREAM_FEATURE_SHADER_FLOAT16_INT8_BIT) {
833                 return sizeof(VkPhysicalDeviceShaderFloat16Int8Features);
834             } else {
835                 return 0;
836             }
837         }
838         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES: {
839             return sizeof(VkPhysicalDeviceFloatControlsProperties);
840         }
841         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO: {
842             return sizeof(VkDescriptorSetLayoutBindingFlagsCreateInfo);
843         }
844         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES: {
845             return sizeof(VkPhysicalDeviceDescriptorIndexingFeatures);
846         }
847         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES: {
848             return sizeof(VkPhysicalDeviceDescriptorIndexingProperties);
849         }
850         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO: {
851             return sizeof(VkDescriptorSetVariableDescriptorCountAllocateInfo);
852         }
853         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT: {
854             return sizeof(VkDescriptorSetVariableDescriptorCountLayoutSupport);
855         }
856         case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE: {
857             return sizeof(VkSubpassDescriptionDepthStencilResolve);
858         }
859         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES: {
860             return sizeof(VkPhysicalDeviceDepthStencilResolveProperties);
861         }
862         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES: {
863             return sizeof(VkPhysicalDeviceScalarBlockLayoutFeatures);
864         }
865         case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO: {
866             return sizeof(VkImageStencilUsageCreateInfo);
867         }
868         case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO: {
869             return sizeof(VkSamplerReductionModeCreateInfo);
870         }
871         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES: {
872             return sizeof(VkPhysicalDeviceSamplerFilterMinmaxProperties);
873         }
874         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: {
875             return sizeof(VkPhysicalDeviceVulkanMemoryModelFeatures);
876         }
877         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES: {
878             return sizeof(VkPhysicalDeviceImagelessFramebufferFeatures);
879         }
880         case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO: {
881             return sizeof(VkFramebufferAttachmentsCreateInfo);
882         }
883         case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO: {
884             return sizeof(VkRenderPassAttachmentBeginInfo);
885         }
886         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES: {
887             return sizeof(VkPhysicalDeviceUniformBufferStandardLayoutFeatures);
888         }
889         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES: {
890             return sizeof(VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures);
891         }
892         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: {
893             return sizeof(VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures);
894         }
895         case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT: {
896             return sizeof(VkAttachmentReferenceStencilLayout);
897         }
898         case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT: {
899             return sizeof(VkAttachmentDescriptionStencilLayout);
900         }
901         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES: {
902             return sizeof(VkPhysicalDeviceHostQueryResetFeatures);
903         }
904         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES: {
905             return sizeof(VkPhysicalDeviceTimelineSemaphoreFeatures);
906         }
907         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES: {
908             return sizeof(VkPhysicalDeviceTimelineSemaphoreProperties);
909         }
910         case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO: {
911             return sizeof(VkSemaphoreTypeCreateInfo);
912         }
913         case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO: {
914             return sizeof(VkTimelineSemaphoreSubmitInfo);
915         }
916         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES: {
917             return sizeof(VkPhysicalDeviceBufferDeviceAddressFeatures);
918         }
919         case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO: {
920             return sizeof(VkBufferOpaqueCaptureAddressCreateInfo);
921         }
922         case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO: {
923             return sizeof(VkMemoryOpaqueCaptureAddressAllocateInfo);
924         }
925 #endif
926 #ifdef VK_VERSION_1_3
927         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES: {
928             return sizeof(VkPhysicalDeviceVulkan13Features);
929         }
930         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES: {
931             return sizeof(VkPhysicalDeviceVulkan13Properties);
932         }
933         case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: {
934             return sizeof(VkPipelineCreationFeedbackCreateInfo);
935         }
936         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES: {
937             return sizeof(VkPhysicalDeviceShaderTerminateInvocationFeatures);
938         }
939         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES: {
940             return sizeof(VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures);
941         }
942         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES: {
943             return sizeof(VkPhysicalDevicePrivateDataFeatures);
944         }
945         case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO: {
946             return sizeof(VkDevicePrivateDataCreateInfo);
947         }
948         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES: {
949             return sizeof(VkPhysicalDevicePipelineCreationCacheControlFeatures);
950         }
951         case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2: {
952             return sizeof(VkMemoryBarrier2);
953         }
954         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: {
955             return sizeof(VkPhysicalDeviceSynchronization2Features);
956         }
957         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES: {
958             return sizeof(VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures);
959         }
960         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES: {
961             return sizeof(VkPhysicalDeviceImageRobustnessFeatures);
962         }
963         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES: {
964             return sizeof(VkPhysicalDeviceSubgroupSizeControlFeatures);
965         }
966         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES: {
967             return sizeof(VkPhysicalDeviceSubgroupSizeControlProperties);
968         }
969         case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO: {
970             return sizeof(VkPipelineShaderStageRequiredSubgroupSizeCreateInfo);
971         }
972         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES: {
973             return sizeof(VkPhysicalDeviceInlineUniformBlockFeatures);
974         }
975         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES: {
976             return sizeof(VkPhysicalDeviceInlineUniformBlockProperties);
977         }
978         case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK: {
979             return sizeof(VkWriteDescriptorSetInlineUniformBlock);
980         }
981         case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO: {
982             return sizeof(VkDescriptorPoolInlineUniformBlockCreateInfo);
983         }
984         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES: {
985             return sizeof(VkPhysicalDeviceTextureCompressionASTCHDRFeatures);
986         }
987         case VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO: {
988             return sizeof(VkPipelineRenderingCreateInfo);
989         }
990         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES: {
991             return sizeof(VkPhysicalDeviceDynamicRenderingFeatures);
992         }
993         case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO: {
994             return sizeof(VkCommandBufferInheritanceRenderingInfo);
995         }
996         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES: {
997             return sizeof(VkPhysicalDeviceShaderIntegerDotProductFeatures);
998         }
999         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES: {
1000             return sizeof(VkPhysicalDeviceShaderIntegerDotProductProperties);
1001         }
1002         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES: {
1003             return sizeof(VkPhysicalDeviceTexelBufferAlignmentProperties);
1004         }
1005         case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3: {
1006             return sizeof(VkFormatProperties3);
1007         }
1008         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES: {
1009             return sizeof(VkPhysicalDeviceMaintenance4Features);
1010         }
1011         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES: {
1012             return sizeof(VkPhysicalDeviceMaintenance4Properties);
1013         }
1014 #endif
1015 #ifdef VK_KHR_dynamic_rendering
1016         case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR: {
1017             return sizeof(VkRenderingFragmentShadingRateAttachmentInfoKHR);
1018         }
1019         case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT: {
1020             return sizeof(VkRenderingFragmentDensityMapAttachmentInfoEXT);
1021         }
1022         case VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD: {
1023             return sizeof(VkAttachmentSampleCountInfoAMD);
1024         }
1025         case VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX: {
1026             return sizeof(VkMultiviewPerViewAttributesInfoNVX);
1027         }
1028 #endif
1029 #ifdef VK_KHR_incremental_present
1030         case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR: {
1031             return sizeof(VkPresentRegionsKHR);
1032         }
1033 #endif
1034 #ifdef VK_KHR_pipeline_executable_properties
1035         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: {
1036             return sizeof(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR);
1037         }
1038 #endif
1039 #ifdef VK_KHR_synchronization2
1040         case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV: {
1041             return sizeof(VkQueueFamilyCheckpointProperties2NV);
1042         }
1043 #endif
1044 #ifdef VK_KHR_maintenance5
1045         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR: {
1046             return sizeof(VkPhysicalDeviceMaintenance5FeaturesKHR);
1047         }
1048         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR: {
1049             return sizeof(VkPhysicalDeviceMaintenance5PropertiesKHR);
1050         }
1051         case VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR: {
1052             return sizeof(VkPipelineCreateFlags2CreateInfoKHR);
1053         }
1054         case VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR: {
1055             return sizeof(VkBufferUsageFlags2CreateInfoKHR);
1056         }
1057 #endif
1058 #ifdef VK_KHR_line_rasterization
1059         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR: {
1060             return sizeof(VkPhysicalDeviceLineRasterizationFeaturesKHR);
1061         }
1062         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR: {
1063             return sizeof(VkPhysicalDeviceLineRasterizationPropertiesKHR);
1064         }
1065         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR: {
1066             return sizeof(VkPipelineRasterizationLineStateCreateInfoKHR);
1067         }
1068 #endif
1069 #ifdef VK_ANDROID_native_buffer
1070         case VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID: {
1071             return sizeof(VkNativeBufferANDROID);
1072         }
1073 #endif
1074 #ifdef VK_EXT_transform_feedback
1075         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: {
1076             return sizeof(VkPhysicalDeviceTransformFeedbackFeaturesEXT);
1077         }
1078         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT: {
1079             return sizeof(VkPhysicalDeviceTransformFeedbackPropertiesEXT);
1080         }
1081         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: {
1082             return sizeof(VkPipelineRasterizationStateStreamCreateInfoEXT);
1083         }
1084 #endif
1085 #ifdef VK_EXT_depth_clip_enable
1086         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: {
1087             return sizeof(VkPhysicalDeviceDepthClipEnableFeaturesEXT);
1088         }
1089         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: {
1090             return sizeof(VkPipelineRasterizationDepthClipStateCreateInfoEXT);
1091         }
1092 #endif
1093 #ifdef VK_EXT_image_drm_format_modifier
1094         case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT: {
1095             return sizeof(VkDrmFormatModifierPropertiesListEXT);
1096         }
1097         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT: {
1098             return sizeof(VkPhysicalDeviceImageDrmFormatModifierInfoEXT);
1099         }
1100         case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT: {
1101             return sizeof(VkImageDrmFormatModifierListCreateInfoEXT);
1102         }
1103         case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT: {
1104             return sizeof(VkImageDrmFormatModifierExplicitCreateInfoEXT);
1105         }
1106         case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT: {
1107             return sizeof(VkDrmFormatModifierPropertiesList2EXT);
1108         }
1109 #endif
1110 #ifdef VK_EXT_vertex_attribute_divisor
1111         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: {
1112             return sizeof(VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT);
1113         }
1114 #endif
1115 #ifdef VK_EXT_fragment_density_map
1116         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
1117             switch (rootType) {
1118                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
1119                     return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
1120                     break;
1121                 }
1122                 case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: {
1123                     return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
1124                     break;
1125                 }
1126                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
1127                     return sizeof(VkImportColorBufferGOOGLE);
1128                     break;
1129                 }
1130                 default: {
1131                     return sizeof(VkPhysicalDeviceFragmentDensityMapFeaturesEXT);
1132                     break;
1133                 }
1134             }
1135         }
1136         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
1137             switch (rootType) {
1138                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: {
1139                     return sizeof(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
1140                     break;
1141                 }
1142                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
1143                     return sizeof(VkCreateBlobGOOGLE);
1144                     break;
1145                 }
1146                 default: {
1147                     return sizeof(VkPhysicalDeviceFragmentDensityMapPropertiesEXT);
1148                     break;
1149                 }
1150             }
1151         }
1152         case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
1153             switch (rootType) {
1154                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: {
1155                     return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
1156                     break;
1157                 }
1158                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: {
1159                     return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
1160                     break;
1161                 }
1162                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: {
1163                     return sizeof(VkImportBufferGOOGLE);
1164                     break;
1165                 }
1166                 default: {
1167                     return sizeof(VkRenderPassFragmentDensityMapCreateInfoEXT);
1168                     break;
1169                 }
1170             }
1171         }
1172 #endif
1173 #ifdef VK_EXT_provoking_vertex
1174         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: {
1175             return sizeof(VkPhysicalDeviceProvokingVertexFeaturesEXT);
1176         }
1177         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT: {
1178             return sizeof(VkPhysicalDeviceProvokingVertexPropertiesEXT);
1179         }
1180         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT: {
1181             return sizeof(VkPipelineRasterizationProvokingVertexStateCreateInfoEXT);
1182         }
1183 #endif
1184 #ifdef VK_EXT_extended_dynamic_state
1185         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: {
1186             return sizeof(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT);
1187         }
1188 #endif
1189 #ifdef VK_EXT_host_image_copy
1190         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT: {
1191             return sizeof(VkPhysicalDeviceHostImageCopyFeaturesEXT);
1192         }
1193         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT: {
1194             return sizeof(VkPhysicalDeviceHostImageCopyPropertiesEXT);
1195         }
1196         case VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT: {
1197             return sizeof(VkSubresourceHostMemcpySizeEXT);
1198         }
1199         case VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT: {
1200             return sizeof(VkHostImageCopyDevicePerformanceQueryEXT);
1201         }
1202 #endif
1203 #ifdef VK_EXT_texel_buffer_alignment
1204         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: {
1205             return sizeof(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT);
1206         }
1207 #endif
1208 #ifdef VK_EXT_device_memory_report
1209         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT: {
1210             return sizeof(VkPhysicalDeviceDeviceMemoryReportFeaturesEXT);
1211         }
1212         case VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT: {
1213             return sizeof(VkDeviceDeviceMemoryReportCreateInfoEXT);
1214         }
1215 #endif
1216 #ifdef VK_EXT_robustness2
1217         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: {
1218             return sizeof(VkPhysicalDeviceRobustness2FeaturesEXT);
1219         }
1220         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT: {
1221             return sizeof(VkPhysicalDeviceRobustness2PropertiesEXT);
1222         }
1223 #endif
1224 #ifdef VK_EXT_custom_border_color
1225         case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT: {
1226             return sizeof(VkSamplerCustomBorderColorCreateInfoEXT);
1227         }
1228         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT: {
1229             return sizeof(VkPhysicalDeviceCustomBorderColorPropertiesEXT);
1230         }
1231         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: {
1232             return sizeof(VkPhysicalDeviceCustomBorderColorFeaturesEXT);
1233         }
1234 #endif
1235 #ifdef VK_EXT_graphics_pipeline_library
1236         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: {
1237             return sizeof(VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT);
1238         }
1239         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT: {
1240             return sizeof(VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT);
1241         }
1242         case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT: {
1243             return sizeof(VkGraphicsPipelineLibraryCreateInfoEXT);
1244         }
1245 #endif
1246 #ifdef VK_EXT_ycbcr_2plane_444_formats
1247         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: {
1248             return sizeof(VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT);
1249         }
1250 #endif
1251 #ifdef VK_EXT_image_compression_control
1252         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT: {
1253             return sizeof(VkPhysicalDeviceImageCompressionControlFeaturesEXT);
1254         }
1255         case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT: {
1256             return sizeof(VkImageCompressionControlEXT);
1257         }
1258         case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT: {
1259             return sizeof(VkImageCompressionPropertiesEXT);
1260         }
1261 #endif
1262 #ifdef VK_EXT_4444_formats
1263         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: {
1264             return sizeof(VkPhysicalDevice4444FormatsFeaturesEXT);
1265         }
1266 #endif
1267 #ifdef VK_EXT_primitive_topology_list_restart
1268         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT: {
1269             return sizeof(VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT);
1270         }
1271 #endif
1272 #ifdef VK_EXT_extended_dynamic_state2
1273         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT: {
1274             return sizeof(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT);
1275         }
1276 #endif
1277 #ifdef VK_EXT_color_write_enable
1278         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: {
1279             return sizeof(VkPhysicalDeviceColorWriteEnableFeaturesEXT);
1280         }
1281         case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT: {
1282             return sizeof(VkPipelineColorWriteCreateInfoEXT);
1283         }
1284 #endif
1285 #ifdef VK_GOOGLE_gfxstream
1286         case VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE: {
1287             return sizeof(VkImportColorBufferGOOGLE);
1288         }
1289         case VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE: {
1290             return sizeof(VkImportBufferGOOGLE);
1291         }
1292         case VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE: {
1293             return sizeof(VkCreateBlobGOOGLE);
1294         }
1295 #endif
1296 #ifdef VK_EXT_image_compression_control_swapchain
1297         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT: {
1298             return sizeof(VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT);
1299         }
1300 #endif
1301         default: {
1302             return (size_t)0;
1303         }
1304     }
1305 }
1306 
1307 }  // namespace vk
1308 }  // namespace gfxstream
1309